electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 0f5cabc7f6500a3143f7ad8e71ab9cb84083ee09
parent 7e6fba0513b6a8db0a0546e8184f7d7a66008585
Author: SomberNight <somber.night@protonmail.com>
Date:   Wed, 14 Mar 2018 12:42:42 +0100

fix #4122

Diffstat:
Melectrum | 7+++++--
Mplugins/hw_wallet/cmdline.py | 3+++
Mplugins/keepkey/clientbase.py | 3+++
Mplugins/keepkey/qt_generic.py | 2+-
Mplugins/trezor/clientbase.py | 3+++
Mplugins/trezor/qt_generic.py | 2+-
6 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/electrum b/electrum @@ -93,7 +93,7 @@ from electrum import constants from electrum import SimpleConfig, Network from electrum.wallet import Wallet, Imported_Wallet from electrum.storage import WalletStorage, get_derivation_used_for_hw_device_encryption -from electrum.util import print_msg, print_stderr, json_encode, json_decode +from electrum.util import print_msg, print_stderr, json_encode, json_decode, UserCancelled from electrum.util import set_verbosity, InvalidPassword from electrum.commands import get_parser, known_commands, Commands, config_variables from electrum import daemon @@ -295,7 +295,10 @@ def get_password_for_hw_device_encrypted_storage(plugins): name, device_info = devices[0] plugin = plugins.get_plugin(name) derivation = get_derivation_used_for_hw_device_encryption() - xpub = plugin.get_xpub(device_info.device.id_, derivation, 'standard', plugin.handler) + try: + xpub = plugin.get_xpub(device_info.device.id_, derivation, 'standard', plugin.handler) + except UserCancelled: + sys.exit(0) password = keystore.Xpub.get_pubkey_from_xpub(xpub, ()) return password diff --git a/plugins/hw_wallet/cmdline.py b/plugins/hw_wallet/cmdline.py @@ -32,6 +32,9 @@ class CmdLineHandler: def show_message(self, msg, on_cancel=None): print_msg(msg) + def show_error(self, msg): + print_msg(msg) + def update_status(self, b): print_error('trezor status', b) diff --git a/plugins/keepkey/clientbase.py b/plugins/keepkey/clientbase.py @@ -50,6 +50,9 @@ class GuiMixin(object): else: msg = _("Enter your current {} PIN:") pin = self.handler.get_pin(msg.format(self.device)) + if len(pin) > 9: + self.handler.show_error(_('The PIN cannot be longer than 9 characters.')) + pin = '' # to cancel below if not pin: return self.proto.Cancel() return self.proto.PinMatrixAck(pin=pin) diff --git a/plugins/keepkey/qt_generic.py b/plugins/keepkey/qt_generic.py @@ -250,7 +250,7 @@ class QtPlugin(QtPluginBase): vbox.addWidget(QLabel(msg)) vbox.addWidget(text) pin = QLineEdit() - pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,10}'))) + pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,9}'))) pin.setMaximumWidth(100) hbox_pin = QHBoxLayout() hbox_pin.addWidget(QLabel(_("Enter your PIN (digits 1-9):"))) diff --git a/plugins/trezor/clientbase.py b/plugins/trezor/clientbase.py @@ -50,6 +50,9 @@ class GuiMixin(object): else: msg = _("Enter your current {} PIN:") pin = self.handler.get_pin(msg.format(self.device)) + if len(pin) > 9: + self.handler.show_error(_('The PIN cannot be longer than 9 characters.')) + pin = '' # to cancel below if not pin: return self.proto.Cancel() return self.proto.PinMatrixAck(pin=pin) diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py @@ -251,7 +251,7 @@ class QtPlugin(QtPluginBase): vbox.addWidget(QLabel(msg)) vbox.addWidget(text) pin = QLineEdit() - pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,10}'))) + pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,9}'))) pin.setMaximumWidth(100) hbox_pin = QHBoxLayout() hbox_pin.addWidget(QLabel(_("Enter your PIN (digits 1-9):")))