tfix #4122 - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 0f5cabc7f6500a3143f7ad8e71ab9cb84083ee09 DIR parent 7e6fba0513b6a8db0a0546e8184f7d7a66008585 HTML Author: SomberNight <somber.night@protonmail.com> Date: Wed, 14 Mar 2018 12:42:42 +0100 fix #4122 Diffstat: M electrum | 7 +++++-- M plugins/hw_wallet/cmdline.py | 3 +++ M plugins/keepkey/clientbase.py | 3 +++ M plugins/keepkey/qt_generic.py | 2 +- M plugins/trezor/clientbase.py | 3 +++ M plugins/trezor/qt_generic.py | 2 +- 6 files changed, 16 insertions(+), 4 deletions(-) --- DIR diff --git a/electrum b/electrum t@@ -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 t@@ -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 DIR diff --git a/plugins/hw_wallet/cmdline.py b/plugins/hw_wallet/cmdline.py t@@ -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) DIR diff --git a/plugins/keepkey/clientbase.py b/plugins/keepkey/clientbase.py t@@ -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) DIR diff --git a/plugins/keepkey/qt_generic.py b/plugins/keepkey/qt_generic.py t@@ -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):"))) DIR diff --git a/plugins/trezor/clientbase.py b/plugins/trezor/clientbase.py t@@ -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) DIR diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py t@@ -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):")))