diff --git a/tests/pico-hsm/test_022_key_exchange.py b/tests/pico-hsm/test_022_key_exchange.py index bc74543..707314d 100644 --- a/tests/pico-hsm/test_022_key_exchange.py +++ b/tests/pico-hsm/test_022_key_exchange.py @@ -20,7 +20,7 @@ import pytest import hashlib from picohsm import DOPrefixes -from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric import ec, x25519, x448 from picohsm.const import DEFAULT_RETRIES, DEFAULT_DKEK_SHARES from const import DEFAULT_DKEK @@ -51,3 +51,24 @@ def test_exchange_ecc(device, curve): device.delete_file(DOPrefixes.KEY_PREFIX, keyid) device.delete_file(DOPrefixes.EE_CERTIFICATE_PREFIX, keyid) + +@pytest.mark.parametrize( + "curve", [x25519.X25519PrivateKey, x448.X448PrivateKey] +) +def test_exchange_montgomery(device, curve): + pkeyA = curve.generate() + pbkeyA = pkeyA.public_key() + keyid = device.import_key(pkeyA) + pkeyB = curve.generate() + pbkeyB = pkeyB.public_key() + + sharedB = pkeyB.exchange(pbkeyA) + sharedA = device.exchange(keyid, pbkeyB) + + assert(sharedA == sharedB) + + sharedAA = pkeyA.exchange(pbkeyB) + assert(sharedA == sharedAA) + + device.delete_file(DOPrefixes.KEY_PREFIX, keyid) + device.delete_file(DOPrefixes.EE_CERTIFICATE_PREFIX, keyid)