1# Use of this source code is governed by a BSD-style license that can be 2# found in the LICENSE file. 3 4import logging 5 6from autotest_lib.client.common_lib import error 7from autotest_lib.server import test 8 9class firmware_Cr50ShortECC(test.test): 10 """A test that verifies cr50 can handle short ECC keys.""" 11 12 version = 1 13 CMD_TRUNKS_CLIENT = 'trunks_client %s' 14 CMD_HELP = '--help' 15 CMD_SHORT_ECC_TEST = '--key_test_short_ecc' 16 KEY_BLOB = '/tmp/test.keyblob' 17 CMD_KEY_CREATE = '--key_create --ecc --usage=all --key_blob=' + KEY_BLOB 18 CMD_KEY_LOAD = '--key_load --key_blob=' + KEY_BLOB 19 20 def run_trunks_client_cmd(self, cmd): 21 """Run a trunks_client command on the DUT.""" 22 trunks_client_cmd = self.CMD_TRUNKS_CLIENT % cmd 23 logging.info('Running %r', trunks_client_cmd) 24 result = self.client.run(trunks_client_cmd).stdout 25 logging.info('stdout: %s', result) 26 return result 27 28 def run_once(self, host=None): 29 """Verify cr50 can handle short ECC keys.""" 30 self.client = host 31 32 if (self.CMD_SHORT_ECC_TEST not in 33 self.run_trunks_client_cmd(self.CMD_HELP)): 34 raise error.TestNAError('OS trunks_client does not support %r' % 35 self.CMD_SHORT_ECC_TEST) 36 37 self.run_trunks_client_cmd(self.CMD_KEY_CREATE) 38 39 load_result = self.run_trunks_client_cmd(self.CMD_KEY_LOAD) 40 handle = load_result.split('handle:')[-1].strip() 41 42 short_ecc_test_cmd = self.CMD_SHORT_ECC_TEST + ' --handle=' + handle 43 self.run_trunks_client_cmd(short_ecc_test_cmd) 44