allow encrypting watch-only wallets. initial support for hw wallet storage encryption.
This commit is contained in:
@@ -40,6 +40,7 @@ from electrum.wallet import Multisig_Wallet, Deterministic_Wallet
|
||||
from electrum.i18n import _
|
||||
from electrum.plugins import BasePlugin, hook
|
||||
from electrum.util import NotEnoughFunds
|
||||
from electrum.storage import STO_EV_USER_PW
|
||||
|
||||
# signing_xpub is hardcoded so that the wallet can be restored from seed, without TrustedCoin's server
|
||||
signing_xpub = "xpub661MyMwAqRbcGnMkaTx2594P9EDuiEqMq25PM2aeG6UmwzaohgA6uDmNsvSUV8ubqwA3Wpste1hg69XHgjUuCD5HLcEp2QPzyV1HMrPppsL"
|
||||
@@ -420,9 +421,11 @@ class TrustedCoinPlugin(BasePlugin):
|
||||
k2 = keystore.from_xpub(xpub2)
|
||||
wizard.request_password(run_next=lambda pw, encrypt: self.on_password(wizard, pw, encrypt, k1, k2))
|
||||
|
||||
def on_password(self, wizard, password, encrypt, k1, k2):
|
||||
def on_password(self, wizard, password, encrypt_storage, k1, k2):
|
||||
k1.update_password(None, password)
|
||||
wizard.storage.set_password(password, encrypt)
|
||||
wizard.storage.set_keystore_encryption(bool(password))
|
||||
if encrypt_storage:
|
||||
wizard.storage.set_password(password, enc_version=STO_EV_USER_PW)
|
||||
wizard.storage.put('x1/', k1.dump())
|
||||
wizard.storage.put('x2/', k2.dump())
|
||||
wizard.storage.write()
|
||||
@@ -470,7 +473,7 @@ class TrustedCoinPlugin(BasePlugin):
|
||||
else:
|
||||
self.create_keystore(wizard, seed, passphrase)
|
||||
|
||||
def on_restore_pw(self, wizard, seed, passphrase, password, encrypt):
|
||||
def on_restore_pw(self, wizard, seed, passphrase, password, encrypt_storage):
|
||||
storage = wizard.storage
|
||||
xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase)
|
||||
k1 = keystore.from_xprv(xprv1)
|
||||
@@ -484,7 +487,11 @@ class TrustedCoinPlugin(BasePlugin):
|
||||
xpub3 = make_xpub(signing_xpub, long_user_id)
|
||||
k3 = keystore.from_xpub(xpub3)
|
||||
storage.put('x3/', k3.dump())
|
||||
storage.set_password(password, encrypt)
|
||||
|
||||
storage.set_keystore_encryption(bool(password))
|
||||
if encrypt_storage:
|
||||
storage.set_password(password, enc_version=STO_EV_USER_PW)
|
||||
|
||||
wizard.wallet = Wallet_2fa(storage)
|
||||
wizard.create_addresses()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user