From 5c6af8332ae9309c16ffb70013b0173ca806e09f Mon Sep 17 00:00:00 2001 From: M1nd3r Date: Fri, 24 May 2024 17:32:04 +0200 Subject: [PATCH] test(core): add tests for device_secret and cred_auth_key_counter [no changelog] --- core/tests/test_storage.py | 47 +++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/core/tests/test_storage.py b/core/tests/test_storage.py index dfe14b6f2..062ed8f74 100644 --- a/core/tests/test_storage.py +++ b/core/tests/test_storage.py @@ -1,13 +1,15 @@ from common import * # isort:skip from storage import device -from trezor import config - +from trezor import config, utils class TestConfig(unittest.TestCase): - def test_counter(self): + + def setUp(self): config.init() config.wipe() + + def test_u2f_counter(self): for i in range(150): self.assertEqual(device.next_u2f_counter(), i) device.set_u2f_counter(350) @@ -16,6 +18,45 @@ class TestConfig(unittest.TestCase): device.set_u2f_counter(0) self.assertEqual(device.next_u2f_counter(), 1) + if utils.USE_THP: + + def test_cred_auth_key_counter(self): + rounds = 200 + for i in range(rounds): + self.assertEqual( + device.get_cred_auth_key_counter(), i.to_bytes(4, "big") + ) + device.increment_cred_auth_key_counter() + + # Test get_cred_auth_key_counter does not change the counter value + self.assertEqual( + device.get_cred_auth_key_counter(), rounds.to_bytes(4, "big") + ) + self.assertEqual( + device.get_cred_auth_key_counter(), rounds.to_bytes(4, "big") + ) + + def test_cred_auth_key_counter_overflow(self): + from storage import common + from storage.device import _NAMESPACE, _CRED_AUTH_KEY_COUNTER + + common.set(_NAMESPACE, _CRED_AUTH_KEY_COUNTER, b"\xff\xff\xff\xfe") + device.increment_cred_auth_key_counter() + self.assertEqual(device.get_cred_auth_key_counter(), b"\xff\xff\xff\xff") + with self.assertRaises(AssertionError) as e: + device.increment_cred_auth_key_counter() + self.assertEqual(e.value.value, "Overflow of cred_auth_key_counter") + + def test_device_secret(self): + secret1 = device.get_device_secret() + self.assertEqual(len(secret1), 16) + secret2 = device.get_device_secret() + self.assertEqual(secret1, secret2) + config.wipe() + secret3 = device.get_device_secret() + self.assertEqual(len(secret3), 16) + self.assertNotEqual(secret1, secret3) + if __name__ == "__main__": unittest.main()