Merge remote-tracking branch 'matejcik/master'

This commit is contained in:
Roman Zeyde
2018-08-02 21:51:01 +03:00
4 changed files with 35 additions and 12 deletions

View File

@@ -9,6 +9,6 @@ from keepkeylib.transport_hid import HidTransport
from keepkeylib.types_pb2 import IdentityType
def enumerate_transports():
"""Returns USB HID transports."""
return [HidTransport(p) for p in HidTransport.enumerate()]
def find_device():
"""Returns first USB HID transport."""
return next(HidTransport(p) for p in HidTransport.enumerate())

View File

@@ -106,13 +106,13 @@ class Trezor(interface.Device):
def connect(self):
"""Enumerate and connect to the first available interface."""
transports = self._defs.enumerate_transports()
if not transports:
transport = self._defs.find_device()
if not transport:
raise interface.NotFoundError('{} not connected'.format(self))
log.debug('transports: %s', transports)
log.debug('using transport: %s', transport)
for _ in range(5): # Retry a few times in case of PIN failures
connection = self._defs.Client(transport=transports[0],
connection = self._defs.Client(transport=transport,
state=self.__class__.cached_state)
self._override_pin_handler(connection)
self._override_passphrase_handler(connection)

View File

@@ -1,13 +1,28 @@
"""TREZOR-related definitions."""
# pylint: disable=unused-import,import-error
import os
import logging
from trezorlib.client import CallException, PinException
from trezorlib.client import TrezorClient as Client
from trezorlib.messages import IdentityType, PassphraseAck, PinMatrixAck, PassphraseStateAck
from trezorlib.device import TrezorDevice
try:
from trezorlib.transport import get_transport
except ImportError:
from trezorlib.device import TrezorDevice
get_transport = TrezorDevice.find_by_path
log = logging.getLogger(__name__)
def enumerate_transports():
"""Returns all available transports."""
return TrezorDevice.enumerate()
def find_device():
"""Selects a transport based on `TREZOR_PATH` environment variable.
If unset, picks first connected device.
"""
try:
return get_transport(os.environ.get("TREZOR_PATH"))
except Exception as e: # pylint: disable=broad-except
log.debug("Failed to find a Trezor device: %s", e)