mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-24 02:05:01 +00:00
* Adjusted the path in VbootCrypto Makefile Change-Id: I2485c3940f4d3894694c3e834ed79b1b3f58d4bc BUG= TEST= Review URL: http://codereview.chromium.org/3335018
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
# Copyright (c) 2010 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.
|
|
|
|
import logging, os, re, sys, shutil
|
|
from autotest_lib.client.bin import test, utils
|
|
|
|
class hardware_TPMFirmware(test.test):
|
|
"""
|
|
Test of TPM functionality needed in firmware (client side of the test).
|
|
See also server/site_tests/hardware_TPMFirmwareServer.
|
|
"""
|
|
version = 1
|
|
preserve_srcdir = True
|
|
|
|
# Cross-compiles TLCL test suite and other needed code.
|
|
# TODO(semenzato): tpm_takeownership is currently available by making
|
|
# tpm-tools an RDEPEND in the autotest ebuild. See that file for a
|
|
# better way.
|
|
def setup(self):
|
|
sysroot = os.environ['SYSROOT']
|
|
bin_path = os.path.join(sysroot, 'usr/sbin/tpm_takeownership')
|
|
shutil.copy(bin_path, self.bindir)
|
|
utils.make('-C %s' % self.srcdir)
|
|
|
|
|
|
# Runs a command, logs the output, and returns the exit status.
|
|
def tpm_run(self, cmd, ignore_status=False):
|
|
output = utils.run(cmd, ignore_status=ignore_status)
|
|
logging.info(output)
|
|
self.job.set_state("client_status", output.exit_status)
|
|
|
|
|
|
# Sets up the system (if it isn't already) to run the tpm binaries. This
|
|
# is mostly needed after a reboot. We don't rely on the system booting in
|
|
# any particular state.
|
|
def tpm_setup(self, with_tcsd=False):
|
|
utils.run('mknod /dev/tpm c 10 224', ignore_status=True)
|
|
utils.run('mknod /dev/tpm0 c 10 224', ignore_status=True)
|
|
utils.run('modprobe tpm_tis force=1 interrupts=0', ignore_status=True)
|
|
|
|
if (with_tcsd):
|
|
utils.run('/usr/sbin/tcsd')
|
|
else:
|
|
# It will be a problem if upstart automatically restarts tcsd.
|
|
utils.run('pkill tcsd', ignore_status=True)
|
|
|
|
|
|
def run_once(self, subtest='None'):
|
|
logging.info("Running TPM firmware client subtest %s", subtest)
|
|
if (subtest == 'setup'):
|
|
self.tpm_setup()
|
|
self.tpm_write_status(0)
|
|
elif (subtest == 'takeownership'):
|
|
self.tpm_setup(with_tcsd=True)
|
|
own_cmd = os.path.join(self.bindir, "tpm_takeownership -y -z")
|
|
self.tpm_run(own_cmd)
|
|
else:
|
|
self.tpm_setup()
|
|
cmd = os.path.join(self.srcdir, subtest)
|
|
self.tpm_run(cmd, ignore_status=True)
|