From 1eabb0d0bf530944a39f86d20628fc9ae4abfb14 Mon Sep 17 00:00:00 2001 From: Markus Meissner Date: Tue, 19 Sep 2023 14:58:48 +0200 Subject: [PATCH] nk3 test/fido2: early exit if pin not set - fixes #411 --- pynitrokey/cli/nk3/test.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pynitrokey/cli/nk3/test.py b/pynitrokey/cli/nk3/test.py index f6b0bad3..1d912c0c 100644 --- a/pynitrokey/cli/nk3/test.py +++ b/pynitrokey/cli/nk3/test.py @@ -19,12 +19,14 @@ from pynitrokey.cli.exceptions import CliException from pynitrokey.fido2 import device_path_to_str +from pynitrokey.fido2.client import NKFido2Client from pynitrokey.helpers import local_print from pynitrokey.nk3.admin_app import AdminApp from pynitrokey.nk3.base import Nitrokey3Base from pynitrokey.nk3.device import Nitrokey3Device from pynitrokey.nk3.utils import Fido2Certs, Uuid, Version + logger = logging.getLogger(__name__) @@ -347,6 +349,15 @@ def run_tests(ctx: TestContext, device: Nitrokey3Base, selector: TestSelector) - if not test_cases: raise CliException("No test cases selected", support_hint=False) + assert(isinstance(device, Nitrokey3Device)) + + client = NKFido2Client() + client.find_device(device.device) + + if any("fido2" == tc.name for tc in test_cases) and client.has_pin() and not ctx.pin: + raise CliException("FIDO2 tests: Device requires pin, but not set", + support_hint=False) + results = [] local_print("")