1
0

plugins: keepkey: rm dependence on external keepkeylib

we will instead bundle our own fork, as a git submodule,
https://github.com/spesmilo/electrum-keepkeylib

related https://github.com/spesmilo/electrum/issues/7922
and https://github.com/keepkey/python-keepkey/issues/146
(i.e. upstream keepkeylib is unmaintained)
This commit is contained in:
SomberNight
2025-03-17 16:25:57 +00:00
parent 457979ce63
commit c8143957a6
8 changed files with 16 additions and 15 deletions

3
.gitmodules vendored
View File

@@ -4,3 +4,6 @@
[submodule "electrum/www"]
path = electrum/plugins/payserver/www
url = https://github.com/spesmilo/electrum-http.git
[submodule "electrum/plugins/keepkey/keepkeylib"]
path = electrum/plugins/keepkey/keepkeylib
url = https://github.com/spesmilo/electrum-keepkeylib.git

View File

@@ -42,7 +42,6 @@ datas += collect_data_files(f"{PYPKG}.plugins")
datas += collect_data_files('trezorlib') # TODO is this needed? and same question for other hww libs
datas += collect_data_files('safetlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
datas += collect_data_files('ckcc')
datas += collect_data_files('bitbox02')

View File

@@ -279,10 +279,6 @@ hidapi==0.14.0 \
idna==3.6 \
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
keepkey==6.3.1 \
--hash=sha256:88e2b5291c85c8e8567732f675697b88241082884aa1aba32257f35ee722fc09 \
--hash=sha256:cef1e862e195ece3e42640a0f57d15a63086fd1dedc8b5ddfcbc9c2657f0bb1e \
--hash=sha256:f369d640c65fec7fd8e72546304cdc768c04224a6b9b00a19dc2cd06fa9d2a6b
ledger-bitcoin==0.3.0 \
--hash=sha256:ad9cdeaf33a45562bbd5bae6751025b869a2f81d6eb0267dd062a01f5925a4d5 \
--hash=sha256:e7c33404d02044c3810b294a510f7ad97bc65ab12dbdd180d873f2b4ebc0711a

View File

@@ -45,7 +45,6 @@ datas += collect_data_files(f"{PYPKG}.plugins")
datas += collect_data_files('trezorlib') # TODO is this needed? and same question for other hww libs
datas += collect_data_files('safetlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
datas += collect_data_files('ckcc')
datas += collect_data_files('bitbox02')

View File

@@ -7,7 +7,11 @@ trezor[hidapi]>=0.13.0,<0.14
safet>=0.1.5
# device plugin: keepkey
keepkey>=6.3.1
ecdsa>=0.9
protobuf>=3.0.0
mnemonic>=0.8
hidapi>=0.7.99.post15
libusb1>=1.6
# device plugin: ledger
# note: btchip-python only needed for "legacy" protocol and HW.1 support

View File

@@ -1,4 +1,4 @@
from keepkeylib.client import proto, BaseClient, ProtocolMixin
from .keepkeylib.keepkeylib.client import proto, BaseClient, ProtocolMixin
from .clientbase import KeepKeyClientBase
class KeepKeyClient(KeepKeyClientBase, ProtocolMixin, BaseClient):

View File

@@ -75,10 +75,8 @@ class KeepKeyPlugin(HW_PluginBase):
try:
from . import client
import keepkeylib
import keepkeylib.ckd_public
import keepkeylib.transport_hid
import keepkeylib.transport_webusb
from .keepkeylib import keepkeylib
from .keepkeylib.keepkeylib import ckd_public, transport_hid, transport_webusb
self.client_class = client.KeepKeyClient
self.ckd_public = keepkeylib.ckd_public
self.types = keepkeylib.client.types
@@ -90,11 +88,12 @@ class KeepKeyPlugin(HW_PluginBase):
self.device_manager().register_enumerate_func(self.enumerate)
self.libraries_available = True
except ImportError:
self.logger.debug("error importing keepkeylib", exc_info=True)
self.libraries_available = False
@runs_in_hwd_thread
def enumerate(self):
from keepkeylib.transport_webusb import WebUsbTransport
from .keepkeylib.keepkeylib.transport_webusb import WebUsbTransport
results = []
for dev in WebUsbTransport.enumerate():
path = self._dev_to_str(dev)
@@ -112,12 +111,12 @@ class KeepKeyPlugin(HW_PluginBase):
@runs_in_hwd_thread
def hid_transport(self, pair):
from keepkeylib.transport_hid import HidTransport
from .keepkeylib.keepkeylib.transport_hid import HidTransport
return HidTransport(pair)
@runs_in_hwd_thread
def webusb_transport(self, device):
from keepkeylib.transport_webusb import WebUsbTransport
from .keepkeylib.keepkeylib.transport_webusb import WebUsbTransport
for dev in WebUsbTransport.enumerate():
if device.path == self._dev_to_str(dev):
return WebUsbTransport(dev)