Make all errors for Trezor visible in the GUI
This commit is contained in:
parent
b48e996562
commit
0ce463c99c
|
@ -30,6 +30,10 @@ def log(msg):
|
||||||
stderr.write("%s\n" % msg)
|
stderr.write("%s\n" % msg)
|
||||||
stderr.flush()
|
stderr.flush()
|
||||||
|
|
||||||
|
def give_error(message):
|
||||||
|
QMessageBox.warning(QDialog(), _('Warning'), _(message), _('OK'))
|
||||||
|
raise Exception(message)
|
||||||
|
|
||||||
class Plugin(BasePlugin):
|
class Plugin(BasePlugin):
|
||||||
|
|
||||||
def fullname(self): return 'Trezor Wallet'
|
def fullname(self): return 'Trezor Wallet'
|
||||||
|
@ -116,16 +120,14 @@ class TrezorWallet(NewWallet):
|
||||||
|
|
||||||
def get_client(self):
|
def get_client(self):
|
||||||
if not TREZOR:
|
if not TREZOR:
|
||||||
raise Exception('please install github.com/trezor/python-trezor')
|
give_error('please install github.com/trezor/python-trezor')
|
||||||
|
|
||||||
if not self.client or self.client.bad:
|
if not self.client or self.client.bad:
|
||||||
try:
|
try:
|
||||||
d = HidTransport.enumerate()[0]
|
d = HidTransport.enumerate()[0]
|
||||||
self.transport = HidTransport(d)
|
self.transport = HidTransport(d)
|
||||||
except:
|
except:
|
||||||
d = QDialog()
|
give_error('Could not connect to your Trezor. Please verify the cable is connected and that no other app is using it.')
|
||||||
QMessageBox.warning(d, _('Warning'), _('Could not connect to your Trezor. Please verify the cable is connected and that no other app is using it.'), _('OK'))
|
|
||||||
raise Exception("Trezor not found")
|
|
||||||
self.client = QtGuiTrezorClient(self.transport)
|
self.client = QtGuiTrezorClient(self.transport)
|
||||||
self.client.set_tx_api(self)
|
self.client.set_tx_api(self)
|
||||||
#self.client.clear_session()# TODO Doesn't work with firmware 1.1, returns proto.Failure
|
#self.client.clear_session()# TODO Doesn't work with firmware 1.1, returns proto.Failure
|
||||||
|
@ -174,7 +176,7 @@ class TrezorWallet(NewWallet):
|
||||||
try:
|
try:
|
||||||
decrypted_msg = self.get_client().decrypt_message(address_n, b64decode(message))
|
decrypted_msg = self.get_client().decrypt_message(address_n, b64decode(message))
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise e
|
give_error(e)
|
||||||
finally:
|
finally:
|
||||||
twd.emit(SIGNAL('trezor_done'))
|
twd.emit(SIGNAL('trezor_done'))
|
||||||
return str(decrypted_msg)
|
return str(decrypted_msg)
|
||||||
|
@ -184,11 +186,11 @@ class TrezorWallet(NewWallet):
|
||||||
address_path = self.address_id(address)
|
address_path = self.address_id(address)
|
||||||
address_n = self.get_client().expand_path(address_path)
|
address_n = self.get_client().expand_path(address_path)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise
|
give_error(e)
|
||||||
try:
|
try:
|
||||||
msg_sig = self.get_client().sign_message('Bitcoin', address_n, message)
|
msg_sig = self.get_client().sign_message('Bitcoin', address_n, message)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise e
|
give_error(e)
|
||||||
finally:
|
finally:
|
||||||
twd.emit(SIGNAL('trezor_done'))
|
twd.emit(SIGNAL('trezor_done'))
|
||||||
b64_msg_sig = b64encode(msg_sig.signature)
|
b64_msg_sig = b64encode(msg_sig.signature)
|
||||||
|
@ -199,14 +201,14 @@ class TrezorWallet(NewWallet):
|
||||||
return
|
return
|
||||||
|
|
||||||
if not self.check_proper_device():
|
if not self.check_proper_device():
|
||||||
raise Exception('Wrong device or password')
|
give_error('Wrong device or password')
|
||||||
|
|
||||||
inputs = self.tx_inputs(tx)
|
inputs = self.tx_inputs(tx)
|
||||||
outputs = self.tx_outputs(tx)
|
outputs = self.tx_outputs(tx)
|
||||||
try:
|
try:
|
||||||
signed_tx = self.get_client().sign_tx('Bitcoin', inputs, outputs)[1]
|
signed_tx = self.get_client().sign_tx('Bitcoin', inputs, outputs)[1]
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise e
|
give_error(e)
|
||||||
finally:
|
finally:
|
||||||
twd.emit(SIGNAL('trezor_done'))
|
twd.emit(SIGNAL('trezor_done'))
|
||||||
values = [i['value'] for i in tx.inputs]
|
values = [i['value'] for i in tx.inputs]
|
||||||
|
@ -229,8 +231,8 @@ class TrezorWallet(NewWallet):
|
||||||
|
|
||||||
if ('is_coinbase' in txinput and txinput['is_coinbase']):
|
if ('is_coinbase' in txinput and txinput['is_coinbase']):
|
||||||
prev_hash = "\0"*32
|
prev_hash = "\0"*32
|
||||||
prev_index = 0xffffffff # signed int -1
|
prev_index = 0xffffffff # signed int -1
|
||||||
else:
|
else:
|
||||||
prev_hash = unhexlify(txinput['prevout_hash'])
|
prev_hash = unhexlify(txinput['prevout_hash'])
|
||||||
prev_index = txinput['prevout_n']
|
prev_index = txinput['prevout_n']
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue