mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
Backport of some of BIP66's tests
This commit is contained in:
parent
ab03660824
commit
989d49921b
@ -330,5 +330,45 @@
|
|||||||
["0 0x01 0x50", "HASH160 0x14 0xece424a6bb6ddf4db592c0faed60685047a361b1 EQUAL", "OP_RESERVED in P2SH should fail"],
|
["0 0x01 0x50", "HASH160 0x14 0xece424a6bb6ddf4db592c0faed60685047a361b1 EQUAL", "OP_RESERVED in P2SH should fail"],
|
||||||
["0 0x01 VER", "HASH160 0x14 0x0f4d7845db968f2a81b530b6f3c1d6246d4c7e01 EQUAL", "OP_VER in P2SH should fail"],
|
["0 0x01 VER", "HASH160 0x14 0x0f4d7845db968f2a81b530b6f3c1d6246d4c7e01 EQUAL", "OP_VER in P2SH should fail"],
|
||||||
|
|
||||||
|
["0x4a 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0 CHECKSIG NOT", "DERSIG", "Overly long signature is incorrectly encoded for DERSIG"],
|
||||||
|
["0x25 0x30220220000000000000000000000000000000000000000000000000000000000000000000", "0 CHECKSIG NOT", "DERSIG", "Missing S is incorrectly encoded for DERSIG"],
|
||||||
|
["0x27 0x3024021077777777777777777777777777777777020a7777777777777777777777777777777701", "0 CHECKSIG NOT", "DERSIG", "S with invalid S length is incorrectly encoded for DERSIG"],
|
||||||
|
["0x27 0x302403107777777777777777777777777777777702107777777777777777777777777777777701", "0 CHECKSIG NOT", "DERSIG", "Non-integer R is incorrectly encoded for DERSIG"],
|
||||||
|
["0x27 0x302402107777777777777777777777777777777703107777777777777777777777777777777701", "0 CHECKSIG NOT", "DERSIG", "Non-integer S is incorrectly encoded for DERSIG"],
|
||||||
|
["0x17 0x3014020002107777777777777777777777777777777701", "0 CHECKSIG NOT", "DERSIG", "Zero-length R is incorrectly encoded for DERSIG"],
|
||||||
|
["0x17 0x3014021077777777777777777777777777777777020001", "0 CHECKSIG NOT", "DERSIG", "Zero-length S is incorrectly encoded for DERSIG"],
|
||||||
|
["0x27 0x302402107777777777777777777777777777777702108777777777777777777777777777777701", "0 CHECKSIG NOT", "DERSIG", "Negative S is incorrectly encoded for DERSIG"],
|
||||||
|
|
||||||
|
[
|
||||||
|
"0x47 0x30440220003040725f724b0e2142fc44ac71f6e13161f6410aeb6dee477952ede3b6a6ca022041ff4940ee3d88116ad281d7cc556e1f2c9427d82290bd7974a25addbcd5bede01",
|
||||||
|
"0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG NOT",
|
||||||
|
"DERSIG",
|
||||||
|
"P2PK NOT with bad sig with too much R padding"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0x47 0x30440220003040725f724a0e2142fc44ac71f6e13161f6410aeb6dee477952ede3b6a6ca022041ff4940ee3d88116ad281d7cc556e1f2c9427d82290bd7974a25addbcd5bede01",
|
||||||
|
"0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG NOT",
|
||||||
|
"DERSIG",
|
||||||
|
"P2PK NOT with too much R padding"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0x47 0x304402208e43c0b91f7c1e5bc58e41c8185f8a6086e111b0090187968a86f2822462d3c902200a58f4076b1133b18ff1dc83ee51676e44c60cc608d9534e0df5ace0424fc0be01",
|
||||||
|
"0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG NOT",
|
||||||
|
"DERSIG",
|
||||||
|
"BIP66 example 2, with DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"1",
|
||||||
|
"0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG NOT",
|
||||||
|
"DERSIG",
|
||||||
|
"BIP66 example 6, with DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0 0 0x47 0x30440220afa76a8f60622f813b05711f051c6c3407e32d1b1b70b0576c1f01b54e4c05c702200d58e9df044fd1845cabfbeef6e624ba0401daf7d7e084736f9ff601c3783bf501",
|
||||||
|
"2 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 2 CHECKMULTISIG NOT",
|
||||||
|
"DERSIG",
|
||||||
|
"BIP66 example 10, with DERSIG"
|
||||||
|
],
|
||||||
|
|
||||||
["0x00", "'00' EQUAL", "Basic OP_0 execution"]
|
["0x00", "'00' EQUAL", "Basic OP_0 execution"]
|
||||||
]
|
]
|
||||||
|
@ -426,5 +426,57 @@
|
|||||||
"0x4d 0x4000 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 EQUAL",
|
"0x4d 0x4000 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 EQUAL",
|
||||||
"Basic PUSHDATA1 signedness check"],
|
"Basic PUSHDATA1 signedness check"],
|
||||||
|
|
||||||
|
["0x4a 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0 CHECKSIG NOT", "", "Overly long signature is correctly encoded"],
|
||||||
|
["0x25 0x30220220000000000000000000000000000000000000000000000000000000000000000000", "0 CHECKSIG NOT", "", "Missing S is correctly encoded"],
|
||||||
|
["0x27 0x3024021077777777777777777777777777777777020a7777777777777777777777777777777701", "0 CHECKSIG NOT", "", "S with invalid S length is correctly encoded"],
|
||||||
|
["0x27 0x302403107777777777777777777777777777777702107777777777777777777777777777777701", "0 CHECKSIG NOT", "", "Non-integer R is correctly encoded"],
|
||||||
|
["0x27 0x302402107777777777777777777777777777777703107777777777777777777777777777777701", "0 CHECKSIG NOT", "", "Non-integer S is correctly encoded"],
|
||||||
|
["0x17 0x3014020002107777777777777777777777777777777701", "0 CHECKSIG NOT", "", "Zero-length R is correctly encoded"],
|
||||||
|
["0x17 0x3014021077777777777777777777777777777777020001", "0 CHECKSIG NOT", "", "Zero-length S is correctly encoded"],
|
||||||
|
["0x27 0x302402107777777777777777777777777777777702108777777777777777777777777777777701", "0 CHECKSIG NOT", "", "Negative S is correctly encoded"],
|
||||||
|
|
||||||
|
[
|
||||||
|
"0x47 0x30440220003040725f724b0e2142fc44ac71f6e13161f6410aeb6dee477952ede3b6a6ca022041ff4940ee3d88116ad281d7cc556e1f2c9427d82290bd7974a25addbcd5bede01",
|
||||||
|
"0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 CHECKSIG NOT",
|
||||||
|
"",
|
||||||
|
"P2PK NOT with bad sig with too much R padding but no DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0",
|
||||||
|
"0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG NOT",
|
||||||
|
"",
|
||||||
|
"BIP66 example 4, without DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0",
|
||||||
|
"0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG NOT",
|
||||||
|
"DERSIG",
|
||||||
|
"BIP66 example 4, with DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"1",
|
||||||
|
"0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKSIG NOT",
|
||||||
|
"",
|
||||||
|
"BIP66 example 6, without DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0 0 0x47 0x30440220afa76a8f60622f813b05711f051c6c3407e32d1b1b70b0576c1f01b54e4c05c702200d58e9df044fd1845cabfbeef6e624ba0401daf7d7e084736f9ff601c3783bf501",
|
||||||
|
"2 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 2 CHECKMULTISIG NOT",
|
||||||
|
"",
|
||||||
|
"BIP66 example 10, without DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0 0x47 0x30440220f00a77260d34ec2f0c59621dc710f58169d0ca06df1a88cd4b1f1b97bd46991b02201ee220c7e04f26aed03f94aa97fb09ca5627163bf4ba07e6979972ec737db22601 0",
|
||||||
|
"2 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 2 CHECKMULTISIG NOT",
|
||||||
|
"",
|
||||||
|
"BIP66 example 12, without DERSIG"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"0 0x47 0x30440220f00a77260d34ec2f0c59621dc710f58169d0ca06df1a88cd4b1f1b97bd46991b02201ee220c7e04f26aed03f94aa97fb09ca5627163bf4ba07e6979972ec737db22601 0",
|
||||||
|
"2 0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0x21 0x03363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640 2 CHECKMULTISIG NOT",
|
||||||
|
"DERSIG",
|
||||||
|
"BIP66 example 12, with DERSIG"
|
||||||
|
],
|
||||||
|
|
||||||
["0x00", "SIZE 0 EQUAL", "Basic OP_0 execution"]
|
["0x00", "SIZE 0 EQUAL", "Basic OP_0 execution"]
|
||||||
]
|
]
|
||||||
|
@ -140,8 +140,13 @@ BOOST_AUTO_TEST_CASE(script_valid)
|
|||||||
string scriptPubKeyString = test[1].get_str();
|
string scriptPubKeyString = test[1].get_str();
|
||||||
CScript scriptPubKey = ParseScript(scriptPubKeyString);
|
CScript scriptPubKey = ParseScript(scriptPubKeyString);
|
||||||
|
|
||||||
|
int flagsNow = flags;
|
||||||
|
if (test.size() > 3 && ("," + test[2].get_str() + ",").find(",DERSIG,") != string::npos) {
|
||||||
|
flagsNow |= SCRIPT_VERIFY_DERSIG;
|
||||||
|
}
|
||||||
|
|
||||||
CTransaction tx;
|
CTransaction tx;
|
||||||
BOOST_CHECK_MESSAGE(VerifyScript(scriptSig, scriptPubKey, tx, 0, flags, SIGHASH_NONE), strTest);
|
BOOST_CHECK_MESSAGE(VerifyScript(scriptSig, scriptPubKey, tx, 0, flagsNow, SIGHASH_NONE), strTest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,8 +169,13 @@ BOOST_AUTO_TEST_CASE(script_invalid)
|
|||||||
string scriptPubKeyString = test[1].get_str();
|
string scriptPubKeyString = test[1].get_str();
|
||||||
CScript scriptPubKey = ParseScript(scriptPubKeyString);
|
CScript scriptPubKey = ParseScript(scriptPubKeyString);
|
||||||
|
|
||||||
|
int flagsNow = flags;
|
||||||
|
if (test.size() > 3 && ("," + test[2].get_str() + ",").find(",DERSIG,") != string::npos) {
|
||||||
|
flagsNow |= SCRIPT_VERIFY_DERSIG;
|
||||||
|
}
|
||||||
|
|
||||||
CTransaction tx;
|
CTransaction tx;
|
||||||
BOOST_CHECK_MESSAGE(!VerifyScript(scriptSig, scriptPubKey, tx, 0, flags, SIGHASH_NONE), strTest);
|
BOOST_CHECK_MESSAGE(!VerifyScript(scriptSig, scriptPubKey, tx, 0, flagsNow, SIGHASH_NONE), strTest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user