Commit Graph

194 Commits

Author SHA1 Message Date
ThomasV 665d1bc153 plugin: separate get_xpub and setup_device 2016-08-24 10:47:27 +02:00
ThomasV d2dcea67ba fix settings_dialog buttons 2016-08-24 10:19:45 +02:00
ThomasV 8edca91390 wizard: trezor init 2016-08-24 05:58:41 +02:00
ThomasV 4781df9d21 wizard: scan hardware devices directly 2016-08-23 13:40:11 +02:00
ThomasV 0520eda628 device manager: remove seemingly unused parameter 2016-08-23 10:36:20 +02:00
ThomasV 63ebf7772e wizard.query_choice 2016-08-23 10:00:46 +02:00
ThomasV d946e9fa54 trezor button should not be an attribute of window 2016-08-23 09:46:41 +02:00
ThomasV 3b830cbcfa wizard: fix trezor device initialization 2016-08-23 09:21:24 +02:00
ThomasV 80675121ce allow several hardware cosigners in the same wallet 2016-08-22 12:50:24 +02:00
ThomasV eb60e0d2e0 fix hw_type 2016-08-21 22:15:17 +02:00
ThomasV afe39330dc update wallet format again, for keystore 2016-08-21 11:58:15 +02:00
ThomasV 428bc539b3 hardware: store derivation instead of account_id 2016-08-20 21:08:30 +02:00
ThomasV 664077397e device manager: index devices by xpub 2016-08-20 20:54:15 +02:00
ThomasV a972a476bc fix trezor dialog 2016-08-20 18:21:20 +02:00
ThomasV 8804ea8b1a fix keystore in trezor settings 2016-08-20 08:52:13 +02:00
ThomasV bfd7709ccd move xpubkey logic to keystore and fix it 2016-08-17 15:25:16 +02:00
ThomasV c101379eb0 fix: type of account_id 2016-08-15 14:43:24 +02:00
ThomasV 55aa29917d Do not use side-effects of import to initialize hardware plugins
Call HidTransport in the context of a function
2016-08-15 12:28:31 +02:00
ThomasV d9021788fa request account_id in wizard, for hardware wallets. cleanup bip44 code 2016-08-15 11:48:33 +02:00
ThomasV b87c5d12fa - fix sign/verify messages
- fix hardware wallet tx_outputs
2016-08-14 13:03:52 +02:00
ThomasV b436042c89 partially revert fdb810ba62 2016-08-13 14:15:29 +02:00
ThomasV 1159f85e05 Major refactoring
- separation between Wallet and key management (Keystore)
 - simplification of wallet classes
 - remove support for multiple accounts in the same wallet
 - add support for OP_RETURN to Trezor plugin
 - split multi-accounts wallets for backward compatibility
2016-08-12 11:02:28 +02:00
slush0 fdb810ba62 Fixed TREZOR plugin to work with python-trezor>=0.7.0 (to be released). 2016-06-27 17:16:55 +02:00
slush0 18b7337aea Use Bridge transport if available; implementing #1139
Bumping required TREZOR firmware to 1.3.3 (includes important fixes)
2016-05-06 05:44:23 +02:00
Neil Booth 0f33989768 trezor: remove code duplicated in base class 2016-02-27 13:17:59 +09:00
Neil Booth 9a454b60ce trezor: raise error for decryption attempts 2016-02-24 22:43:54 +09:00
Neil Booth 535956149a trezor: single passphrase entry
Only require the user to input the passphrase once, unless creating
a wallet.
Should they mis-enter the passphrase, they will be warned Electrum
couldn't pair the device, and when they actually need to use it
they will be prompted again.
Fixes #1672
2016-02-11 19:54:55 +09:00
Neil Booth 881694d39d trezor: quiet user cancelling of passphrase input 2016-02-11 16:21:22 +09:00
Neil Booth 0f7d9c9c17 trezor: remove duplicate code
This was moved to the hw_wallet base class.
2016-02-11 15:59:46 +09:00
Neil Booth b3a3628b49 trezor: tweak some messages 2016-02-11 15:41:56 +09:00
Neil Booth e7b87c1d24 trezor: improve various messages and dialogs 2016-02-11 13:59:19 +09:00
Neil Booth 5f28834bb2 Trezor: session timeout improvements
Move session timeout from wallet to config
Prevent timeouts whenever a device operation is in progress
Move timeout job from each plugin to device manager
2016-02-10 21:59:41 +09:00
Neil Booth 9490debf0f hw_wallet: don't make watching only if cannot pair
Instead issue a warning.  Being watching-only disables
various functionality that should instead just ask again
for the PIN to be input.
2016-02-07 17:38:34 +09:00
Neil Booth 16397b1ed7 trezor: more user friendly when cannot connect
Tell the user and ask if they want to try again.  If they
say no, raise a silent exception.  Apply this more friendly
behaviour to the install wizard too (see issue #1668).
2016-02-06 19:51:39 +09:00
Neil Booth 4ea9518aef QT install wizard: catch general exceptions
and show an error before re-raising and exiting.  Improvement on
prior.
2016-02-06 15:13:27 +09:00
Neil Booth 297e89db5c Install wizard: error out when no devices found
Fixes 1668
2016-02-06 15:08:56 +09:00
Neil Booth e61fffab55 Trezor/KeepKey: force watching only improvements
Only warn about watching only once given a chance to pair.
Failure to pair makes watching-only and warns.
In error message to user, distinguish between failure to connect
and failure to pair.
2016-01-31 19:36:21 +09:00
ThomasV 2a908d3e8b hw_wallet: do not mix qt and non-qt imports 2016-01-30 13:48:52 +01:00
Neil Booth 012f500976 hw_wallet: Create HW_PluginBase and use it 2016-01-30 18:33:54 +09:00
Neil Booth 134ae3d044 hw_wallet: separate out common QtHandler code 2016-01-30 12:46:54 +09:00
Neil Booth e461c1c818 Create hw_wallet directory for common code
Quite a lot of code under trezor/ can be shared with the
Ledger code.  This is the first step for wallets.
2016-01-30 12:20:05 +09:00
Neil Booth 6b68968d04 self not client. 2016-01-30 12:11:16 +09:00
Pavol Rusnak 6ce12ca1dc
fix spelling of TREZOR and SatoshiLabs 2016-01-29 14:58:51 +01:00
Neil Booth 412e2a8d2c Create is_pairable() function and use it.
Fixes #1653.
2016-01-29 19:26:05 +09:00
Richard Ulrich 7f2c379a6c added a missing self statement for issue #1093 2016-01-27 21:32:53 +01:00
Neil Booth f4fa53e915 Trezor: fixes for latest libtrezor
We were relying on internals of libtrezor that they just
changed.  However their changes don't work on Mac either.
Work around both issues.  I think this...

Fixes #1637
2016-01-24 14:33:21 +09:00
Neil Booth f8ed7b058d Improved multi-device handling
Ask user which device to use when there are many.  If there
is only one skip the question.  We used to just pick the
first one we found; user had no way to switch.

We have to handle querying from the non-GUI thread.
2016-01-24 13:41:03 +09:00
Neil Booth 3a735d40ac Keepkey/Trezor: fix 2 issues
1: In KeepKey recovery we let the user type a fifth
   letter which causes the firmware to abort the
   protocol.  Only allow 4 letters.
2: Handle exceptions thrown during device initialization
   properly
2016-01-24 10:39:04 +09:00
Neil Booth efa1efedca Hardware wallets: limit change outputs to 1 2016-01-23 22:05:08 +09:00
Neil Booth b752e91dae Separate out get_input_tx. 2016-01-23 21:49:07 +09:00
Neil Booth 9bf45de279 Trezor: give me a chance to sign with a PIN entry 2016-01-23 16:23:21 +09:00
Neil Booth 43fd49aa8f Fix for tx.inputs break 2016-01-23 15:32:21 +09:00
Neil Booth 91d0504f31 GC the dialog once done. 2016-01-23 14:33:46 +09:00
Neil Booth 889976915a KeepKey: Implement secure recovery from seed
This method relies on having a large screen so only
works with KeepKey firmware.
2016-01-23 14:26:13 +09:00
Neil Booth eb865779eb Small fix for trezor devices
Client operations are asynchronous; do any unpairing after
the operation.
2016-01-23 12:11:07 +09:00
Neil Booth f6200bd73e select_device: only list plugin devices 2016-01-22 22:20:08 +09:00
Neil Booth 8732bead24 Trezor: fix a typo. 2016-01-22 21:18:03 +09:00
Neil Booth a7cb66d31e Trezor: better messages during initialization 2016-01-22 20:37:49 +09:00
Neil Booth 1e030706cb Trezor: small improvements for device initialization 2016-01-22 19:48:04 +09:00
Neil Booth cefd128020 Trezor: improve install wizard
Add explanatory help about passphrases, with warning, like
in trezor dialog box.
2016-01-22 00:01:09 +09:00
Neil Booth 0d14781463 Trezor: GUI fixes
Trezor window was doing GUI stuff outside the GUI thread
2016-01-21 23:33:15 +09:00
Neil Booth 24037be99c Clean up client caching and handling 2016-01-21 22:56:53 +09:00
Neil Booth 13420f6917 Keepkey: doesn't yet support homescreen setting
Make some text shorter so it fits in radio buttons
2016-01-19 22:38:02 +09:00
Neil Booth 7029411629 Threaded trezor dialog
Also fix up the dialog box a bit
2016-01-19 20:58:10 +09:00
Neil Booth 9ab9c73d6d Threaded wallet creation 2016-01-18 07:33:04 +09:00
Neil Booth 06c262d0dc TrezorClient: should be in a separate thread
First steps; get show_address working.
Client is not responsible for showing exceptions.
Suppress uninteresting exceptions.
2016-01-18 07:33:04 +09:00
Neil Booth c99f0acfba Localize Image import for now 2016-01-18 07:25:55 +09:00
ThomasV d200b236ae replace tx.input, tx.output by methods, so that deserialize calls are encapsulated 2016-01-17 15:04:11 +01:00
Neil Booth c160a99ebc Add cancel button to trezor dialogs 2016-01-17 18:39:09 +09:00
Neil Booth 98aef8418c Construct base classes in right order
Fixed #1632
2016-01-16 10:19:48 +09:00
Neil Booth f271f65842 KeepKey / Trezor: client split
We're going to want to do a few things differently, such as
device recovery.  So move the client code to clientbase.py
and create a per-plugin client.py file for the derived client
class.
2016-01-15 13:44:32 +09:00
ThomasV 0d52911561 define constants for tx output types 2016-01-14 17:15:50 +01:00
Neil Booth 4eba1c1d8a Wizard: fixes for hardware wallet initialization 2016-01-14 07:40:46 +09:00
Neil Booth b120dd8849 Fix root derivation changes for BIP44_Wallets
Wallet keys use root_name
Also typo xub -> xpub
2016-01-11 11:39:56 +09:00
ThomasV c47e3499ce rename wallet methods 2016-01-10 12:56:15 +01:00
Neil Booth 3d781a2d1b BIP32_HD_Wallet: Fix address derivation
Unfortunately there was root_name and root_derivation confusion
in the past for classes derived from BIP_32_HD_Wallet.
Address derivation used root_name and so would begin with 'x/'
whereas it should have begun with root_derivation, and so started
with 'm/'.

This fixes that old wart and removes some fudges from the trezor
code that used to work around it.
2016-01-10 20:06:13 +09:00
Neil Booth 5baa5feb11 Put restore_wallet_class back in the derived classes 2016-01-10 18:41:20 +09:00
Neil Booth 9946feb352 Have BTChipWallet derive from BIP44_Wallet
Narrowing the gap with the Trezor code a bit
2016-01-10 17:38:39 +09:00
Neil Booth d5c3c09bbc Trezor: Implement decrypt message
For reasons I don't yet understand this can only decrypt
messages encrypted by the Trezor, not by Electrum
2016-01-10 14:21:40 +09:00
Neil Booth 9cf0a9720f QT handler improvements
Now we have the top_level_window() function, stop using the window
stack.
2016-01-10 13:24:56 +09:00
Neil Booth 2f1d6b2379 Have Trezor dialog work even if wallet unpaired
Required cleanup of handler logic.  Now every client
is constructed with a handler, so there is never a
question of not having one.
2016-01-09 17:15:31 +09:00
Neil Booth 3e8598c245 Move trezor-specific install wizard code to plugin 2016-01-09 15:21:38 +09:00
Neil Booth 54cdd551fe Avoid unnecessary exception on missing libs 2016-01-09 00:27:22 +09:00
Neil Booth 9f0d2f4d21 Replace two uses of dialog with self 2016-01-09 00:24:58 +09:00
Neil Booth a3bced210d Treozr: improved settings screen
Nicer layout.  Split into three tabs.
2016-01-08 21:14:34 +09:00
ThomasV b21ea13940 trezor: fix create account 2016-01-07 01:17:35 +01:00
ThomasV 5915b9b7e1 restore action-driven wizard logic 2016-01-07 00:55:23 +01:00
Neil Booth 0117109a2d Trezor: show supported coins
Also fix dialog layout issue on MacOSX
2016-01-06 23:25:15 +09:00
Neil Booth 6fb7dbd30d Implement passphrase protection toggling.
Along with chicken box.
2016-01-06 23:08:02 +09:00
Neil Booth 9b29c6c2e6 Trezor: all four available device initializations
Trezor and KeepKey devices can now be initialized by:
- device-generated seed
- existing seed
- BIP39 mnemonic
- master private key
2016-01-06 22:18:56 +09:00
Neil Booth 3d9f321cae Use a shared device manager
Use a shared device manager across USB devices (not yet taken
advantage of by ledger).  This reduces USB scans and abstracts
device management cleanly.

We no longer scan at regular intervals in a background thread.
2016-01-06 07:56:58 +09:00
Neil Booth 2ad009bb9d Add some informative comments 2016-01-03 21:03:11 +09:00
Neil Booth 6516b28840 TrezorCompatiblePlugin: make it a thread job
We shouldn't be using QT gui threads
2016-01-03 20:46:47 +09:00
Neil Booth 43fd684d97 Trezor: add session timeout to preferences
Fixes #803
2016-01-03 17:25:47 +09:00
Neil Booth 87363c8301 Trezor: Implement resetting a device 2016-01-03 13:34:03 +09:00
Neil Booth e6afaf173c Hardware wallets can create accounts 2016-01-03 11:10:31 +09:00
Neil Booth a7028176cd Trezor: Add wipe device functionality
Also add a chicken box for PIN removal.
2016-01-03 10:26:34 +09:00
Neil Booth 9eaf510ac6 Test if initialized to determine watching only
Prepares for device wipe functionality
2016-01-03 09:18:29 +09:00
Neil Booth f3e6bf0280 Passphrase-related fixes
Move normalize code to one place on the wallet
Passphrases don't have password strength meter
2016-01-03 09:03:07 +09:00
Neil Booth 4fe01cb8d3 Change scan_devices logic
Fixes title bar updates about watching only
2016-01-03 00:02:20 +09:00