mirror of
https://github.com/SeedSigner/seedsigner.git
synced 2026-10-06 07:28:24 +00:00
Merge pull request #47 from newtonick/psbt_error_handling
Additional PSBT error handling
This commit is contained in:
@@ -480,11 +480,19 @@ class Controller:
|
||||
if raw_pbst == "nodata":
|
||||
return Path.MAIN_MENU
|
||||
if raw_pbst == "invalid":
|
||||
self.menu_view.draw_modal(["QR Format Unexpected", "Check Wallet in Settings"], "", "RIGHT to EXIT")
|
||||
self.menu_view.draw_modal(["QR Format Unexpected", "Check Wallet in Settings"], "", "Right to Exit")
|
||||
input = self.buttons.wait_for([B.KEY_RIGHT])
|
||||
return Path.MAIN_MENU
|
||||
if raw_pbst == "invalidpsbt":
|
||||
self.menu_view.draw_modal(["PSBT UR 2.0 Decoding Error", "try again"], "", "Right to Exit")
|
||||
input = self.buttons.wait_for([B.KEY_RIGHT])
|
||||
return Path.MAIN_MENU
|
||||
self.menu_view.draw_modal(["Parsing PSBT ..."])
|
||||
self.wallet.parse_psbt(raw_pbst)
|
||||
parse_status = self.wallet.parse_psbt(raw_pbst)
|
||||
if parse_status == False:
|
||||
self.menu_view.draw_modal(["PSBT Parsing Failed"], "", "Right to Exit")
|
||||
input = self.buttons.wait_for([B.KEY_RIGHT])
|
||||
return Path.MAIN_MENU
|
||||
|
||||
# show transaction information before sign
|
||||
self.signing_tools_view.display_transaction_information(self.wallet)
|
||||
|
||||
@@ -124,7 +124,7 @@ class BlueWallet(Wallet):
|
||||
def set_qr_density(self, density):
|
||||
self.cur_qr_density = density
|
||||
if density == Wallet.QRLOW:
|
||||
self.qrsize = 70
|
||||
self.qrsize = 20
|
||||
elif density == Wallet.QRMEDIUM:
|
||||
self.qrsize = 100
|
||||
elif density == Wallet.QRHIGH:
|
||||
|
||||
@@ -34,10 +34,12 @@ class SparrowWallet(Wallet):
|
||||
return "Sparrow"
|
||||
|
||||
def parse_psbt(self, raw_psbt) -> bool:
|
||||
base64_psbt = a2b_base64(raw_psbt)
|
||||
self.tx = psbt.PSBT.parse(base64_psbt)
|
||||
|
||||
self._parse_psbt()
|
||||
try:
|
||||
base64_psbt = a2b_base64(raw_psbt)
|
||||
self.tx = psbt.PSBT.parse(base64_psbt)
|
||||
self._parse_psbt()
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@@ -103,7 +105,11 @@ class SparrowWallet(Wallet):
|
||||
self.qr_data = ["empty"]
|
||||
|
||||
# get data and percentage
|
||||
self.ur_decoder.receive_part(data[0])
|
||||
decoder_work_check = self.ur_decoder.receive_part(data[0])
|
||||
if decoder_work_check == False:
|
||||
self.qr_data = ["invalidpsbt"]
|
||||
self.buttons.trigger_override() # something went wrong, invalid QR
|
||||
return
|
||||
self.percentage_complete = self.ur_decoder.estimated_percent_complete()
|
||||
|
||||
# checking if all frames has been captured, exit camera processing
|
||||
|
||||
@@ -21,11 +21,12 @@ class SpecterDesktopWallet(Wallet):
|
||||
return "Specter Desktop"
|
||||
|
||||
def parse_psbt(self, raw_psbt) -> bool:
|
||||
|
||||
base64_psbt = a2b_base64(raw_psbt)
|
||||
self.tx = psbt.PSBT.parse(base64_psbt)
|
||||
|
||||
self._parse_psbt()
|
||||
try:
|
||||
base64_psbt = a2b_base64(raw_psbt)
|
||||
self.tx = psbt.PSBT.parse(base64_psbt)
|
||||
self._parse_psbt()
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user