| # Copyright (C) 2019 - 2022 Armin Kuster <akuster808@gmail.com> |
| # |
| from oeqa.runtime.case import OERuntimeTestCase |
| from oeqa.core.decorator.depends import OETestDepends |
| from oeqa.runtime.decorator.package import OEHasPackage |
| from oeqa.core.decorator.data import skipIfNotFeature |
| |
| class Tpm2Test(OERuntimeTestCase): |
| @classmethod |
| def setUpClass(cls): |
| cls.tc.target.run('mkdir /tmp/myvtpm2') |
| |
| @classmethod |
| def tearDownClass(cls): |
| cls.tc.target.run('rm -fr /tmp/myvtpm2') |
| |
| def check_endlines(self, results, expected_endlines): |
| for line in results.splitlines(): |
| for el in expected_endlines: |
| if line == el: |
| expected_endlines.remove(el) |
| break |
| |
| if expected_endlines: |
| self.fail('Missing expected line endings:\n %s' % '\n '.join(expected_endlines)) |
| |
| @OEHasPackage(['tpm2-tools']) |
| @OEHasPackage(['tpm2-abrmd']) |
| @OEHasPackage(['swtpm']) |
| @skipIfNotFeature('tpm2','Test tpm2_startup requires tpm2 to be in DISTRO_FEATURES') |
| @OETestDepends(['ssh.SSHTest.test_ssh']) |
| def test_tpm2_startup(self): |
| cmds = [ |
| 'swtpm socket -d --tpmstate dir=/tmp/myvtpm2 --tpm2 --ctrl type=tcp,port=2322 --server type=tcp,port=2321 --flags not-need-init', |
| 'tpm2_startup -c -T "swtpm:port=2321"', |
| ] |
| |
| for cmd in cmds: |
| status, output = self.target.run(cmd) |
| self.assertEqual(status, 0, msg='\n'.join([cmd, output])) |
| |
| @OETestDepends(['tpm2.Tpm2Test.test_tpm2_startup']) |
| def test_tpm2_pcrread(self): |
| (status, output) = self.target.run('tpm2_pcrread') |
| expected_endlines = [] |
| expected_endlines.append(' sha1:') |
| expected_endlines.append(' 0 : 0x0000000000000000000000000000000000000000') |
| expected_endlines.append(' 1 : 0x0000000000000000000000000000000000000000') |
| expected_endlines.append(' sha256:') |
| expected_endlines.append(' 0 : 0x0000000000000000000000000000000000000000000000000000000000000000') |
| expected_endlines.append(' 1 : 0x0000000000000000000000000000000000000000000000000000000000000000') |
| |
| |
| self.check_endlines(output, expected_endlines) |
| |
| |
| @OEHasPackage(['p11-kit']) |
| @OEHasPackage(['tpm2-pkcs11']) |
| @OETestDepends(['tpm2.Tpm2Test.test_tpm2_pcrread']) |
| def test_tpm2_pkcs11(self): |
| (status, output) = self.target.run('p11-kit list-modules -v') |
| self.assertEqual(status, 0, msg="Modules missing: %s" % output) |
| |
| @OETestDepends(['tpm2.Tpm2Test.test_tpm2_pkcs11']) |
| def test_tpm2_swtpm_reset(self): |
| (status, output) = self.target.run('swtpm_ioctl -i --tcp :2322') |
| self.assertEqual(status, 0, msg="swtpm reset failed: %s" % output) |