commit 10aba39d4e11b595776794f32ef13af5c13e5069
parent 38fb26f1e806c169839a9d7000c57ea3d86278a5
Author: ThomasV <thomasv1@gmx.de>
Date: Sun, 21 Sep 2014 19:23:34 +0200
Merge pull request #858 from btchip/labelfix
Fix behavior when calling get_master_public_key from an external context
Diffstat:
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git 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):
@@ -254,9 +255,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)
@@ -286,6 +293,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:
@@ -384,6 +392,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: