From 7f2a360c6ada8a0cc73b030d9cbfc32bc199ac2d Mon Sep 17 00:00:00 2001 From: BTChip Date: Sun, 21 Sep 2014 00:49:36 +0200 Subject: [PATCH] Fix behavior when calling get_master_public_key from an external context --- plugins/btchipwallet.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/plugins/btchipwallet.py b/plugins/btchipwallet.py index 04d40a97..9947f113 100644 --- a/plugins/btchipwallet.py +++ b/plugins/btchipwallet.py @@ -113,8 +113,9 @@ class BTChipWallet(NewWallet): QMessageBox.warning(QDialog(), _('Warning'), _(message), _('OK')) else: self.signing = False - if clear_client: + if clear_client and self.client is not None: self.client.bad = True + self.device_checked = False raise Exception(message) def get_action(self): @@ -251,9 +252,15 @@ class BTChipWallet(NewWallet): return EncodeBase58Check(xpub) def get_master_public_key(self): - if not self.mpk: - self.mpk = self.get_public_key("44'/0'") - return self.mpk + try: + if not self.mpk: + self.get_client() # prompt for the PIN if necessary + if not self.check_proper_device(): + self.give_error('Wrong device or password') + self.mpk = self.get_public_key("44'/0'") + return self.mpk + except Exception, e: + self.give_error(e, True) def i4b(self, x): return pack('>I', x) @@ -283,6 +290,7 @@ class BTChipWallet(NewWallet): raise Exception('Aborted by user') pin = pin.encode() self.client.bad = True + self.device_checked = False self.get_client(True) signature = self.get_client().signMessageSign(pin) except Exception, e: @@ -381,6 +389,7 @@ class BTChipWallet(NewWallet): raise Exception('Aborted by user') pin = pin.encode() self.client.bad = True + self.device_checked = False self.get_client(True) waitDialog.start("Signing ...") else: