commit 0f5cabc7f6500a3143f7ad8e71ab9cb84083ee09
parent 7e6fba0513b6a8db0a0546e8184f7d7a66008585
Author: SomberNight <somber.night@protonmail.com>
Date: Wed, 14 Mar 2018 12:42:42 +0100
fix #4122
Diffstat:
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):")))