mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-20 14:05:23 +01:00
tests: abstract out precomputed BIP341 signature hash elements
This commit is contained in:
parent
a5bde018b4
commit
c98c53f20c
1 changed files with 20 additions and 5 deletions
|
@ -755,6 +755,21 @@ class TestFrameworkScript(unittest.TestCase):
|
|||
for value in values:
|
||||
self.assertEqual(CScriptNum.decode(CScriptNum.encode(CScriptNum(value))), value)
|
||||
|
||||
def BIP341_sha_prevouts(txTo):
|
||||
return sha256(b"".join(i.prevout.serialize() for i in txTo.vin))
|
||||
|
||||
def BIP341_sha_amounts(spent_utxos):
|
||||
return sha256(b"".join(struct.pack("<q", u.nValue) for u in spent_utxos))
|
||||
|
||||
def BIP341_sha_scriptpubkeys(spent_utxos):
|
||||
return sha256(b"".join(ser_string(u.scriptPubKey) for u in spent_utxos))
|
||||
|
||||
def BIP341_sha_sequences(txTo):
|
||||
return sha256(b"".join(struct.pack("<I", i.nSequence) for i in txTo.vin))
|
||||
|
||||
def BIP341_sha_outputs(txTo):
|
||||
return sha256(b"".join(o.serialize() for o in txTo.vout))
|
||||
|
||||
def TaprootSignatureMsg(txTo, spent_utxos, hash_type, input_index = 0, scriptpath = False, script = CScript(), codeseparator_pos = -1, annex = None, leaf_ver = LEAF_VERSION_TAPSCRIPT):
|
||||
assert (len(txTo.vin) == len(spent_utxos))
|
||||
assert (input_index < len(txTo.vin))
|
||||
|
@ -765,12 +780,12 @@ def TaprootSignatureMsg(txTo, spent_utxos, hash_type, input_index = 0, scriptpat
|
|||
ss += struct.pack("<i", txTo.nVersion)
|
||||
ss += struct.pack("<I", txTo.nLockTime)
|
||||
if in_type != SIGHASH_ANYONECANPAY:
|
||||
ss += sha256(b"".join(i.prevout.serialize() for i in txTo.vin))
|
||||
ss += sha256(b"".join(struct.pack("<q", u.nValue) for u in spent_utxos))
|
||||
ss += sha256(b"".join(ser_string(u.scriptPubKey) for u in spent_utxos))
|
||||
ss += sha256(b"".join(struct.pack("<I", i.nSequence) for i in txTo.vin))
|
||||
ss += BIP341_sha_prevouts(txTo)
|
||||
ss += BIP341_sha_amounts(spent_utxos)
|
||||
ss += BIP341_sha_scriptpubkeys(spent_utxos)
|
||||
ss += BIP341_sha_sequences(txTo)
|
||||
if out_type == SIGHASH_ALL:
|
||||
ss += sha256(b"".join(o.serialize() for o in txTo.vout))
|
||||
ss += BIP341_sha_outputs(txTo)
|
||||
spend_type = 0
|
||||
if annex is not None:
|
||||
spend_type |= 1
|
||||
|
|
Loading…
Add table
Reference in a new issue