diff --git a/src/seedsigner/models/decode_qr.py b/src/seedsigner/models/decode_qr.py index 0118e8fe..7578ea9d 100644 --- a/src/seedsigner/models/decode_qr.py +++ b/src/seedsigner/models/decode_qr.py @@ -212,7 +212,7 @@ def get_percent_complete(self) -> int: if not self.decoder: return 0 - if self.qr_type in [QRType.PSBT__UR2, QRType.OUTPUT__UR, QRType.ACCOUNT__UR]: + if self.qr_type in [QRType.PSBT__UR2, QRType.OUTPUT__UR, QRType.ACCOUNT__UR, QRType.BYTES__UR]: return int(self.decoder.estimated_percent_complete() * 100) elif self.qr_type in [QRType.PSBT__SPECTER]: @@ -278,7 +278,8 @@ def is_wallet_descriptor(self): if self.qr_type in [QRType.BYTES__UR]: cbor = self.decoder.result_message().cbor raw = Bytes.from_cbor(cbor).data - check = 'multisig setup file' in raw.decode("utf-8").lower() + data = raw.decode("utf-8").lower() + check = 'policy:' in data and "format:" in data and "derivation:" in data return check @@ -572,7 +573,7 @@ def multisig_setup_file_to_descriptor(text) -> str: descriptor += ',[' + x['xfp'] + derivation + "]" + x['key'] + "/{0,1}/*" descriptor += script_close - + return descriptor class BaseQrDecoder: diff --git a/src/seedsigner/views/scan_views.py b/src/seedsigner/views/scan_views.py index 771aa10c..1376cf1d 100644 --- a/src/seedsigner/views/scan_views.py +++ b/src/seedsigner/views/scan_views.py @@ -79,6 +79,7 @@ def run(self): if not descriptor.is_basic_multisig: # TODO: Handle single-sig descriptors? + print(f"Received single sig descriptor: {descriptor}") return Destination(NotYetImplementedView) self.controller.multisig_wallet_descriptor = descriptor