43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
# Copyright (c) 2011 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
|
|
from autotest_lib.client.bin import test, utils
|
|
from autotest_lib.client.common_lib import error
|
|
|
|
class hardware_TPMLoadKey(test.test):
|
|
|
|
# This test determines the TPM can execute a TPM LoadKey function
|
|
#
|
|
# The test sequence follows the steps below:
|
|
# 1. Create a local file containing a text file to be "sealed"
|
|
# 2. Execute the TPM Tools command for tpm_sealdata
|
|
# 3. Parse response of tpm_sealdata for LoadKey function execution
|
|
# 4. Test passes if LoadKey reports success.
|
|
#
|
|
|
|
version = 1
|
|
|
|
# Runs a command, logs the output, and returns the exit status.
|
|
def __run_cmd(self, cmd):
|
|
result = utils.system_output(cmd, retain_output=True,
|
|
ignore_status=False)
|
|
logging.info(result)
|
|
return result
|
|
|
|
def run_once(self):
|
|
# Create the test input file
|
|
create_input_file_cmd = "echo 'This is a test' > in.dat"
|
|
output = self.__run_cmd(create_input_file_cmd)
|
|
|
|
# Execute the TPM Tools command for sealdata, causing a LoadKey
|
|
# event, and filter for a debug message indicating success
|
|
seal_data_cmd = \
|
|
"tpm_sealdata -i in.dat -o out.dat -z -l debug 2>&1 | grep LoadKey"
|
|
output = self.__run_cmd(seal_data_cmd)
|
|
|
|
# Confirm the LoadKey message reports success
|
|
if (output.find("success") < 0):
|
|
raise error.TestError("LoadKey execution did not succeed")
|