blob: 3eb2649916c707650a325b79ba412573a91c49e6 [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.cros import cryptohome
class platform_Attestation(test.test):
version = 1
def enroll(self):
utils.system(cryptohome.CRYPTOHOME_CMD +
' --action=tpm_attestation_start_enroll' +
' --file=/tmp/__attestation_enroll_request')
utils.system('curl' +
' --data-binary "@/tmp/__attestation_enroll_request"' +
' -o "/tmp/__attestation_enroll_response"' +
' -H "Content-Type: application/octet-stream"' +
' https://chromeos-ca.gstatic.com/enroll')
utils.system(cryptohome.CRYPTOHOME_CMD +
' --action=tpm_attestation_finish_enroll' +
' --file=/tmp/__attestation_enroll_response')
def cert_request(self):
utils.system(cryptohome.CRYPTOHOME_CMD +
' --action=tpm_attestation_start_cert_request' +
' --file=/tmp/__attestation_cert_request')
utils.system('curl --data-binary "@/tmp/__attestation_cert_request"' +
' -o "/tmp/__attestation_cert_response"' +
' -H "Content-Type: application/octet-stream"' +
' https://chromeos-ca.gstatic.com/sign')
utils.system(cryptohome.CRYPTOHOME_CMD +
' --action=tpm_attestation_finish_cert_request' +
' --file=/tmp/__attestation_cert_response' +
' --name=attest-ent-machine')
def run_once(self):
status = cryptohome.get_tpm_attestation_status()
if (not status['Prepared']):
raise error.TestFail('Attestation enrollment is not possible.')
self.enroll()
status = cryptohome.get_tpm_attestation_status()
if (not status['Enrolled']):
raise error.TestFail('Attestation not successfully enrolled.')
self.cert_request()