fix #862: ask passphrase only once

This commit is contained in:
ThomasV 2015-08-19 10:15:36 +02:00
parent 2ffd419e66
commit 2996ec927f
1 changed files with 18 additions and 12 deletions

View File

@ -23,6 +23,7 @@ from electrum.wallet import pw_decode, bip32_private_derivation, bip32_root
from electrum_gui.qt.util import *
from electrum_gui.qt.main_window import StatusBarButton, ElectrumWindow
from electrum_gui.qt.installwizard import InstallWizard
try:
from trezorlib.client import types
@ -133,7 +134,7 @@ class Plugin(BasePlugin):
if type(window) is ElectrumWindow:
self.window.statusBar().addPermanentWidget(self.trezor_button)
if self.handler is None:
self.handler = TrezorQtHandler(self.window.app)
self.handler = TrezorQtHandler(self.window)
try:
self.get_client().ping('t')
except BaseException as e:
@ -625,18 +626,23 @@ class TrezorQtHandler:
self.done.set()
def passphrase_dialog(self):
from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog
d = QDialog()
d.setModal(1)
d.setLayout(make_password_dialog(d, None, self.message, False))
confirmed, p, passphrase = run_password_dialog(d, None, None)
if not confirmed:
QMessageBox.critical(None, _('Error'), _("Password request canceled"), _('OK'))
self.passphrase = None
else:
if passphrase is None:
passphrase = '' # Even blank string is valid Trezor passphrase
if type(self.win) is ElectrumWindow:
passphrase = self.win.password_dialog(_("Please enter your Trezor passphrase"))
self.passphrase = unicodedata.normalize('NFKD', unicode(passphrase))
else:
assert type(self.win) is InstallWizard
from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog
d = QDialog()
d.setModal(1)
d.setLayout(make_password_dialog(d, None, self.message, False))
confirmed, p, passphrase = run_password_dialog(d, None, None)
if not confirmed:
QMessageBox.critical(None, _('Error'), _("Password request canceled"), _('OK'))
self.passphrase = None
else:
if passphrase is None:
passphrase = '' # Even blank string is valid Trezor passphrase
self.passphrase = unicodedata.normalize('NFKD', unicode(passphrase))
self.done.set()
def message_dialog(self):