mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-24 23:38:09 +00:00
core/tests: Test SLIP-0022 FIDO2 credential decode.
This commit is contained in:
parent
70fe14e84c
commit
5020ae9757
64
core/tests/test_apps.webauthn.credential.py
Normal file
64
core/tests/test_apps.webauthn.credential.py
Normal file
@ -0,0 +1,64 @@
|
||||
from common import *
|
||||
from apps.common import mnemonic, storage
|
||||
from apps.webauthn.credential import Fido2Credential
|
||||
from trezor.crypto.curve import nist256p1
|
||||
from trezor.crypto.hashlib import sha256
|
||||
|
||||
|
||||
class TestCredential(unittest.TestCase):
|
||||
def test_fido2_credential_decode(self):
|
||||
mnemonic_secret = b"all all all all all all all all all all all all"
|
||||
mnemonic.get = lambda: (mnemonic_secret, mnemonic.TYPE_BIP39)
|
||||
storage.is_initialized = lambda: True
|
||||
|
||||
cred_id = (
|
||||
b"f1d0020013e65c865634ad8abddf7a66df56ae7d8c3afd356f76426801508b2e"
|
||||
b"579bcb3496fe6396a6002e3cd6d80f6359dfa9961e24c544bfc2f26acec1b8d8"
|
||||
b"78ba56727e1f6a7b5176c607552aea63a5abe5d826d69fab3063edfa0201d9a5"
|
||||
b"1013d69eddb2eff37acdd5963f"
|
||||
)
|
||||
|
||||
rp_id = "example.com"
|
||||
rp_id_hash = sha256(rp_id).digest()
|
||||
|
||||
user_id = (
|
||||
b"3082019330820138a0030201023082019330820138a003020102308201933082"
|
||||
)
|
||||
|
||||
user_name = "johnpsmith@example.com"
|
||||
|
||||
creation_time = 2
|
||||
|
||||
public_key = (
|
||||
b"0451f0d4c307bc737c90ac605c6279f7d01e451798aa7b74df550fdb43a7760c"
|
||||
b"7c02b5107fef42094d00f52a9b1e90afb90e1b9decbf15a6f13d4f882de857e2"
|
||||
b"f4"
|
||||
)
|
||||
|
||||
cred_random = (
|
||||
b"36a9b5d71c13ed54594474b54073af1fb03ea91cd056588909dae43ae2f35dbf"
|
||||
)
|
||||
|
||||
# Load credential.
|
||||
cred = Fido2Credential.from_cred_id(unhexlify(cred_id), rp_id_hash)
|
||||
self.assertIsNotNone(cred)
|
||||
|
||||
# Check credential data.
|
||||
self.assertEqual(hexlify(cred.id), cred_id)
|
||||
self.assertEqual(cred.rp_id, rp_id)
|
||||
self.assertEqual(cred.rp_id_hash, rp_id_hash)
|
||||
self.assertEqual(hexlify(cred.user_id), user_id)
|
||||
self.assertEqual(cred.user_name, user_name)
|
||||
self.assertEqual(cred._creation_time, 2)
|
||||
self.assertTrue(cred.hmac_secret)
|
||||
self.assertIsNone(cred.rp_name)
|
||||
self.assertIsNone(cred.user_display_name)
|
||||
|
||||
# Check credential keys.
|
||||
self.assertEqual(hexlify(cred.hmac_secret_key()), cred_random)
|
||||
|
||||
cred_public_key = nist256p1.publickey(cred.private_key(), False)
|
||||
self.assertEqual(hexlify(cred_public_key), public_key)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in New Issue
Block a user