From 53b08f4968b0ebde687c01295aa336128ad50c23 Mon Sep 17 00:00:00 2001 From: "Eric Siegel (Rocket Hazmat)" <409247+NTICompass@users.noreply.github.com> Date: Fri, 13 Mar 2020 13:05:08 -0400 Subject: [PATCH 1/3] Fix detecting KeepKey USB device The new KeepKey firmware uses WebUSB instead of HID --- libagent/device/keepkey_defs.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libagent/device/keepkey_defs.py b/libagent/device/keepkey_defs.py index 912dc28..5054dd6 100644 --- a/libagent/device/keepkey_defs.py +++ b/libagent/device/keepkey_defs.py @@ -6,9 +6,16 @@ from keepkeylib.client import CallException, PinException from keepkeylib.client import KeepKeyClient as Client from keepkeylib.messages_pb2 import PassphraseAck, PinMatrixAck from keepkeylib.transport_hid import HidTransport +from keepkeylib.transport_webusb import WebUsbTransport from keepkeylib.types_pb2 import IdentityType def find_device(): - """Returns first USB HID transport.""" - return next(HidTransport(p) for p in HidTransport.enumerate()) + """Returns first WebUSB or HID transport.""" + webusb = WebUsbTransport.enumerate() + hidusb = HidTransport.enumerate() + + if len(webusb): + return next(WebUsbTransport(p) for p in webusb) + elif len(hidusb): + return next(HidTransport(p) for p in hidusb) From 7bdfa7609dee6a6e9dad13932eb56998023f5ecc Mon Sep 17 00:00:00 2001 From: "Eric Siegel (Rocket Hazmat)" <409247+NTICompass@users.noreply.github.com> Date: Fri, 13 Mar 2020 13:50:09 -0400 Subject: [PATCH 2/3] Upgrade KeepKey for new libagent code Add get_public_node for KeepKey --- libagent/device/keepkey_defs.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libagent/device/keepkey_defs.py b/libagent/device/keepkey_defs.py index 5054dd6..3c09b5f 100644 --- a/libagent/device/keepkey_defs.py +++ b/libagent/device/keepkey_defs.py @@ -9,6 +9,9 @@ from keepkeylib.transport_hid import HidTransport from keepkeylib.transport_webusb import WebUsbTransport from keepkeylib.types_pb2 import IdentityType +get_public_node = Client.get_public_node +sign_identity = Client.sign_identity +Client.state = None def find_device(): """Returns first WebUSB or HID transport.""" From 0f627e83221d5bda4584baf5549c87b816f032fc Mon Sep 17 00:00:00 2001 From: Eric Siegel Date: Mon, 16 Mar 2020 15:26:15 -0400 Subject: [PATCH 3/3] Clean up code... --- libagent/device/keepkey_defs.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libagent/device/keepkey_defs.py b/libagent/device/keepkey_defs.py index 3c09b5f..d95c66a 100644 --- a/libagent/device/keepkey_defs.py +++ b/libagent/device/keepkey_defs.py @@ -13,12 +13,11 @@ get_public_node = Client.get_public_node sign_identity = Client.sign_identity Client.state = None + def find_device(): """Returns first WebUSB or HID transport.""" - webusb = WebUsbTransport.enumerate() - hidusb = HidTransport.enumerate() + for d in WebUsbTransport.enumerate(): + return WebUsbTransport(d) - if len(webusb): - return next(WebUsbTransport(p) for p in webusb) - elif len(hidusb): - return next(HidTransport(p) for p in hidusb) + for d in HidTransport.enumerate(): + return HidTransport(d)