Changeset View
Changeset View
Standalone View
Standalone View
src/test/script_tests.cpp
Show First 20 Lines • Show All 1,165 Lines • ▼ Show 20 Lines | tests.push_back( | ||||
false, TEST_AMOUNT) | false, TEST_AMOUNT) | ||||
.PushSigECDSA(keys.key0, SigHashType().withForkId(), 32, 32, | .PushSigECDSA(keys.key0, SigHashType().withForkId(), 32, 32, | ||||
TEST_AMOUNT, SCRIPT_ENABLE_SIGHASH_FORKID) | TEST_AMOUNT, SCRIPT_ENABLE_SIGHASH_FORKID) | ||||
.ScriptError(SCRIPT_ERR_EVAL_FALSE)); | .ScriptError(SCRIPT_ERR_EVAL_FALSE)); | ||||
// Test OP_CHECKDATASIG | // Test OP_CHECKDATASIG | ||||
const uint32_t checkdatasigflags = SCRIPT_VERIFY_STRICTENC | | const uint32_t checkdatasigflags = SCRIPT_VERIFY_STRICTENC | | ||||
SCRIPT_VERIFY_NULLFAIL | | SCRIPT_VERIFY_NULLFAIL | | ||||
SCRIPT_ENABLE_CHECKDATASIG; | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS; | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, | TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, | ||||
"Standard CHECKDATASIG", checkdatasigflags) | "Standard CHECKDATASIG", checkdatasigflags) | ||||
.PushDataSigECDSA(keys.key1, {}) | .PushDataSigECDSA(keys.key1, {}) | ||||
.Num(0)); | .Num(0)); | ||||
tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) | tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) | ||||
<< OP_CHECKDATASIG << OP_NOT, | << OP_CHECKDATASIG << OP_NOT, | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | tests.push_back( | ||||
"CHECKDATASIG with hybrid pubkey", checkdatasigflags) | "CHECKDATASIG with hybrid pubkey", checkdatasigflags) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.Num(0) | .Num(0) | ||||
.ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG | TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG | ||||
<< OP_NOT, | << OP_NOT, | ||||
"CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", | "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.DamagePush(10) | .DamagePush(10) | ||||
.Num(0)); | .Num(0)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, | TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, | ||||
"CHECKDATASIG with invalid hybrid pubkey", | "CHECKDATASIG with invalid hybrid pubkey", | ||||
checkdatasigflags) | checkdatasigflags) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
▲ Show 20 Lines • Show All 73 Lines • ▼ Show 20 Lines | tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.Num(0) | .Num(0) | ||||
.ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder( | TestBuilder( | ||||
CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY | CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY | ||||
<< OP_TRUE, | << OP_TRUE, | ||||
"CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", | "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.DamagePush(10) | .DamagePush(10) | ||||
.Num(0) | .Num(0) | ||||
.ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | ||||
tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) | tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) | ||||
<< OP_CHECKDATASIGVERIFY << OP_TRUE, | << OP_CHECKDATASIGVERIFY << OP_TRUE, | ||||
"CHECKDATASIGVERIFY with invalid hybrid pubkey", | "CHECKDATASIGVERIFY with invalid hybrid pubkey", | ||||
checkdatasigflags) | checkdatasigflags) | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | tests.push_back( | ||||
"STRICTENC-violating hybrid pubkey with Schnorr flag on", | "STRICTENC-violating hybrid pubkey with Schnorr flag on", | ||||
SCRIPT_VERIFY_STRICTENC | SCRIPT_ENABLE_SCHNORR) | SCRIPT_VERIFY_STRICTENC | SCRIPT_ENABLE_SCHNORR) | ||||
.PushSigECDSA(keys.key0, SigHashType()) | .PushSigECDSA(keys.key0, SigHashType()) | ||||
.ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | ||||
// Duplicated test OP_CHECKDATASIG with Schnorr flag on | // Duplicated test OP_CHECKDATASIG with Schnorr flag on | ||||
const uint32_t checkdatasigschnorrflags = | const uint32_t checkdatasigschnorrflags = | ||||
SCRIPT_VERIFY_STRICTENC | SCRIPT_VERIFY_NULLFAIL | | SCRIPT_VERIFY_STRICTENC | SCRIPT_VERIFY_NULLFAIL | | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR; | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_ENABLE_SCHNORR; | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, | TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, | ||||
"Standard CHECKDATASIG", checkdatasigschnorrflags) | "Standard CHECKDATASIG", checkdatasigschnorrflags) | ||||
.PushDataSigECDSA(keys.key1, {}) | .PushDataSigECDSA(keys.key1, {}) | ||||
.Num(0)); | .Num(0)); | ||||
tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) | tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) | ||||
<< OP_CHECKDATASIG << OP_NOT, | << OP_CHECKDATASIG << OP_NOT, | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | tests.push_back( | ||||
"CHECKDATASIG with hybrid pubkey", checkdatasigschnorrflags) | "CHECKDATASIG with hybrid pubkey", checkdatasigschnorrflags) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.Num(0) | .Num(0) | ||||
.ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG | TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG | ||||
<< OP_NOT, | << OP_NOT, | ||||
"CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", | "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.DamagePush(10) | .DamagePush(10) | ||||
.Num(0)); | .Num(0)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, | TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, | ||||
"CHECKDATASIG with invalid hybrid pubkey", | "CHECKDATASIG with invalid hybrid pubkey", | ||||
checkdatasigschnorrflags) | checkdatasigschnorrflags) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.Num(0) | .Num(0) | ||||
.ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder( | TestBuilder( | ||||
CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY | CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY | ||||
<< OP_TRUE, | << OP_TRUE, | ||||
"CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", | "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigECDSA(keys.key0, {}) | .PushDataSigECDSA(keys.key0, {}) | ||||
.DamagePush(10) | .DamagePush(10) | ||||
.Num(0) | .Num(0) | ||||
.ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | ||||
tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) | tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) | ||||
<< OP_CHECKDATASIGVERIFY << OP_TRUE, | << OP_CHECKDATASIGVERIFY << OP_TRUE, | ||||
"CHECKDATASIGVERIFY with invalid hybrid pubkey", | "CHECKDATASIGVERIFY with invalid hybrid pubkey", | ||||
checkdatasigschnorrflags) | checkdatasigschnorrflags) | ||||
▲ Show 20 Lines • Show All 109 Lines • ▼ Show 20 Lines | tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0) | ||||
.PushSigSchnorr(keys.key1) | .PushSigSchnorr(keys.key1) | ||||
.ScriptError(SCRIPT_ERR_CHECKSIGVERIFY)); | .ScriptError(SCRIPT_ERR_CHECKSIGVERIFY)); | ||||
// CHECKDATASIG | // CHECKDATASIG | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG Schnorr w/ neither STRICTENC,SCHNORR", | "CHECKDATASIG Schnorr w/ neither STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigSchnorr(keys.key0, {}) | .PushDataSigSchnorr(keys.key0, {}) | ||||
.ScriptError(SCRIPT_ERR_EVAL_FALSE)); | .ScriptError(SCRIPT_ERR_EVAL_FALSE)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG ECDSA w/ neither STRICTENC,SCHNORR", | "CHECKDATASIG ECDSA w/ neither STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG Schnorr w/ SCHNORR", | "CHECKDATASIG Schnorr w/ SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_ENABLE_SCHNORR) | ||||
.PushDataSigSchnorr(keys.key0, {})); | .PushDataSigSchnorr(keys.key0, {})); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG ECDSA w/ SCHNORR", | "CHECKDATASIG ECDSA w/ SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_ENABLE_SCHNORR) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG Schnorr w/ STRICTENC", | "CHECKDATASIG Schnorr w/ STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key0, {}) | .PushDataSigSchnorr(keys.key0, {}) | ||||
.ScriptError(SCRIPT_ERR_SIG_DER)); | .ScriptError(SCRIPT_ERR_SIG_DER)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG ECDSA w/ STRICTENC", | "CHECKDATASIG ECDSA w/ STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG Schnorr w/ STRICTENC,SCHNORR", | "CHECKDATASIG Schnorr w/ STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key0, {})); | .PushDataSigSchnorr(keys.key0, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG ECDSA w/ STRICTENC,SCHNORR", | "CHECKDATASIG ECDSA w/ STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG Schnorr other key", | "CHECKDATASIG Schnorr other key", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {})); | .PushDataSigSchnorr(keys.key1, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIG << OP_NOT, | << OP_CHECKDATASIG << OP_NOT, | ||||
"CHECKDATASIG Schnorr mismatched key", | "CHECKDATASIG Schnorr mismatched key", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {})); | .PushDataSigSchnorr(keys.key1, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey1) | tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey1) | ||||
<< OP_CHECKDATASIG, | << OP_CHECKDATASIG, | ||||
"CHECKDATASIG Schnorr other message", | "CHECKDATASIG Schnorr other message", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {1})); | .PushDataSigSchnorr(keys.key1, {1})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | ||||
<< OP_CHECKDATASIG << OP_NOT, | << OP_CHECKDATASIG << OP_NOT, | ||||
"CHECKDATASIG Schnorr wrong message", | "CHECKDATASIG Schnorr wrong message", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {1})); | .PushDataSigSchnorr(keys.key1, {1})); | ||||
// CHECKDATASIGVERIFY | // CHECKDATASIGVERIFY | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr w/ neither STRICTENC,SCHNORR", | "CHECKDATASIGVERIFY Schnorr w/ neither STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigSchnorr(keys.key0, {}) | .PushDataSigSchnorr(keys.key0, {}) | ||||
.ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY ECDSA w/ neither STRICTENC,SCHNORR", | "CHECKDATASIGVERIFY ECDSA w/ neither STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr w/ SCHNORR", | "CHECKDATASIGVERIFY Schnorr w/ SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_ENABLE_SCHNORR) | ||||
.PushDataSigSchnorr(keys.key0, {})); | .PushDataSigSchnorr(keys.key0, {})); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY ECDSA w/ SCHNORR", | "CHECKDATASIGVERIFY ECDSA w/ SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_ENABLE_SCHNORR) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr w/ STRICTENC", | "CHECKDATASIGVERIFY Schnorr w/ STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key0, {}) | .PushDataSigSchnorr(keys.key0, {}) | ||||
.ScriptError(SCRIPT_ERR_SIG_DER)); | .ScriptError(SCRIPT_ERR_SIG_DER)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY ECDSA w/ STRICTENC", | "CHECKDATASIGVERIFY ECDSA w/ STRICTENC", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr w/ STRICTENC,SCHNORR", | "CHECKDATASIGVERIFY Schnorr w/ STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key0, {})); | .PushDataSigSchnorr(keys.key0, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY ECDSA w/ STRICTENC,SCHNORR", | "CHECKDATASIGVERIFY ECDSA w/ STRICTENC,SCHNORR", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigECDSA(keys.key0, {})); | .PushDataSigECDSA(keys.key0, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr other key", | "CHECKDATASIGVERIFY Schnorr other key", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {})); | .PushDataSigSchnorr(keys.key1, {})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr mismatched key", | "CHECKDATASIGVERIFY Schnorr mismatched key", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {}) | .PushDataSigSchnorr(keys.key1, {}) | ||||
.ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | ||||
tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey1) | tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey1) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr other message", | "CHECKDATASIGVERIFY Schnorr other message", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {1})); | .PushDataSigSchnorr(keys.key1, {1})); | ||||
tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) | ||||
<< OP_CHECKDATASIGVERIFY << OP_1, | << OP_CHECKDATASIGVERIFY << OP_1, | ||||
"CHECKDATASIGVERIFY Schnorr wrong message", | "CHECKDATASIGVERIFY Schnorr wrong message", | ||||
SCRIPT_ENABLE_CHECKDATASIG | | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS | | ||||
SCRIPT_ENABLE_SCHNORR | | SCRIPT_ENABLE_SCHNORR | | ||||
SCRIPT_VERIFY_STRICTENC) | SCRIPT_VERIFY_STRICTENC) | ||||
.PushDataSigSchnorr(keys.key1, {1}) | .PushDataSigSchnorr(keys.key1, {1}) | ||||
.ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); | ||||
// CHECKMULTISIG 1-of-1 | // CHECKMULTISIG 1-of-1 | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 | TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 | ||||
▲ Show 20 Lines • Show All 1,235 Lines • Show Last 20 Lines |