diff --git a/shared/psbt.py b/shared/psbt.py index e275df21..bd06b9ef 100644 --- a/shared/psbt.py +++ b/shared/psbt.py @@ -2906,9 +2906,11 @@ class psbtObject(psbtProxy): if inp.part_sigs: for k, _ in inp.part_sigs: done_keys.add(self.get(k)) + if inp.added_sigs: for k, _ in inp.added_sigs: - done_keys.add(k) + done_keys.add(self.get(k)) + for k, v in inp.subpaths: if self.get(k) not in done_keys: xfp = self.handle_zero_xfp(self.parse_xfp_path(v), self.my_xfp, None)[0] diff --git a/testing/test_teleport.py b/testing/test_teleport.py index a9173f46..c4a339a8 100644 --- a/testing/test_teleport.py +++ b/testing/test_teleport.py @@ -752,7 +752,8 @@ def test_teleport_miniscript_sign(dev, taproot, policy, get_cc_key, bitcoind, us clear_miniscript, set_bip39_pw, press_select, pick_menu_item, need_keypress, offer_minsc_import, load_export, reset_seed_words, cap_story, cap_menu, grab_payload, sim_root_dir, rx_complete, - settings_set, try_sign, settings_get, press_cancel, keys): + settings_set, try_sign, settings_get, press_cancel, keys, + cap_screen): reset_seed_words() use_regtest() @@ -885,6 +886,9 @@ def test_teleport_miniscript_sign(dev, taproot, policy, get_cc_key, bitcoind, us unsigned = [ln[1:9] for ln in m if (my_xfp not in ln) and ('DONE' not in ln)] assert unsigned + # make sure we have checkmark after YOU because self has signed + assert "YOU \x14\x00" in cap_screen() + # find another signer for idx, k in enumerate(signers): if k[1:9].upper() in unsigned: diff --git a/testing/txn.py b/testing/txn.py index 1d6a7d31..b9be45f3 100644 --- a/testing/txn.py +++ b/testing/txn.py @@ -238,7 +238,8 @@ def fake_txn(dev, pytestconfig): rv = BytesIO() psbt.serialize(rv) - assert rv.tell() <= MAX_TXN_LEN, 'too fat' + pos = rv.tell() + assert pos <= MAX_TXN_LEN, 'too fat %d' % pos return rv.getvalue()