• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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