From 360b8eadaabf2d16f8e277ecca506c9342afe854 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sat, 10 Dec 2022 21:36:17 +0100 Subject: [PATCH] Add minimal test for minPinLength extension. Signed-off-by: Pol Henarejos --- tests/pico-fido/test_minpinlength.py | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/pico-fido/test_minpinlength.py diff --git a/tests/pico-fido/test_minpinlength.py b/tests/pico-fido/test_minpinlength.py new file mode 100644 index 0000000..57ea515 --- /dev/null +++ b/tests/pico-fido/test_minpinlength.py @@ -0,0 +1,34 @@ +import pytest +from fido2.ctap2.extensions import CredProtectExtension +from fido2.webauthn import UserVerificationRequirement +from fido2.ctap import CtapError +from fido2.ctap2.pin import PinProtocolV2, ClientPin +from fido2.ctap2 import Config + +PIN='12345678' +MINPINLENGTH=6 + +@pytest.fixture(scope="function") +def MCMinPin(device): + res = device.doMC(rk=True, extensions={'minPinLength': True})['res'].attestation_object + return res + +@pytest.fixture(scope="function") +def SetMinPin(device): + device.reset() + ClientPin(device.client()._backend.ctap2).set_pin(PIN) + cfg = FidoConfig(device) + cfg.set_min_pin_length(MINPINLENGTH,rp_ids=['example.com']) + +def PinToken(device): + return ClientPin(device.client()._backend.ctap2).get_pin_token(PIN, permissions=ClientPin.PERMISSION.MAKE_CREDENTIAL | ClientPin.PERMISSION.AUTHENTICATOR_CFG) + +def FidoConfig(device): + pt = PinToken(device) + pin_protocol = PinProtocolV2() + return Config(device.client()._backend.ctap2, pin_protocol, pt) + +def test_minpin(MCMinPin, SetMinPin): + assert MCMinPin.auth_data.extensions + assert "minPinLength" in MCMinPin.auth_data.extensions + assert MCMinPin.auth_data.extensions['minPinLength'] == MINPINLENGTH