commit f3e6bf0280fd666b0dd059ee53480318353c692d
parent 4fe01cb8d3f695b90ed854889b75ca52a3699725
Author: Neil Booth <kyuupichan@gmail.com>
Date: Sun, 3 Jan 2016 09:03:07 +0900
Passphrase-related fixes
Move normalize code to one place on the wallet
Passphrases don't have password strength meter
Diffstat:
4 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/gui/qt/password_dialog.py b/gui/qt/password_dialog.py
@@ -100,9 +100,12 @@ class PasswordDialog(WindowModalDialog):
vbox.addLayout(grid)
# Password Strength Label
- self.pw_strength = QLabel()
- grid.addWidget(self.pw_strength, 3, 0, 1, 2)
- self.new_pw.textChanged.connect(self.pw_changed)
+ if kind != self.PW_PASSPHRASE:
+ self.pw_strength = QLabel()
+ grid.addWidget(self.pw_strength, 3, 0, 1, 2)
+ self.new_pw.textChanged.connect(self.pw_changed)
+
+ self.new_pw.textChanged.connect(self.check_OKButton)
self.conf_pw.textChanged.connect(self.check_OKButton)
self.OKButton = OkButton(self)
@@ -121,7 +124,6 @@ class PasswordDialog(WindowModalDialog):
else:
label = ""
self.pw_strength.setText(label)
- self.check_OKButton()
def check_OKButton(self):
self.OKButton.setEnabled(self.new_pw.text() == self.conf_pw.text())
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -1739,12 +1739,16 @@ class BIP44_Wallet(BIP32_HD_Wallet):
return self.address_derivation(acc_id, change, address_index)
@staticmethod
+ def normalize_passphrase(passphrase):
+ return normalize('NFKD', unicode(passphrase or ''))
+
+ @staticmethod
def mnemonic_to_seed(mnemonic, passphrase):
# See BIP39
import pbkdf2, hashlib, hmac
PBKDF2_ROUNDS = 2048
mnemonic = normalize('NFKD', ' '.join(mnemonic.split()))
- passphrase = normalize('NFKD', passphrase)
+ passphrase = BIP44_Wallet.normalize_passphrase(passphrase)
return pbkdf2.PBKDF2(mnemonic, 'mnemonic' + passphrase,
iterations = PBKDF2_ROUNDS, macmodule = hmac,
digestmodule = hashlib.sha512).read(64)
diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
@@ -3,7 +3,6 @@ import time
from binascii import unhexlify
from struct import pack
-from unicodedata import normalize
from electrum.account import BIP32_Account
from electrum.bitcoin import (bc_address_to_hash_160, xpub_from_pubkey,
@@ -154,8 +153,10 @@ class TrezorCompatiblePlugin(BasePlugin):
@hook
def timer_actions(self):
+ # Scan connected devices every second. The test for libraries
+ # available is necessary to recover wallets on machines without
+ # libraries
if self.libraries_available:
- # Scan connected devices every second
now = time.time()
if now > self.last_scan + 1:
self.last_scan = now
@@ -294,10 +295,6 @@ class TrezorCompatiblePlugin(BasePlugin):
def is_enabled(self):
return self.libraries_available
- @staticmethod
- def normalize_passphrase(self, passphrase):
- return normalize('NFKD', unicode(passphrase or ''))
-
def on_restore_wallet(self, wallet, wizard):
assert isinstance(wallet, self.wallet_class)
diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py
@@ -11,6 +11,7 @@ from plugin import TrezorCompatiblePlugin
from electrum.i18n import _
from electrum.plugins import hook
from electrum.util import PrintError
+from electrum.wallet import BIP44_Wallet
# By far the trickiest thing about this handler is the window stack;
@@ -75,7 +76,7 @@ class QtHandler(PrintError):
PasswordDialog.PW_PASSPHRASE)
confirmed, p, passphrase = d.run()
if confirmed:
- passphrase = TrezorCompatiblePlugin.normalize_passphrase(passphrase)
+ passphrase = BIP44_Wallet.normalize_passphrase(passphrase)
self.passphrase = passphrase
self.done.set()