transactions: reading QR codes: clean-up and accept all encodings

This commit is contained in:
SomberNight 2019-11-07 06:33:15 +01:00
parent 29a6e3c019
commit 27df235c26
No known key found for this signature in database
GPG key ID: B33B5F232C6271E9
3 changed files with 7 additions and 13 deletions

View file

@ -397,12 +397,9 @@ class ElectrumWindow(App):
self.set_ln_invoice(data)
return
# try to decode transaction
from electrum.transaction import Transaction
from electrum.util import bh2u
from electrum.transaction import tx_from_any
try:
text = bh2u(base_decode(data, None, base=43))
tx = Transaction(text)
tx.deserialize()
tx = tx_from_any(data)
except:
tx = None
if tx:

View file

@ -2723,10 +2723,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
d = PasswordDialog(parent, msg)
return d.run()
def tx_from_text(self, txt: Union[str, bytes]) -> Union[None, 'PartialTransaction', 'Transaction']:
def tx_from_text(self, data: Union[str, bytes]) -> Union[None, 'PartialTransaction', 'Transaction']:
from electrum.transaction import tx_from_any
try:
return tx_from_any(txt)
return tx_from_any(data)
except BaseException as e:
self.show_critical(_("Electrum was unable to parse your transaction") + ":\n" + repr(e))
return
@ -2745,11 +2745,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
self.pay_to_URI(data)
return
# else if the user scanned an offline signed tx
try:
data = bh2u(bitcoin.base_decode(data, length=None, base=43))
except BaseException as e:
self.show_error((_('Could not decode QR code')+':\n{}').format(repr(e)))
return
tx = self.tx_from_text(data)
if not tx:
return

View file

@ -914,7 +914,9 @@ def tx_from_any(raw: Union[str, bytes]) -> Union['PartialTransaction', 'Transact
return PartialTransaction.from_raw_psbt(raw)
except BadHeaderMagic:
pass
return Transaction(raw)
tx = Transaction(raw)
tx.deserialize()
return tx
class PSBTGlobalType(IntEnum):