update trezor plugin
This commit is contained in:
parent
a203dab415
commit
58e1dd2a24
|
@ -424,6 +424,8 @@ class InstallWizard(QDialog):
|
|||
try:
|
||||
wallet.create_main_account(password)
|
||||
except BaseException as e:
|
||||
import traceback
|
||||
traceback.print_exc(file=sys.stdout)
|
||||
QMessageBox.information(None, _('Error'), str(e), _('OK'))
|
||||
return
|
||||
self.waiting_dialog(wallet.synchronize)
|
||||
|
|
|
@ -1273,18 +1273,11 @@ class BIP32_Wallet(Deterministic_Wallet):
|
|||
self.master_private_keys[name] = pw_encode(xpriv, password)
|
||||
self.storage.put('master_private_keys', self.master_private_keys, True)
|
||||
|
||||
def add_master_keys(self, root, derivation, password):
|
||||
x = self.master_private_keys.get(root)
|
||||
if x:
|
||||
master_xpriv = pw_decode(x, password )
|
||||
xpriv, xpub = bip32_private_derivation(master_xpriv, root, derivation)
|
||||
self.add_master_public_key(derivation, xpub)
|
||||
self.add_master_private_key(derivation, xpriv, password)
|
||||
else:
|
||||
master_xpub = self.master_public_keys[root]
|
||||
xpub = bip32_public_derivation(master_xpub, root, derivation)
|
||||
self.add_master_public_key(derivation, xpub)
|
||||
return xpub
|
||||
def derive_xkeys(self, root, derivation, password):
|
||||
x = self.master_private_keys[root]
|
||||
root_xprv = pw_decode(x, password)
|
||||
xprv, xpub = bip32_private_derivation(root_xprv, root, derivation)
|
||||
return xpub, xprv
|
||||
|
||||
def can_sign(self, tx):
|
||||
if self.is_watching_only():
|
||||
|
@ -1359,7 +1352,11 @@ class BIP32_HD_Wallet(BIP32_Wallet):
|
|||
def make_account(self, account_id, password):
|
||||
"""Creates and saves the master keys, but does not save the account"""
|
||||
derivation = self.root_name + "%d'"%int(account_id)
|
||||
xpub = self.add_master_keys(self.root_name, derivation, password)
|
||||
xpub, xprv = self.derive_xkeys(self.root_name, derivation, password)
|
||||
self.add_master_public_key(derivation, xpub)
|
||||
if xprv:
|
||||
self.add_master_private_key(derivation, xprv, password)
|
||||
|
||||
account = BIP32_Account({'xpub':xpub})
|
||||
return account
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ class Plugin(BasePlugin):
|
|||
def installwizard_restore(self, wizard, storage):
|
||||
wallet = TrezorWallet(storage)
|
||||
try:
|
||||
wallet.create_accounts(None)
|
||||
wallet.create_main_account(None)
|
||||
except BaseException as e:
|
||||
QMessageBox.information(None, _('Error'), str(e), _('OK'))
|
||||
return
|
||||
|
@ -85,24 +85,13 @@ class Plugin(BasePlugin):
|
|||
|
||||
|
||||
class TrezorWallet(NewWallet):
|
||||
wallet_type = 'trezor'
|
||||
|
||||
def __init__(self, storage):
|
||||
NewWallet.__init__(self, storage)
|
||||
self.transport = None
|
||||
self.client = None
|
||||
self.mpk = None
|
||||
|
||||
NewWallet.__init__(self, storage)
|
||||
|
||||
self.seed = 'trezor'
|
||||
|
||||
self.storage.put('gap_limit', 20, False) #obey BIP44 gap limit of 20
|
||||
|
||||
self.use_encryption = False
|
||||
|
||||
self.storage.put('seed', self.seed, False)
|
||||
self.storage.put('seed_version', self.seed_version, False)
|
||||
self.storage.put('use_encryption', self.use_encryption, False)
|
||||
|
||||
self.device_checked = False
|
||||
|
||||
def get_action(self):
|
||||
|
@ -121,9 +110,6 @@ class TrezorWallet(NewWallet):
|
|||
def is_watching_only(self):
|
||||
return False
|
||||
|
||||
def default_account(self):
|
||||
return "44'/0'/0'"
|
||||
|
||||
def get_client(self):
|
||||
if not TREZOR:
|
||||
raise Exception('please install github.com/trezor/python-trezor')
|
||||
|
@ -144,21 +130,17 @@ class TrezorWallet(NewWallet):
|
|||
self.proper_device = False
|
||||
return self.client
|
||||
|
||||
def account_id(self, i):
|
||||
return "44'/0'/%d'"%i
|
||||
|
||||
def address_id(self, address):
|
||||
account_id, (change, address_index) = self.get_address_index(address)
|
||||
return "%s/%d/%d" % (account_id, change, address_index)
|
||||
|
||||
def create_accounts(self, password):
|
||||
self.create_account('Main account', '') #name, empty password
|
||||
def create_main_account(self, password):
|
||||
self.create_account('Main account', None) #name, empty password
|
||||
|
||||
def make_account(self, account_id, password):
|
||||
xpub = self.get_public_key(account_id)
|
||||
self.add_master_public_key(account_id, xpub)
|
||||
account = BIP32_Account({'xpub':xpub})
|
||||
return account
|
||||
def derive_xkeys(self, root, derivation, password):
|
||||
derivation = derivation.replace(self.root_name,"44'/0'/")
|
||||
xpub = self.get_public_key(derivation)
|
||||
return xpub, None
|
||||
|
||||
def get_public_key(self, bip32_path):
|
||||
address_n = self.get_client().expand_path(bip32_path)
|
||||
|
|
Loading…
Reference in New Issue