• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5from autotest_lib.client.bin import test, utils
6from autotest_lib.client.common_lib import error
7from autotest_lib.client.cros import cryptohome
8
9
10class platform_Attestation(test.test):
11    version = 1
12
13    def enroll(self):
14        utils.system(cryptohome.CRYPTOHOME_CMD +
15                     ' --action=tpm_attestation_start_enroll' +
16                     ' --file=/tmp/__attestation_enroll_request')
17        utils.system('curl' +
18                     ' --data-binary "@/tmp/__attestation_enroll_request"' +
19                     ' -o "/tmp/__attestation_enroll_response"' +
20                     ' -H "Content-Type: application/octet-stream"' +
21                     ' https://chromeos-ca.gstatic.com/enroll')
22        utils.system(cryptohome.CRYPTOHOME_CMD +
23                     ' --action=tpm_attestation_finish_enroll' +
24                     ' --file=/tmp/__attestation_enroll_response')
25
26    def cert_request(self):
27        utils.system(cryptohome.CRYPTOHOME_CMD +
28                     ' --action=tpm_attestation_start_cert_request' +
29                     ' --file=/tmp/__attestation_cert_request')
30        utils.system('curl --data-binary "@/tmp/__attestation_cert_request"' +
31                     ' -o "/tmp/__attestation_cert_response"' +
32                     ' -H "Content-Type: application/octet-stream"' +
33                     ' https://chromeos-ca.gstatic.com/sign')
34        utils.system(cryptohome.CRYPTOHOME_CMD +
35                     ' --action=tpm_attestation_finish_cert_request' +
36                     ' --file=/tmp/__attestation_cert_response' +
37                     ' --name=attest-ent-machine')
38
39    def run_once(self):
40        status = cryptohome.get_tpm_attestation_status()
41        if (not status['Prepared']):
42            raise error.TestFail('Attestation enrollment is not possible.')
43        self.enroll()
44        status = cryptohome.get_tpm_attestation_status()
45        if (not status['Enrolled']):
46            raise error.TestFail('Attestation not successfully enrolled.')
47        self.cert_request()
48