diff --git a/shared/export.py b/shared/export.py index 975c2011..e4eb144e 100644 --- a/shared/export.py +++ b/shared/export.py @@ -284,14 +284,15 @@ def generate_generic_export(account_num=0): ]: dd = deriv.format(ct=chain.b44_cointype, acc=account_num) node = sv.derive_path(dd) + xfp = xfp2str(node.my_fingerprint()) xp = chain.serialize_public(node, AF_CLASSIC) zp = chain.serialize_public(node, fmt) if fmt != AF_CLASSIC else None - # bonus/check: first address: 0/0 + # bonus/check: first non-change address: 0/0 node.derive(0) node.derive(0) - rv[name] = dict(deriv=dd, xpub=xp, first=chain.address(node, fmt), name=atype) + rv[name] = dict(deriv=dd, xpub=xp, xfp=xfp, first=chain.address(node, fmt), name=atype) if zp: rv[name]['_pub'] = zp diff --git a/testing/test_export.py b/testing/test_export.py index 354a4c60..4ffdd14b 100644 --- a/testing/test_export.py +++ b/testing/test_export.py @@ -251,12 +251,14 @@ def test_export_coldcard(acct_num, dev, cap_menu, pick_menu_item, goto_home, cap for fn in ['xfp', 'xpub', 'chain']: assert fn in obj assert obj[fn] + assert obj['account'] == int(acct_num or 0) for fn in ['bip44', 'bip49', 'bip84']: assert fn in obj v = obj[fn] - assert all([i in v for i in ['deriv', 'name', 'first', 'xpub']]) + assert all([i in v for i in ['deriv', 'name', 'first', 'xpub', 'xfp']]) + assert v['deriv'].endswith(f"'/{acct_num}'") node = BIP32Node.from_wallet_key(v['xpub']) first = node.subkey_for_path('0/0')