Skip to content

Commit

Permalink
test(core): add credential manager tests
Browse files Browse the repository at this point in the history
[no changelog]
  • Loading branch information
M1nd3r committed May 25, 2024
1 parent 01c137a commit ef94948
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions core/tests/test_trezor.wire.thp.credential_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from common import * # isort:skip

from trezor import config, utils
from trezor import log

if utils.USE_THP:
from trezor.wire.thp import credential_manager
from trezor.messages import ThpCredentialMetadata

def _issue_credential(host_name: str, host_static_pubkey: bytes) -> bytes:
metadata = ThpCredentialMetadata(host_name=host_name)
return credential_manager.issue_credential(host_static_pubkey, metadata)

def _dummy_log(name: str, msg: str, *args):
pass

log.debug = _dummy_log


@unittest.skipUnless(utils.USE_THP, "only needed for THP")
class TestTrezorHostProtocolCredentialManager(unittest.TestCase):
def setUp(self):
config.init()
config.wipe()

def test_derive_cred_auth_key(self):
key1 = credential_manager.derive_cred_auth_key()
key2 = credential_manager.derive_cred_auth_key()
self.assertEqual(len(key1), 32)
self.assertEqual(key1, key2)

def test_invalidate_cred_auth_key(self):
key1 = credential_manager.derive_cred_auth_key()
credential_manager.invalidate_cred_auth_key()
key2 = credential_manager.derive_cred_auth_key()
self.assertNotEqual(key1, key2)

def test_credentials(self):

DUMMY_KEY_1 = "\x00\x00"
DUMMY_KEY_2 = "\xff\xff"
cred_1 = _issue_credential("host_name", DUMMY_KEY_1)
cred_2 = _issue_credential("host_name", DUMMY_KEY_1)
self.assertEqual(cred_1, cred_2)
cred_3 = _issue_credential("different host_name", DUMMY_KEY_1)
self.assertNotEqual(cred_1, cred_3)

self.assertTrue(credential_manager.validate_credential(cred_1, DUMMY_KEY_1))
self.assertTrue(credential_manager.validate_credential(cred_3, DUMMY_KEY_1))
self.assertFalse(credential_manager.validate_credential(cred_1, DUMMY_KEY_2))

credential_manager.invalidate_cred_auth_key()
cred_4 = _issue_credential("host_name", DUMMY_KEY_1)
self.assertNotEqual(cred_1, cred_4)
self.assertFalse(credential_manager.validate_credential(cred_1, DUMMY_KEY_1))
self.assertFalse(credential_manager.validate_credential(cred_3, DUMMY_KEY_1))
self.assertTrue(credential_manager.validate_credential(cred_4, DUMMY_KEY_1))


if __name__ == "__main__":
unittest.main()

0 comments on commit ef94948

Please sign in to comment.