From 39ebea55294aabaf613c65015cea87966cbf06fc Mon Sep 17 00:00:00 2001 From: Markus Meissner Date: Thu, 3 Jun 2021 17:45:04 +0200 Subject: [PATCH] revive fido2 list (#60) --- pynitrokey/cli/fido2.py | 21 +++++++++++++++------ pynitrokey/fido2/__init__.py | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/pynitrokey/cli/fido2.py b/pynitrokey/cli/fido2.py index f2570f07..4d6e8565 100644 --- a/pynitrokey/cli/fido2.py +++ b/pynitrokey/cli/fido2.py @@ -160,15 +160,24 @@ def rng(): @click.command() def list(): """List all 'Nitrokey FIDO2' devices""" - solos = nkfido2.find_all() + devs = nkfido2.find_all() local_print(":: 'Nitrokey FIDO2' keys") - for c in solos: - devdata = c.dev.descriptor - if "serial_number" in devdata: - local_print(f"{devdata['serial_number']}: {devdata['product_string']}") + for c in devs: + descr = c.dev.descriptor + + if hasattr(descr, "product_name"): + name = descr.product_name + elif c.is_solo_bootloader(): + name = "FIDO2 Bootloader device" else: - local_print(f"{devdata['path']}: {devdata['product_string']}") + name = "FIDO2 device" + if hasattr(descr, "serial_number"): + id_ = descr.serial_number + else: + id_ = descr.path + + local_print(f"{id_}: {name}") @click.command() @click.option("--count", default=8, help="How many bytes to generate (defaults to 8)") diff --git a/pynitrokey/fido2/__init__.py b/pynitrokey/fido2/__init__.py index 90374925..4811fa5b 100644 --- a/pynitrokey/fido2/__init__.py +++ b/pynitrokey/fido2/__init__.py @@ -54,7 +54,7 @@ def find_all(): hid_devices = list(CtapHidDevice.list_devices()) solo_devices = [d for d in hid_devices - if (d.descriptor["vendor_id"], d.descriptor["product_id"]) in [ + if (d.descriptor.vid, d.descriptor.pid) in [ ## @FIXME: move magic numbers (1155, 41674), (0x20A0, 0x42B3),