Skip to content

Commit 55aa299

Browse files
committed
Do not use side-effects of import to initialize hardware plugins
Call HidTransport in the context of a function
1 parent d902178 commit 55aa299

3 files changed

Lines changed: 46 additions & 18 deletions

File tree

plugins/keepkey/keepkey.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,25 @@ class KeepKeyPlugin(TrezorCompatiblePlugin):
1111
libraries_URL = 'https://github.com/keepkey/python-keepkey'
1212
minimum_firmware = (1, 0, 0)
1313
keystore_class = KeepKey_KeyStore
14-
try:
15-
from .client import KeepKeyClient as client_class
16-
import keepkeylib.ckd_public as ckd_public
17-
from keepkeylib.client import types
18-
from keepkeylib.transport_hid import HidTransport, DEVICE_IDS
19-
libraries_available = True
20-
except ImportError:
21-
libraries_available = False
14+
15+
def __init__(self, *args):
16+
try:
17+
import client
18+
import keepkeylib
19+
import keepkeylib.ckd_public
20+
import keepkeylib.transport_hid
21+
self.client_class = client.KeepKeyClient
22+
self.ckd_public = keepkeylib.ckd_public
23+
self.types = keepkeylib.client.types
24+
self.DEVICE_IDS = keepkeylib.transport_hid.DEVICE_IDS
25+
self.libraries_available = True
26+
except ImportError:
27+
self.libraries_available = False
28+
TrezorCompatiblePlugin.__init__(self, *args)
29+
30+
def hid_transport(self, pair):
31+
from keepkeylib.transport_hid import HidTransport
32+
return HidTransport(pair)
33+
34+
def bridge_transport(self, d):
35+
raise NotImplementedError('')

plugins/trezor/plugin.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def _try_hid(self, device):
9999
pair = [device.path, None]
100100

101101
try:
102-
return self.HidTransport(pair)
102+
return self.hid_transport(pair)
103103
except BaseException as e:
104104
raise
105105
self.print_error("cannot connect at", device.path, str(e))
@@ -109,7 +109,7 @@ def _try_bridge(self, device):
109109
self.print_error("Trying to connect over Trezor Bridge...")
110110

111111
try:
112-
return self.BridgeTransport({'path': hexlify(device.path)})
112+
return self.bridge_transport({'path': hexlify(device.path)})
113113
except BaseException as e:
114114
self.print_error("cannot connect to bridge", str(e))
115115
return None

plugins/trezor/trezor.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,26 @@ class TrezorPlugin(TrezorCompatiblePlugin):
1010
libraries_URL = 'https://github.com/trezor/python-trezor'
1111
minimum_firmware = (1, 3, 3)
1212
keystore_class = TrezorKeyStore
13-
try:
14-
from .client import TrezorClient as client_class
15-
import trezorlib.ckd_public as ckd_public
16-
from trezorlib.client import types
17-
from trezorlib.transport_hid import HidTransport, DEVICE_IDS
13+
14+
def __init__(self, *args):
15+
try:
16+
import client
17+
import trezorlib
18+
import trezorlib.ckd_public
19+
import trezorlib.transport_hid
20+
self.client_class = client.TrezorClient
21+
self.ckd_public = trezorlib.ckd_public
22+
self.types = trezorlib.client.types
23+
self.DEVICE_IDS = trezorlib.transport_hid.DEVICE_IDS
24+
self.libraries_available = True
25+
except ImportError:
26+
self.libraries_available = False
27+
TrezorCompatiblePlugin.__init__(self, *args)
28+
29+
def hid_transport(self, pair):
30+
from trezorlib.transport_hid import HidTransport
31+
return HidTransport(pair)
32+
33+
def bridge_transport(self, d):
1834
from trezorlib.transport_bridge import BridgeTransport
19-
libraries_available = True
20-
except ImportError:
21-
libraries_available = False
35+
return BridgeTransport(d)

0 commit comments

Comments
 (0)