Browse Source

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

master
SomberNight 6 years ago
parent
commit
27df235c26
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 7
      electrum/gui/kivy/main_window.py
  2. 9
      electrum/gui/qt/main_window.py
  3. 4
      electrum/transaction.py

7
electrum/gui/kivy/main_window.py

@ -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:

9
electrum/gui/qt/main_window.py

@ -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

4
electrum/transaction.py

@ -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):

Loading…
Cancel
Save