Changeset View
Changeset View
Standalone View
Standalone View
src/test/sigencoding_tests.cpp
Show All 36 Lines | static void CheckSignatureEncodingWithSigHashType(const valtype &vchSig, | ||||
for (const SigHashType baseSigHash : baseSigHashes) { | for (const SigHashType baseSigHash : baseSigHashes) { | ||||
// Check the signature with the proper forkid flag. | // Check the signature with the proper forkid flag. | ||||
SigHashType sigHash = baseSigHash.withForkId(hasForkId); | SigHashType sigHash = baseSigHash.withForkId(hasForkId); | ||||
valtype validSig = SignatureWithHashType(vchSig, sigHash); | valtype validSig = SignatureWithHashType(vchSig, sigHash); | ||||
BOOST_CHECK(CheckTransactionSignatureEncoding(validSig, flags, &err)); | BOOST_CHECK(CheckTransactionSignatureEncoding(validSig, flags, &err)); | ||||
// If we have strict encoding, we prevent the use of undefined flags. | // If we have strict encoding, we prevent the use of undefined flags. | ||||
std::array<SigHashType, 2> undefSigHashes{ | std::array<SigHashType, 2> undefSigHashes{ | ||||
SigHashType(sigHash.getRawSigHashType() | 0x20), | {SigHashType(sigHash.getRawSigHashType() | 0x20), | ||||
sigHash.withBaseType(BaseSigHashType::UNSUPPORTED), | sigHash.withBaseType(BaseSigHashType::UNSUPPORTED)}}; | ||||
}; | |||||
for (SigHashType undefSigHash : undefSigHashes) { | for (SigHashType undefSigHash : undefSigHashes) { | ||||
valtype undefSighash = SignatureWithHashType(vchSig, undefSigHash); | valtype undefSighash = SignatureWithHashType(vchSig, undefSigHash); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
CheckTransactionSignatureEncoding(undefSighash, flags, &err), | CheckTransactionSignatureEncoding(undefSighash, flags, &err), | ||||
!hasStrictEnc); | !hasStrictEnc); | ||||
if (hasStrictEnc) { | if (hasStrictEnc) { | ||||
BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_HASHTYPE); | BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_HASHTYPE); | ||||
▲ Show 20 Lines • Show All 308 Lines • Show Last 20 Lines |