Merge pull request #610 from fedebuyito/resolves_issue_582

Update encode_qr.py - Fixes #582
This commit is contained in:
Nick Klockenga
2024-12-23 23:02:51 -05:00
committed by GitHub
2 changed files with 23 additions and 7 deletions
+4 -2
View File
@@ -15,7 +15,7 @@ from seedsigner.models.seed import Seed
from seedsigner.models.settings import SettingsConstants from seedsigner.models.settings import SettingsConstants
from urtypes.crypto import PSBT as UR_PSBT from urtypes.crypto import PSBT as UR_PSBT
from urtypes.crypto import Account, HDKey, Output, Keypath, PathComponent, SCRIPT_EXPRESSION_TAG_MAP from urtypes.crypto import Account, HDKey, Output, Keypath, PathComponent, SCRIPT_EXPRESSION_TAG_MAP, CoinInfo
@@ -344,11 +344,13 @@ class UrXpubQrEncoder(BaseFountainQrEncoder, BaseXpubQrEncoder):
return Keypath(arr, self.root.my_fingerprint, len(arr)) return Keypath(arr, self.root.my_fingerprint, len(arr))
origin = derivation_to_keypath(self.derivation) origin = derivation_to_keypath(self.derivation)
self.use_info = None if self.network == SettingsConstants.MAINNET else CoinInfo(type=None, network=1)
self.ur_hdkey = HDKey({ 'key': self.xpub.key.serialize(), self.ur_hdkey = HDKey({ 'key': self.xpub.key.serialize(),
'chain_code': self.xpub.chain_code, 'chain_code': self.xpub.chain_code,
'origin': origin, 'origin': origin,
'parent_fingerprint': self.xpub.fingerprint}) 'parent_fingerprint': self.xpub.fingerprint,
'use_info': self.use_info })
ur_outputs = [] ur_outputs = []
+19 -5
View File
@@ -66,14 +66,28 @@ def test_specter_xpub_qr():
def test_ur_xpub_qr(): def test_ur_xpub_qr():
mnemonic = "obscure bone gas open exotic abuse virus bunker shuffle nasty ship dash" mnemonic = "obscure bone gas open exotic abuse virus bunker shuffle nasty ship dash"
e = UrXpubQrEncoder(
seed=Seed(mnemonic.split(), passphrase="pass"),
network=SettingsConstants.MAINNET,
derivation="m/48h/1h/0h/2h",
qr_density=SettingsConstants.DENSITY__MEDIUM
)
assert e.next_part() == "UR:CRYPTO-ACCOUNT/1-4/LPADAACSKPCYMOMNLGRYHDCKOEADCYSSMECPONAOLYTAADMETAADDLOXAXHDCLAOKSRLNLKPUEGYATHPMNSNIYMUECBY"
assert e.next_part() == "UR:CRYPTO-ACCOUNT/2-4/LPAOAACSKPCYMOMNLGRYHDCKKKGHZMLUZORPVDGUOTECSTTKTOLPCWPTNTLKZTTIZTBEAAHDCXVDTPMYRSTDMOPSCXFZ"
assert e.next_part() == "UR:CRYPTO-ACCOUNT/3-4/LPAXAACSKPCYMOMNLGRYHDCKSPZSBZSPGERLGDATUYNLPYBTGYIYYKBTWTAOSWKSVTSGCHBYDKYAVDAMTAADMONDGDFD"
assert e.next_part() == "UR:CRYPTO-ACCOUNT/4-4/LPAAAACSKPCYMOMNLGRYHDCKDYOTADLOCSDYYKADYKAEYKAOYKAOCYSSMECPONAXAAAYCYIOREKKJKAEAEAEWZWDMYON"
e = UrXpubQrEncoder( e = UrXpubQrEncoder(
seed=Seed(mnemonic.split(), passphrase="pass"), seed=Seed(mnemonic.split(), passphrase="pass"),
network=SettingsConstants.TESTNET, network=SettingsConstants.TESTNET,
derivation="m/48h/1h/0h/2h", derivation="m/48h/1h/0h/2h",
qr_density=SettingsConstants.DENSITY__MEDIUM qr_density=SettingsConstants.DENSITY__MEDIUM
) )
assert e.next_part() == "UR:CRYPTO-ACCOUNT/1-4/LPADAACSKPCYMOMNLGRYHDCKOEADCYSSMECPONAOLYTAADMETAADDLOXAXHDCLAOKSRLNLKPUEGYATHPMNSNIYMUECBY" assert e.next_part() == "UR:CRYPTO-ACCOUNT/1-5/LPADAHCSKECYRTPEDKMOHDCFOEADCYSSMECPONAOLYTAADMETAADDLONAXHDCLAOKSRLNLKPUENSAHBTHS"
assert e.next_part() == "UR:CRYPTO-ACCOUNT/2-4/LPAOAACSKPCYMOMNLGRYHDCKKKGHZMLUZORPVDGUOTECSTTKTOLPCWPTNTLKZTTIZTBEAAHDCXVDTPMYRSTDMOPSCXFZ" assert e.next_part() == "UR:CRYPTO-ACCOUNT/2-5/LPAOAHCSKECYRTPEDKMOHDCFGYATHPMNSNKKGHZMLUZORPVDGUOTECSTTKTOLPCWPTNTLKZTTIZTNDJSCF"
assert e.next_part() == "UR:CRYPTO-ACCOUNT/3-4/LPAXAACSKPCYMOMNLGRYHDCKSPZSBZSPGERLGDATUYNLPYBTGYIYYKBTWTAOSWKSVTSGCHBYDKYAVDAMTAADMONDGDFD" assert e.next_part() == "UR:CRYPTO-ACCOUNT/3-5/LPAXAHCSKECYRTPEDKMOHDCFZTBEAAHDCXVDTPMYRSTDSPZSBZSPGERLGDATUYNLPYBTGYIYYKBDFGWPKE"
assert e.next_part() == "UR:CRYPTO-ACCOUNT/4-4/LPAAAACSKPCYMOMNLGRYHDCKDYOTADLOCSDYYKADYKAEYKAOYKAOCYSSMECPONAXAAAYCYIOREKKJKAEAEAEWZWDMYON" assert e.next_part() == "UR:CRYPTO-ACCOUNT/4-5/LPAAAHCSKECYRTPEDKMOHDCFBTWTAOSWKSVTSGCHBYDKYAVDAHTAADEHOYAOADAMTAADDYOTADGYBKBWFE"
assert e.next_part() == "UR:CRYPTO-ACCOUNT/5-5/LPAHAHCSKECYRTPEDKMOHDCFLOCSDYYKADYKAEYKAOYKAOCYSSMECPONAXAAAYCYIOREKKJKAETODLFYWP"