Commit Graph

64 Commits

Author SHA1 Message Date
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 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 f6200bd73e select_device: only list plugin devices 2016-01-22 22:20:08 +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 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
ThomasV d200b236ae replace tx.input, tx.output by methods, so that deserialize calls are encapsulated 2016-01-17 15:04:11 +01:00
ThomasV 0d52911561 define constants for tx output types 2016-01-14 17:15:50 +01: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 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 a3bced210d Treozr: improved settings screen
Nicer layout.  Split into three tabs.
2016-01-08 21:14:34 +09:00
ThomasV 5915b9b7e1 restore action-driven wizard logic 2016-01-07 00:55:23 +01: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
Neil Booth 21bf5a8a84 Better support for USB devices
Benefits of this rewrite include:

- support of disconnecting / reconnecting a device without having
  to close the wallet, even in a different USB socket
- support of multiple keepkey / trezor devices, both during wallet
  creation and general use
- wallet is watching-only dynamically according to whether the
  associated device is currently plugged in or not
2016-01-02 20:39:29 +09:00
Neil Booth 187b4dc9c1 Trezor: Need to set client in show_address 2016-01-02 11:07:39 +09:00
Neil Booth 1d07960290 Remove constructor method of plugins
Clean up wallet class loading.
2016-01-02 00:16:15 +09:00
Neil Booth cf4ee487cd Remove duplicate code
Cut-n-paste somehow into the same class
2016-01-01 22:57:21 +09:00
Neil Booth c3df5c7177 Work around trezor library bug
expand_path() should be static.  Until it is we implement it ourselves.
2016-01-01 21:11:46 +09:00
Neil Booth 2f58d419dc Get ledger wallet working, for restore at least
Fixes #1592
2016-01-01 18:38:43 +09:00
Neil Booth 11d135b32d Better install wizard
Break out the workflow logic of the install wizard
into a base class.  This means reimplementing with
full support in a new GUI is now easy; you just provide
ways to request passwords, show messages etc.  The API
is fully documented in the base class.

There are a couple of minor outstanding issues, including that
the old messages shown when recovering a wallet are missing.
I will come back to that.  Ledger wallet might be broken.

Other improvements:

The install wizard code is now easy to follow and understand.
Hardware wallets can now be restored without any need for their
accompanying libraries.
Various bits of trustedcoin were broken and have been fixed.
Many plugin hooks can be removed.  I have only started on this.
2016-01-01 16:48:18 +09:00
Neil Booth 93d05e8cfe Have close_wallet hook take a wallet. 2015-12-31 10:31:49 +09:00
Neil Booth b8f2d9dfd4 Hardware wallets don't have seeds 2015-12-31 09:56:05 +09:00