Make empty byte arrays pass CheckSignatureEncoding()
Makes it possible to compactly provide a delibrately invalid signature for use with CHECK(MULTI)SIG. For instance with BIP19 if m != n invalid signatures need to be provided in the scriptSig; prior to this change those invalid signatures would need to be large DER-encoded signatures. Note that we may want to further expand on this change in the future by saying that only OP_0 is a "valid" invalid signature; BIP19 even with this change is inherently malleable as the invalid signatures can be any validly encoded DER signature.
This commit is contained in:
@@ -662,6 +662,11 @@
|
||||
["0 0 0x02 0x0000", "CHECKMULTISIGVERIFY 1", ""],
|
||||
["0 0x02 0x0000 0", "CHECKMULTISIGVERIFY 1", ""],
|
||||
|
||||
["While not really correctly DER encoded, the empty signature is allowed by"],
|
||||
["STRICTENC to provide a compact way to provide a delibrately invalid signature."],
|
||||
["0", "0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 CHECKSIG NOT", "STRICTENC"],
|
||||
["0 0", "1 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 1 CHECKMULTISIG NOT", "STRICTENC"],
|
||||
|
||||
["CHECKMULTISIG evaluation order tests. CHECKMULTISIG evaluates signatures and"],
|
||||
["pubkeys in a specific order, and will exit early if the number of signatures"],
|
||||
["left to check is greater than the number of keys left. As STRICTENC fails the"],
|
||||
|
||||
Reference in New Issue
Block a user