diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -262,9 +262,9 @@ havePush = true; } - std::vector DoSign(const CKey &key, const uint256 &hash, - unsigned int lenR = 32, - unsigned int lenS = 32) const { + std::vector DoSignECDSA(const CKey &key, const uint256 &hash, + unsigned int lenR = 32, + unsigned int lenS = 32) const { std::vector vchSig, r, s; uint32_t iter = 0; do { @@ -343,14 +343,14 @@ return *this; } - TestBuilder &PushSig(const CKey &key, - SigHashType sigHashType = SigHashType(), - unsigned int lenR = 32, unsigned int lenS = 32, - Amount amount = Amount::zero(), - uint32_t sigFlags = SCRIPT_ENABLE_SIGHASH_FORKID) { + TestBuilder & + PushSigECDSA(const CKey &key, SigHashType sigHashType = SigHashType(), + unsigned int lenR = 32, unsigned int lenS = 32, + Amount amount = Amount::zero(), + uint32_t sigFlags = SCRIPT_ENABLE_SIGHASH_FORKID) { uint256 hash = SignatureHash(script, CTransaction(spendTx), 0, sigHashType, amount, nullptr, sigFlags); - std::vector vchSig = DoSign(key, hash, lenR, lenS); + std::vector vchSig = DoSignECDSA(key, hash, lenR, lenS); vchSig.push_back(static_cast(sigHashType.getRawSigHashType())); DoPush(vchSig); return *this; @@ -368,12 +368,14 @@ return *this; } - TestBuilder &PushDataSig(const CKey &key, const std::vector &data, - unsigned int lenR = 32, unsigned int lenS = 32) { + TestBuilder &PushDataSigECDSA(const CKey &key, + const std::vector &data, + unsigned int lenR = 32, + unsigned int lenS = 32) { std::vector vchHash(32); CSHA256().Write(data.data(), data.size()).Finalize(vchHash.data()); - DoPush(DoSign(key, uint256(vchHash), lenR, lenS)); + DoPush(DoSignECDSA(key, uint256(vchHash), lenR, lenS)); return *this; } @@ -470,11 +472,11 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK", 0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK, bad sig", 0) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .DamagePush(10) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); @@ -482,13 +484,13 @@ << ToByteVector(keys.pubkey1C.GetID()) << OP_EQUALVERIFY << OP_CHECKSIG, "P2PKH", 0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .Push(keys.pubkey1C)); tests.push_back(TestBuilder(CScript() << OP_DUP << OP_HASH160 << ToByteVector(keys.pubkey2C.GetID()) << OP_EQUALVERIFY << OP_CHECKSIG, "P2PKH, bad pubkey", 0) - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .Push(keys.pubkey2C) .DamagePush(5) .ScriptError(SCRIPT_ERR_EQUALVERIFY)); @@ -496,23 +498,23 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG, "P2PK anyonecanpay", 0) - .PushSig(keys.key1, SigHashType().withAnyoneCanPay())); + .PushSigECDSA(keys.key1, SigHashType().withAnyoneCanPay())); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG, "P2PK anyonecanpay marked with normal hashtype", 0) - .PushSig(keys.key1, SigHashType().withAnyoneCanPay()) + .PushSigECDSA(keys.key1, SigHashType().withAnyoneCanPay()) .EditPush(70, "81", "01") .ScriptError(SCRIPT_ERR_EVAL_FALSE)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0C) << OP_CHECKSIG, "P2SH(P2PK)", SCRIPT_VERIFY_P2SH, true) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .PushRedeem()); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0C) << OP_CHECKSIG, "P2SH(P2PK), bad redeemscript", SCRIPT_VERIFY_P2SH, true) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .PushRedeem() .DamagePush(10) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); @@ -521,7 +523,7 @@ << ToByteVector(keys.pubkey0.GetID()) << OP_EQUALVERIFY << OP_CHECKSIG, "P2SH(P2PKH)", SCRIPT_VERIFY_P2SH, true) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .Push(keys.pubkey0) .PushRedeem()); tests.push_back(TestBuilder(CScript() << OP_DUP << OP_HASH160 @@ -529,7 +531,7 @@ << OP_EQUALVERIFY << OP_CHECKSIG, "P2SH(P2PKH), bad sig but no VERIFY_P2SH", 0, true) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .DamagePush(10) .PushRedeem()); tests.push_back(TestBuilder(CScript() << OP_DUP << OP_HASH160 @@ -537,7 +539,7 @@ << OP_EQUALVERIFY << OP_CHECKSIG, "P2SH(P2PKH), bad sig", SCRIPT_VERIFY_P2SH, true) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .DamagePush(10) .PushRedeem() .ScriptError(SCRIPT_ERR_EQUALVERIFY)); @@ -548,17 +550,17 @@ << OP_CHECKMULTISIG, "3-of-3", 0) .Num(0) - .PushSig(keys.key0) - .PushSig(keys.key1) - .PushSig(keys.key2)); + .PushSigECDSA(keys.key0) + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key2)); tests.push_back(TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey2C) << OP_3 << OP_CHECKMULTISIG, "3-of-3, 2 sigs", 0) .Num(0) - .PushSig(keys.key0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key0) + .PushSigECDSA(keys.key1) .Num(0) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); @@ -568,8 +570,8 @@ << OP_CHECKMULTISIG, "P2SH(2-of-3)", SCRIPT_VERIFY_P2SH, true) .Num(0) - .PushSig(keys.key1) - .PushSig(keys.key2) + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key2) .PushRedeem()); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey0C) << ToByteVector(keys.pubkey1C) @@ -577,7 +579,7 @@ << OP_CHECKMULTISIG, "P2SH(2-of-3), 1 sig", SCRIPT_VERIFY_P2SH, true) .Num(0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .Num(0) .PushRedeem() .ScriptError(SCRIPT_ERR_EVAL_FALSE)); @@ -585,50 +587,50 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "P2PK with too much R padding but no DERSIG", 0) - .PushSig(keys.key1, SigHashType(), 31, 32) + .PushSigECDSA(keys.key1, SigHashType(), 31, 32) .EditPush(1, "43021F", "44022000")); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "P2PK with too much R padding", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key1, SigHashType(), 31, 32) + .PushSigECDSA(keys.key1, SigHashType(), 31, 32) .EditPush(1, "43021F", "44022000") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "P2PK with too much S padding but no DERSIG", 0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .EditPush(1, "44", "45") .EditPush(37, "20", "2100")); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "P2PK with too much S padding", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .EditPush(1, "44", "45") .EditPush(37, "20", "2100") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "P2PK with too little R padding but no DERSIG", 0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220")); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "P2PK with too little R padding", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back( TestBuilder( CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG << OP_NOT, "P2PK NOT with bad sig with too much R padding but no DERSIG", 0) - .PushSig(keys.key2, SigHashType(), 31, 32) + .PushSigECDSA(keys.key2, SigHashType(), 31, 32) .EditPush(1, "43021F", "44022000") .DamagePush(10)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG << OP_NOT, "P2PK NOT with bad sig with too much R padding", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key2, SigHashType(), 31, 32) + .PushSigECDSA(keys.key2, SigHashType(), 31, 32) .EditPush(1, "43021F", "44022000") .DamagePush(10) .ScriptError(SCRIPT_ERR_SIG_DER)); @@ -636,39 +638,39 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG << OP_NOT, "P2PK NOT with too much R padding but no DERSIG", 0) - .PushSig(keys.key2, SigHashType(), 31, 32) + .PushSigECDSA(keys.key2, SigHashType(), 31, 32) .EditPush(1, "43021F", "44022000") .ScriptError(SCRIPT_ERR_EVAL_FALSE)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG << OP_NOT, "P2PK NOT with too much R padding", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key2, SigHashType(), 31, 32) + .PushSigECDSA(keys.key2, SigHashType(), 31, 32) .EditPush(1, "43021F", "44022000") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "BIP66 example 1, without DERSIG", 0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220")); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG, "BIP66 example 1, with DERSIG", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG << OP_NOT, "BIP66 example 2, without DERSIG", 0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .ScriptError(SCRIPT_ERR_EVAL_FALSE)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKSIG << OP_NOT, "BIP66 example 2, with DERSIG", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back( @@ -733,27 +735,27 @@ << OP_CHECKMULTISIG, "BIP66 example 7, without DERSIG", 0) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") - .PushSig(keys.key2)); + .PushSigECDSA(keys.key2)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey2C) << OP_2 << OP_CHECKMULTISIG, "BIP66 example 7, with DERSIG", SCRIPT_VERIFY_DERSIG) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey2C) << OP_2 << OP_CHECKMULTISIG << OP_NOT, "BIP66 example 8, without DERSIG", 0) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey2C) << OP_2 @@ -761,9 +763,9 @@ "BIP66 example 8, with DERSIG", SCRIPT_VERIFY_DERSIG) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey2C) << OP_2 @@ -771,7 +773,7 @@ "BIP66 example 9, without DERSIG", 0) .Num(0) .Num(0) - .PushSig(keys.key2, SigHashType(), 33, 32) + .PushSigECDSA(keys.key2, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .ScriptError(SCRIPT_ERR_EVAL_FALSE)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) @@ -781,7 +783,7 @@ SCRIPT_VERIFY_DERSIG) .Num(0) .Num(0) - .PushSig(keys.key2, SigHashType(), 33, 32) + .PushSigECDSA(keys.key2, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) @@ -790,7 +792,7 @@ "BIP66 example 10, without DERSIG", 0) .Num(0) .Num(0) - .PushSig(keys.key2, SigHashType(), 33, 32) + .PushSigECDSA(keys.key2, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220")); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey2C) << OP_2 @@ -799,7 +801,7 @@ SCRIPT_VERIFY_DERSIG) .Num(0) .Num(0) - .PushSig(keys.key2, SigHashType(), 33, 32) + .PushSigECDSA(keys.key2, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) @@ -807,7 +809,7 @@ << OP_CHECKMULTISIG, "BIP66 example 11, without DERSIG", 0) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .Num(0) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); @@ -817,7 +819,7 @@ "BIP66 example 11, with DERSIG", SCRIPT_VERIFY_DERSIG) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .Num(0) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); @@ -826,7 +828,7 @@ << OP_CHECKMULTISIG << OP_NOT, "BIP66 example 12, without DERSIG", 0) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .Num(0)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) @@ -835,64 +837,64 @@ "BIP66 example 12, with DERSIG", SCRIPT_VERIFY_DERSIG) .Num(0) - .PushSig(keys.key1, SigHashType(), 33, 32) + .PushSigECDSA(keys.key1, SigHashType(), 33, 32) .EditPush(1, "45022100", "440220") .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2PK with multi-byte hashtype, without DERSIG", 0) - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .EditPush(70, "01", "0101")); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2PK with multi-byte hashtype, with DERSIG", SCRIPT_VERIFY_DERSIG) - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .EditPush(70, "01", "0101") .ScriptError(SCRIPT_ERR_SIG_DER)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2PK with high S but no LOW_S", 0) - .PushSig(keys.key2, SigHashType(), 32, 33)); + .PushSigECDSA(keys.key2, SigHashType(), 32, 33)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2PK with high S", SCRIPT_VERIFY_LOW_S) - .PushSig(keys.key2, SigHashType(), 32, 33) + .PushSigECDSA(keys.key2, SigHashType(), 32, 33) .ScriptError(SCRIPT_ERR_SIG_HIGH_S)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKSIG, "P2PK with hybrid pubkey but no STRICTENC", 0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKSIG, "P2PK with hybrid pubkey", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0, SigHashType()) + .PushSigECDSA(keys.key0, SigHashType()) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKSIG << OP_NOT, "P2PK NOT with hybrid pubkey but no STRICTENC", 0) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKSIG << OP_NOT, "P2PK NOT with hybrid pubkey", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKSIG << OP_NOT, "P2PK NOT with invalid hybrid pubkey but no STRICTENC", 0) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .DamagePush(10)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKSIG << OP_NOT, "P2PK NOT with invalid hybrid pubkey", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .DamagePush(10) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back( @@ -902,48 +904,48 @@ "1-of-2 with the second 1 hybrid pubkey and no STRICTENC", 0) .Num(0) - .PushSig(keys.key1)); + .PushSigECDSA(keys.key1)); tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0H) << ToByteVector(keys.pubkey1C) << OP_2 << OP_CHECKMULTISIG, "1-of-2 with the second 1 hybrid pubkey", SCRIPT_VERIFY_STRICTENC) .Num(0) - .PushSig(keys.key1)); + .PushSigECDSA(keys.key1)); tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey0H) << OP_2 << OP_CHECKMULTISIG, "1-of-2 with the first 1 hybrid pubkey", SCRIPT_VERIFY_STRICTENC) .Num(0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG, "P2PK with undefined hashtype but no STRICTENC", 0) - .PushSig(keys.key1, SigHashType(5))); + .PushSigECDSA(keys.key1, SigHashType(5))); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG, "P2PK with undefined hashtype", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key1, SigHashType(5)) + .PushSigECDSA(keys.key1, SigHashType(5)) .ScriptError(SCRIPT_ERR_SIG_HASHTYPE)); // Generate P2PKH tests for invalid SigHashType - tests.push_back( - TestBuilder(CScript() << OP_DUP << OP_HASH160 - << ToByteVector(keys.pubkey0.GetID()) - << OP_EQUALVERIFY << OP_CHECKSIG, - "P2PKH with invalid sighashtype", 0) - .PushSig(keys.key0, SigHashType(0x21), 32, 32, Amount::zero(), 0) - .Push(keys.pubkey0)); + tests.push_back(TestBuilder(CScript() << OP_DUP << OP_HASH160 + << ToByteVector(keys.pubkey0.GetID()) + << OP_EQUALVERIFY << OP_CHECKSIG, + "P2PKH with invalid sighashtype", 0) + .PushSigECDSA(keys.key0, SigHashType(0x21), 32, 32, + Amount::zero(), 0) + .Push(keys.pubkey0)); tests.push_back(TestBuilder(CScript() << OP_DUP << OP_HASH160 << ToByteVector(keys.pubkey0.GetID()) << OP_EQUALVERIFY << OP_CHECKSIG, "P2PKH with invalid sighashtype and STRICTENC", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0, SigHashType(0x21), 32, 32, - Amount::zero(), SCRIPT_VERIFY_STRICTENC) + .PushSigECDSA(keys.key0, SigHashType(0x21), 32, 32, + Amount::zero(), SCRIPT_VERIFY_STRICTENC) .Push(keys.pubkey0) // Should fail for STRICTENC .ScriptError(SCRIPT_ERR_SIG_HASHTYPE)); @@ -953,13 +955,13 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG, "P2SH(P2PK) with invalid sighashtype", SCRIPT_VERIFY_P2SH, true) - .PushSig(keys.key1, SigHashType(0x21)) + .PushSigECDSA(keys.key1, SigHashType(0x21)) .PushRedeem()); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG, "P2SH(P2PK) with invalid sighashtype and STRICTENC", SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_STRICTENC, true) - .PushSig(keys.key1, SigHashType(0x21)) + .PushSigECDSA(keys.key1, SigHashType(0x21)) .PushRedeem() // Should fail for STRICTENC .ScriptError(SCRIPT_ERR_SIG_HASHTYPE)); @@ -969,14 +971,14 @@ CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG << OP_NOT, "P2PK NOT with invalid sig and undefined hashtype but no STRICTENC", 0) - .PushSig(keys.key1, SigHashType(5)) + .PushSigECDSA(keys.key1, SigHashType(5)) .DamagePush(10)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG << OP_NOT, "P2PK NOT with invalid sig and undefined hashtype", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key1, SigHashType(5)) + .PushSigECDSA(keys.key1, SigHashType(5)) .DamagePush(10) .ScriptError(SCRIPT_ERR_SIG_HASHTYPE)); @@ -986,9 +988,9 @@ << OP_CHECKMULTISIG, "3-of-3 with nonzero dummy but no NULLDUMMY", 0) .Num(1) - .PushSig(keys.key0) - .PushSig(keys.key1) - .PushSig(keys.key2)); + .PushSigECDSA(keys.key0) + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key2)); tests.push_back(TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) << ToByteVector(keys.pubkey1C) << ToByteVector(keys.pubkey2C) << OP_3 @@ -996,9 +998,9 @@ "3-of-3 with nonzero dummy", SCRIPT_VERIFY_NULLDUMMY) .Num(1) - .PushSig(keys.key0) - .PushSig(keys.key1) - .PushSig(keys.key2) + .PushSigECDSA(keys.key0) + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key2) .ScriptError(SCRIPT_ERR_SIG_NULLDUMMY)); tests.push_back( TestBuilder( @@ -1008,9 +1010,9 @@ << OP_NOT, "3-of-3 NOT with invalid sig and nonzero dummy but no NULLDUMMY", 0) .Num(1) - .PushSig(keys.key0) - .PushSig(keys.key1) - .PushSig(keys.key2) + .PushSigECDSA(keys.key0) + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key2) .DamagePush(10)); tests.push_back( TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) @@ -1020,9 +1022,9 @@ "3-of-3 NOT with invalid sig with nonzero dummy", SCRIPT_VERIFY_NULLDUMMY) .Num(1) - .PushSig(keys.key0) - .PushSig(keys.key1) - .PushSig(keys.key2) + .PushSigECDSA(keys.key0) + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key2) .DamagePush(10) .ScriptError(SCRIPT_ERR_SIG_NULLDUMMY)); @@ -1033,7 +1035,7 @@ "pushed using OP_DUP but no SIGPUSHONLY", 0) .Num(0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .Add(CScript() << OP_DUP)); tests.push_back( TestBuilder( @@ -1043,7 +1045,7 @@ "2-of-2 with two identical keys and sigs pushed using OP_DUP", SCRIPT_VERIFY_SIGPUSHONLY) .Num(0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .Add(CScript() << OP_DUP) .ScriptError(SCRIPT_ERR_SIG_PUSHONLY)); tests.push_back( @@ -1051,19 +1053,19 @@ CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2SH(P2PK) with non-push scriptSig but no P2SH or SIGPUSHONLY", 0, true) - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .Add(CScript() << OP_NOP8) .PushRedeem()); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2PK with non-push scriptSig but with P2SH validation", 0) - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .Add(CScript() << OP_NOP8)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2SH(P2PK) with non-push scriptSig but no SIGPUSHONLY", SCRIPT_VERIFY_P2SH, true) - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .Add(CScript() << OP_NOP8) .PushRedeem() .ScriptError(SCRIPT_ERR_SIG_PUSHONLY)); @@ -1071,7 +1073,7 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "P2SH(P2PK) with non-push scriptSig but not P2SH", SCRIPT_VERIFY_SIGPUSHONLY, true) - .PushSig(keys.key2) + .PushSigECDSA(keys.key2) .Add(CScript() << OP_NOP8) .PushRedeem() .ScriptError(SCRIPT_ERR_SIG_PUSHONLY)); @@ -1082,41 +1084,41 @@ "2-of-2 with two identical keys and sigs pushed", SCRIPT_VERIFY_SIGPUSHONLY) .Num(0) - .PushSig(keys.key1) - .PushSig(keys.key1)); + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key1)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK with unnecessary input but no CLEANSTACK", SCRIPT_VERIFY_P2SH) .Num(11) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK with unnecessary input", SCRIPT_VERIFY_CLEANSTACK | SCRIPT_VERIFY_P2SH) .Num(11) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .ScriptError(SCRIPT_ERR_CLEANSTACK)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2SH with unnecessary input but no CLEANSTACK", SCRIPT_VERIFY_P2SH, true) .Num(11) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .PushRedeem()); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2SH with unnecessary input", SCRIPT_VERIFY_CLEANSTACK | SCRIPT_VERIFY_P2SH, true) .Num(11) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .PushRedeem() .ScriptError(SCRIPT_ERR_CLEANSTACK)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2SH with CLEANSTACK", SCRIPT_VERIFY_CLEANSTACK | SCRIPT_VERIFY_P2SH, true) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .PushRedeem()); static const Amount TEST_AMOUNT(int64_t(12345000000000) * SATOSHI); @@ -1124,21 +1126,22 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK FORKID", SCRIPT_ENABLE_SIGHASH_FORKID, false, TEST_AMOUNT) - .PushSig(keys.key0, SigHashType().withForkId(), 32, 32, - TEST_AMOUNT)); + .PushSigECDSA(keys.key0, SigHashType().withForkId(), 32, 32, + TEST_AMOUNT)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK INVALID AMOUNT", SCRIPT_ENABLE_SIGHASH_FORKID, false, TEST_AMOUNT) - .PushSig(keys.key0, SigHashType().withForkId(), 32, 32, - TEST_AMOUNT + SATOSHI) + .PushSigECDSA(keys.key0, SigHashType().withForkId(), 32, 32, + TEST_AMOUNT + SATOSHI) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK INVALID FORKID", SCRIPT_VERIFY_STRICTENC, false, TEST_AMOUNT) - .PushSig(keys.key0, SigHashType().withForkId(), 32, 32, TEST_AMOUNT) + .PushSigECDSA(keys.key0, SigHashType().withForkId(), 32, 32, + TEST_AMOUNT) .ScriptError(SCRIPT_ERR_ILLEGAL_FORKID)); // Test replay protection @@ -1148,9 +1151,10 @@ SCRIPT_ENABLE_SIGHASH_FORKID | SCRIPT_ENABLE_REPLAY_PROTECTION, false, TEST_AMOUNT) - .PushSig(keys.key0, SigHashType().withForkId(), 32, 32, TEST_AMOUNT, - SCRIPT_ENABLE_SIGHASH_FORKID | - SCRIPT_ENABLE_REPLAY_PROTECTION)); + .PushSigECDSA(keys.key0, SigHashType().withForkId(), 32, 32, + TEST_AMOUNT, + SCRIPT_ENABLE_SIGHASH_FORKID | + SCRIPT_ENABLE_REPLAY_PROTECTION)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, @@ -1158,8 +1162,8 @@ SCRIPT_ENABLE_SIGHASH_FORKID | SCRIPT_ENABLE_REPLAY_PROTECTION, false, TEST_AMOUNT) - .PushSig(keys.key0, SigHashType().withForkId(), 32, 32, TEST_AMOUNT, - SCRIPT_ENABLE_SIGHASH_FORKID) + .PushSigECDSA(keys.key0, SigHashType().withForkId(), 32, 32, + TEST_AMOUNT, SCRIPT_ENABLE_SIGHASH_FORKID) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); // Test OP_CHECKDATASIG @@ -1170,20 +1174,20 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "Standard CHECKDATASIG", checkdatasigflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG << OP_NOT, "CHECKDATASIG with NULLFAIL flags", checkdatasigflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1) .ScriptError(SCRIPT_ERR_SIG_NULLFAIL)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG << OP_NOT, "CHECKDATASIG without NULLFAIL flags", checkdatasigflags & ~SCRIPT_VERIFY_NULLFAIL) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG << OP_NOT, @@ -1194,26 +1198,26 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with High S but no Low S", checkdatasigflags) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with High S", checkdatasigflags | SCRIPT_VERIFY_LOW_S) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0) .ScriptError(SCRIPT_ERR_SIG_HIGH_S)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with too little R padding but no DERSIG", checkdatasigflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with too little R padding", checkdatasigflags) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0) .ScriptError(SCRIPT_ERR_SIG_DER)); @@ -1221,12 +1225,12 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, "CHECKDATASIG with hybrid pubkey but no STRICTENC", checkdatasigflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, "CHECKDATASIG with hybrid pubkey", checkdatasigflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back( @@ -1234,14 +1238,14 @@ << OP_NOT, "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", SCRIPT_ENABLE_CHECKDATASIG) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, "CHECKDATASIG with invalid hybrid pubkey", checkdatasigflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); @@ -1251,20 +1255,20 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "Standard CHECKDATASIGVERIFY", checkdatasigflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with NULLFAIL flags", checkdatasigflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1) .ScriptError(SCRIPT_ERR_SIG_NULLFAIL)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY without NULLFAIL flags", checkdatasigflags & ~SCRIPT_VERIFY_NULLFAIL) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1) .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) @@ -1278,13 +1282,13 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIG with High S but no Low S", checkdatasigflags) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIG with High S", checkdatasigflags | SCRIPT_VERIFY_LOW_S) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0) .ScriptError(SCRIPT_ERR_SIG_HIGH_S)); tests.push_back( @@ -1293,14 +1297,14 @@ << OP_TRUE, "CHECKDATASIGVERIFY with too little R padding but no DERSIG", checkdatasigflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with too little R padding", checkdatasigflags) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0) .ScriptError(SCRIPT_ERR_SIG_DER)); @@ -1309,13 +1313,13 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with hybrid pubkey but no STRICTENC", checkdatasigflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with hybrid pubkey", checkdatasigflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back( @@ -1324,7 +1328,7 @@ << OP_TRUE, "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", SCRIPT_ENABLE_CHECKDATASIG) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0) .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); @@ -1332,7 +1336,7 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with invalid hybrid pubkey", checkdatasigflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); @@ -1341,12 +1345,12 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK ECDSA with Schnorr flag on", SCRIPT_ENABLE_SCHNORR) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "P2PK, bad sig ECDSA with Schnorr flag on", SCRIPT_ENABLE_SCHNORR) - .PushSig(keys.key0) + .PushSigECDSA(keys.key0) .DamagePush(10) .ScriptError(SCRIPT_ERR_EVAL_FALSE)); @@ -1355,7 +1359,7 @@ << OP_EQUALVERIFY << OP_CHECKSIG, "P2PKH ECDSA with Schnorr flag on", SCRIPT_ENABLE_SCHNORR) - .PushSig(keys.key1) + .PushSigECDSA(keys.key1) .Push(keys.pubkey1C)); tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey0C) @@ -1366,22 +1370,22 @@ SCRIPT_VERIFY_P2SH | SCRIPT_ENABLE_SCHNORR, true) .Num(0) - .PushSig(keys.key1) - .PushSig(keys.key2) + .PushSigECDSA(keys.key1) + .PushSigECDSA(keys.key2) .PushRedeem()); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey2C) << OP_CHECKSIG, "LOW_S violating ECDSA with Schnorr flag on", SCRIPT_VERIFY_LOW_S | SCRIPT_ENABLE_SCHNORR) - .PushSig(keys.key2, SigHashType(), 32, 33) + .PushSigECDSA(keys.key2, SigHashType(), 32, 33) .ScriptError(SCRIPT_ERR_SIG_HIGH_S)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKSIG, "STRICTENC-violating hybrid pubkey with Schnorr flag on", SCRIPT_VERIFY_STRICTENC | SCRIPT_ENABLE_SCHNORR) - .PushSig(keys.key0, SigHashType()) + .PushSigECDSA(keys.key0, SigHashType()) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); // Duplicated test OP_CHECKDATASIG with Schnorr flag on @@ -1392,13 +1396,13 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "Standard CHECKDATASIG", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG << OP_NOT, "CHECKDATASIG with NULLFAIL flags", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1) .ScriptError(SCRIPT_ERR_SIG_NULLFAIL)); tests.push_back( @@ -1406,7 +1410,7 @@ << OP_NOT, "CHECKDATASIG without NULLFAIL flags", checkdatasigschnorrflags & ~SCRIPT_VERIFY_NULLFAIL) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG << OP_NOT, @@ -1418,27 +1422,27 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with High S but no Low S", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with High S", checkdatasigschnorrflags | SCRIPT_VERIFY_LOW_S) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0) .ScriptError(SCRIPT_ERR_SIG_HIGH_S)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with too little R padding but no DERSIG", checkdatasigschnorrflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, "CHECKDATASIG with too little R padding", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0) .ScriptError(SCRIPT_ERR_SIG_DER)); @@ -1446,12 +1450,12 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, "CHECKDATASIG with hybrid pubkey but no STRICTENC", checkdatasigschnorrflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, "CHECKDATASIG with hybrid pubkey", checkdatasigschnorrflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back( @@ -1459,14 +1463,14 @@ << OP_NOT, "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", SCRIPT_ENABLE_CHECKDATASIG) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG, "CHECKDATASIG with invalid hybrid pubkey", checkdatasigschnorrflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); @@ -1476,13 +1480,13 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "Standard CHECKDATASIGVERIFY", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with NULLFAIL flags", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1) .ScriptError(SCRIPT_ERR_SIG_NULLFAIL)); tests.push_back( @@ -1490,7 +1494,7 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY without NULLFAIL flags", checkdatasigschnorrflags & ~SCRIPT_VERIFY_NULLFAIL) - .PushDataSig(keys.key1, {}) + .PushDataSigECDSA(keys.key1, {}) .Num(1) .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) @@ -1504,13 +1508,13 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIG with High S but no Low S", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIG with High S", checkdatasigschnorrflags | SCRIPT_VERIFY_LOW_S) - .PushDataSig(keys.key1, {}, 32, 33) + .PushDataSigECDSA(keys.key1, {}, 32, 33) .Num(0) .ScriptError(SCRIPT_ERR_SIG_HIGH_S)); tests.push_back( @@ -1519,14 +1523,14 @@ << OP_TRUE, "CHECKDATASIGVERIFY with too little R padding but no DERSIG", checkdatasigschnorrflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with too little R padding", checkdatasigschnorrflags) - .PushDataSig(keys.key1, {}, 33, 32) + .PushDataSigECDSA(keys.key1, {}, 33, 32) .EditPush(1, "45022100", "440220") .Num(0) .ScriptError(SCRIPT_ERR_SIG_DER)); @@ -1535,13 +1539,13 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with hybrid pubkey but no STRICTENC", checkdatasigschnorrflags & ~SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with hybrid pubkey", checkdatasigschnorrflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); tests.push_back( @@ -1550,7 +1554,7 @@ << OP_TRUE, "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", SCRIPT_ENABLE_CHECKDATASIG) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0) .ScriptError(SCRIPT_ERR_CHECKDATASIGVERIFY)); @@ -1558,7 +1562,7 @@ << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with invalid hybrid pubkey", checkdatasigschnorrflags) - .PushDataSig(keys.key0, {}) + .PushDataSigECDSA(keys.key0, {}) .DamagePush(10) .Num(0) .ScriptError(SCRIPT_ERR_PUBKEYTYPE)); @@ -1576,7 +1580,7 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "CHECKSIG ECDSA w/ neither STRICTENC,SCHNORR", 0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "CHECKSIG Schnorr w/ SCHNORR", SCRIPT_ENABLE_SCHNORR) @@ -1584,7 +1588,7 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "CHECKSIG ECDSA w/ SCHNORR", SCRIPT_ENABLE_SCHNORR) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "CHECKSIG Schnorr w/ STRICTENC", SCRIPT_VERIFY_STRICTENC) @@ -1593,7 +1597,7 @@ tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "CHECKSIG ECDSA w/ STRICTENC", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "CHECKSIG Schnorr w/ STRICTENC,SCHNORR", @@ -1603,7 +1607,7 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIG, "CHECKSIG ECDSA w/ STRICTENC,SCHNORR", SCRIPT_ENABLE_SCHNORR | SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIG, "CHECKSIG Schnorr other key", @@ -1626,7 +1630,7 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY ECDSA w/ neither STRICTENC,SCHNORR", 0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY Schnorr w/ SCHNORR", @@ -1636,7 +1640,7 @@ << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY ECDSA w/ SCHNORR", SCRIPT_ENABLE_SCHNORR) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY Schnorr w/ STRICTENC", @@ -1647,7 +1651,7 @@ << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY ECDSA w/ STRICTENC", SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0) << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY Schnorr w/ STRICTENC,SCHNORR", @@ -1657,7 +1661,7 @@ << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY ECDSA w/ STRICTENC,SCHNORR", SCRIPT_ENABLE_SCHNORR | SCRIPT_VERIFY_STRICTENC) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey1) << OP_CHECKSIGVERIFY << OP_1, "CHECKSIGVERIFY Schnorr other key", @@ -1683,7 +1687,7 @@ << OP_CHECKDATASIG, "CHECKDATASIG ECDSA w/ neither STRICTENC,SCHNORR", SCRIPT_ENABLE_CHECKDATASIG) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back( TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) << OP_CHECKDATASIG, @@ -1695,7 +1699,7 @@ << OP_CHECKDATASIG, "CHECKDATASIG ECDSA w/ SCHNORR", SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back( TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) << OP_CHECKDATASIG, @@ -1708,7 +1712,7 @@ << OP_CHECKDATASIG, "CHECKDATASIG ECDSA w/ STRICTENC", SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) << OP_CHECKDATASIG, "CHECKDATASIG Schnorr w/ STRICTENC,SCHNORR", @@ -1722,7 +1726,7 @@ SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR | SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) << OP_CHECKDATASIG, "CHECKDATASIG Schnorr other key", @@ -1765,7 +1769,7 @@ << OP_CHECKDATASIGVERIFY << OP_1, "CHECKDATASIGVERIFY ECDSA w/ neither STRICTENC,SCHNORR", SCRIPT_ENABLE_CHECKDATASIG) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back( TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) << OP_CHECKDATASIGVERIFY << OP_1, @@ -1777,7 +1781,7 @@ << OP_CHECKDATASIGVERIFY << OP_1, "CHECKDATASIGVERIFY ECDSA w/ SCHNORR", SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back( TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) << OP_CHECKDATASIGVERIFY << OP_1, @@ -1790,7 +1794,7 @@ << OP_CHECKDATASIGVERIFY << OP_1, "CHECKDATASIGVERIFY ECDSA w/ STRICTENC", SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back( TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey0) << OP_CHECKDATASIGVERIFY << OP_1, @@ -1804,7 +1808,7 @@ SCRIPT_ENABLE_CHECKDATASIG | SCRIPT_ENABLE_SCHNORR | SCRIPT_VERIFY_STRICTENC) - .PushDataSig(keys.key0, {})); + .PushDataSigECDSA(keys.key0, {})); tests.push_back(TestBuilder(CScript() << OP_0 << ToByteVector(keys.pubkey1) << OP_CHECKDATASIGVERIFY << OP_1, "CHECKDATASIGVERIFY Schnorr other key", @@ -1849,7 +1853,7 @@ << OP_CHECKMULTISIG, "CHECKMULTISIG ECDSA w/ neither STRICTENC,SCHNORR", 0) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 << OP_CHECKMULTISIG, "CHECKMULTISIG Schnorr w/ SCHNORR", @@ -1862,7 +1866,7 @@ "CHECKMULTISIG ECDSA w/ SCHNORR", SCRIPT_ENABLE_SCHNORR) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 << OP_CHECKMULTISIG, "CHECKMULTISIG Schnorr w/ STRICTENC", @@ -1875,7 +1879,7 @@ "CHECKMULTISIG ECDSA w/ STRICTENC", SCRIPT_VERIFY_STRICTENC) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 << OP_CHECKMULTISIG, "CHECKMULTISIG Schnorr w/ STRICTENC,SCHNORR", @@ -1888,7 +1892,7 @@ "CHECKMULTISIG ECDSA w/ STRICTENC,SCHNORR", SCRIPT_ENABLE_SCHNORR | SCRIPT_VERIFY_STRICTENC) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); // Test multisig with multiple Schnorr signatures tests.push_back(TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) @@ -1921,8 +1925,8 @@ "Schnorr-ECDSA-mixed 3-of-3 with SCHNORR flag", SCRIPT_ENABLE_SCHNORR) .Num(0) - .PushSig(keys.key0) - .PushSig(keys.key1) + .PushSigECDSA(keys.key0) + .PushSigECDSA(keys.key1) .PushSigSchnorr(keys.key2) .ScriptError(SCRIPT_ERR_SIG_BADLENGTH)); @@ -1940,7 +1944,7 @@ << OP_CHECKMULTISIGVERIFY << OP_1, "CHECKMULTISIGVERIFY ECDSA w/ neither STRICTENC,SCHNORR", 0) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 << OP_CHECKMULTISIGVERIFY << OP_1, @@ -1955,7 +1959,7 @@ "CHECKMULTISIGVERIFY ECDSA w/ SCHNORR", SCRIPT_ENABLE_SCHNORR) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back(TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 << OP_CHECKMULTISIGVERIFY << OP_1, @@ -1970,7 +1974,7 @@ "CHECKMULTISIGVERIFY ECDSA w/ STRICTENC", SCRIPT_VERIFY_STRICTENC) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); tests.push_back( TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 << OP_CHECKMULTISIGVERIFY << OP_1, @@ -1985,7 +1989,7 @@ "CHECKMULTISIGVERIFY ECDSA w/ STRICTENC,SCHNORR", SCRIPT_ENABLE_SCHNORR | SCRIPT_VERIFY_STRICTENC) .Num(0) - .PushSig(keys.key0)); + .PushSigECDSA(keys.key0)); // Test damaged Schnorr signatures tests.push_back(TestBuilder(CScript() << ToByteVector(keys.pubkey0)