From 175740991e0081c35f471cd7f1ad067e3e1f978f Mon Sep 17 00:00:00 2001 From: Greg Sanders Date: Thu, 17 Apr 2025 15:12:22 -0400 Subject: [PATCH] test: cover invalid codesep positions for signature in taproot --- test/functional/feature_taproot.py | 4 +++- test/functional/test_framework/script.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/functional/feature_taproot.py b/test/functional/feature_taproot.py index 68c2c2e5015..1eb857baea5 100755 --- a/test/functional/feature_taproot.py +++ b/test/functional/feature_taproot.py @@ -409,7 +409,7 @@ DEFAULT_CONTEXT = { # The annex (only when mode=="taproot"). "annex": None, # The codeseparator position (only when mode=="taproot"). - "codeseppos": -1, + "codeseppos": 0xffffffff, # The redeemscript to add to the scriptSig (if P2SH; None implies not P2SH). "script_p2sh": None, # The script to add to the witness in (if P2WSH; None implies P2WPKH) @@ -749,6 +749,8 @@ def spenders_taproot_active(): tap = taproot_construct(pubs[0], scripts) add_spender(spenders, "sighash/pk_codesep", tap=tap, leaf="pk_codesep", key=secs[1], **common, **SINGLE_SIG, **SIGHASH_BITFLIP, **ERR_SIG_SCHNORR) add_spender(spenders, "sighash/codesep_pk", tap=tap, leaf="codesep_pk", key=secs[1], codeseppos=0, **common, **SINGLE_SIG, **SIGHASH_BITFLIP, **ERR_SIG_SCHNORR) + add_spender(spenders, "sighash/codesep_pk_wrongpos1", tap=tap, leaf="codesep_pk", key=secs[1], codeseppos=0, **common, **SINGLE_SIG, failure={"codeseppos": 1}, **ERR_SIG_SCHNORR) + add_spender(spenders, "sighash/codesep_pk_wrongpos2", tap=tap, leaf="codesep_pk", key=secs[1], codeseppos=0, **common, **SINGLE_SIG, failure={"codeseppos": 0xfffffffe}, **ERR_SIG_SCHNORR) add_spender(spenders, "sighash/branched_codesep/left", tap=tap, leaf="branched_codesep", key=secs[0], codeseppos=3, **common, inputs=[getter("sign"), b'\x01'], **SIGHASH_BITFLIP, **ERR_SIG_SCHNORR) add_spender(spenders, "sighash/branched_codesep/right", tap=tap, leaf="branched_codesep", key=secs[1], codeseppos=6, **common, inputs=[getter("sign"), b''], **SIGHASH_BITFLIP, **ERR_SIG_SCHNORR) diff --git a/test/functional/test_framework/script.py b/test/functional/test_framework/script.py index 12bfee7c776..174e254b5ff 100644 --- a/test/functional/test_framework/script.py +++ b/test/functional/test_framework/script.py @@ -848,7 +848,7 @@ def TaprootSignatureMsg(txTo, spent_utxos, hash_type, input_index=0, *, scriptpa if scriptpath: ss += TaggedHash("TapLeaf", bytes([leaf_ver]) + ser_string(leaf_script)) ss += bytes([0]) - ss += codeseparator_pos.to_bytes(4, "little", signed=True) + ss += codeseparator_pos.to_bytes(4, "little", signed=False) assert len(ss) == 175 - (in_type == SIGHASH_ANYONECANPAY) * 49 - (out_type != SIGHASH_ALL and out_type != SIGHASH_SINGLE) * 32 + (annex is not None) * 32 + scriptpath * 37 return ss