From 65d3a9ffa157c22c2e4b3ad77589aa266e38aec0 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Wed, 12 Feb 2025 16:53:17 +0100 Subject: [PATCH] allow multisig descriptor with root keys (cherry picked from commit 6c91bd732890366a25dfab59e78b7720488bca9e) --- releases/Next-ChangeLog.md | 1 + testing/test_multisig.py | 137 +++++++++++++++++++++++++++++++------ 2 files changed, 118 insertions(+), 20 deletions(-) diff --git a/releases/Next-ChangeLog.md b/releases/Next-ChangeLog.md index c5d1fa44..03d9b4c3 100644 --- a/releases/Next-ChangeLog.md +++ b/releases/Next-ChangeLog.md @@ -37,6 +37,7 @@ This lists the new changes that have not yet been published in a normal release. - Bugfix: Factory-disabled NFC was not recognized correctly. - Bugfix: Be more robust about flash filesystem holding the settings. - Bugfix: Do not include sighash in PSBT input data, if sighash value is `SIGHASH_ALL`. +- Bugfix: Allow to import multisig descriptor with root (m) keys in it. Thanks [@turkycat](https://github.com/turkycat) - Change: Do not purge settings of current active tmp seed when deleting it from Seed Vault. - Change: Rename Testnet3 -> Testnet4 (all parameters unchanged). diff --git a/testing/test_multisig.py b/testing/test_multisig.py index a823c4d3..ee347909 100644 --- a/testing/test_multisig.py +++ b/testing/test_multisig.py @@ -99,6 +99,19 @@ def make_multisig(dev, sim_execfile): # - but can provide str format for deriviation, use {idx} for cosigner idx def doit(M, N, unique=0, deriv=None, dev_key=False, chain="XTN"): + + def _derive(master, origin_der, idx): + if origin_der == "m": + return master + + d = origin_der.format(idx=idx) if origin_der else "m/45h" + try: + child = master.subkey_for_path(d) + except IndexError: + # some test cases are using bogus paths + child = master + return child + keys = [] for i in range(N-1): @@ -106,16 +119,7 @@ def make_multisig(dev, sim_execfile): xfp = unpack("