You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
748 B
Python
29 lines
748 B
Python
"""Cryptographic hardware device management."""
|
|
|
|
import logging
|
|
|
|
from . import trezor
|
|
from . import keepkey
|
|
from . import ledger
|
|
from . import interface
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
DEVICE_TYPES = [
|
|
trezor.Trezor,
|
|
keepkey.KeepKey,
|
|
ledger.LedgerNanoS,
|
|
]
|
|
|
|
|
|
def detect(identity_str, curve_name):
|
|
"""Detect the first available device and return it to the user."""
|
|
for device_type in DEVICE_TYPES:
|
|
try:
|
|
with device_type(identity_str, curve_name) as d:
|
|
return d
|
|
except interface.NotFoundError as e:
|
|
log.debug('device not found: %s', e)
|
|
raise IOError('No device found: "{}" ({})'.format(identity_str,
|
|
curve_name))
|