Changeset View
Changeset View
Standalone View
Standalone View
src/test/sigencoding_tests.cpp
Show First 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | for (const SigHashType baseSigHash : baseSigHashes) { | ||||
// If we check strict encoding, then invalid forkid is an error. | // If we check strict encoding, then invalid forkid is an error. | ||||
SigHashType invalidSigHash = baseSigHash.withForkId(!hasForkId); | SigHashType invalidSigHash = baseSigHash.withForkId(!hasForkId); | ||||
valtype invalidSig = SignatureWithHashType(vchSig, invalidSigHash); | valtype invalidSig = SignatureWithHashType(vchSig, invalidSigHash); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
CheckTransactionSignatureEncoding(invalidSig, flags, &err), | CheckTransactionSignatureEncoding(invalidSig, flags, &err), | ||||
!hasStrictEnc); | !hasStrictEnc); | ||||
if (hasStrictEnc) { | if (hasStrictEnc) { | ||||
BOOST_CHECK_EQUAL(err, | BOOST_CHECK_EQUAL(err, hasForkId ? SCRIPT_ERR_MUST_USE_FORKID | ||||
hasForkId ? SCRIPT_ERR_MUST_USE_FORKID | |||||
: SCRIPT_ERR_ILLEGAL_FORKID); | : SCRIPT_ERR_ILLEGAL_FORKID); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(checksignatureencoding_test) { | BOOST_AUTO_TEST_CASE(checksignatureencoding_test) { | ||||
valtype minimalSig{0x30, 0x06, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01}; | valtype minimalSig{0x30, 0x06, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01}; | ||||
valtype highSSig{ | valtype highSSig{ | ||||
0x30, 0x45, 0x02, 0x20, 0x3e, 0x45, 0x16, 0xda, 0x72, 0x53, 0xcf, 0x06, | 0x30, 0x45, 0x02, 0x20, 0x3e, 0x45, 0x16, 0xda, 0x72, 0x53, 0xcf, 0x06, | ||||
▲ Show 20 Lines • Show All 268 Lines • ▼ Show 20 Lines | for (uint32_t flags = 0; flags < (1U << 17); flags++) { | ||||
// If SCRIPT_VERIFY_STRICTENC or SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE is | // If SCRIPT_VERIFY_STRICTENC or SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE is | ||||
// specified, we rule out invalid keys. | // specified, we rule out invalid keys. | ||||
const bool hasStrictEnc = (flags & SCRIPT_VERIFY_STRICTENC) != 0; | const bool hasStrictEnc = (flags & SCRIPT_VERIFY_STRICTENC) != 0; | ||||
const bool allowInvalidKeys = allowFullKey && !hasStrictEnc; | const bool allowInvalidKeys = allowFullKey && !hasStrictEnc; | ||||
for (const valtype &key : invalidKeys) { | for (const valtype &key : invalidKeys) { | ||||
BOOST_CHECK_EQUAL(CheckPubKeyEncoding(key, flags, &err), | BOOST_CHECK_EQUAL(CheckPubKeyEncoding(key, flags, &err), | ||||
allowInvalidKeys); | allowInvalidKeys); | ||||
if (!allowInvalidKeys) { | if (!allowInvalidKeys) { | ||||
BOOST_CHECK_EQUAL(err, | BOOST_CHECK_EQUAL(err, hasStrictEnc | ||||
hasStrictEnc | |||||
? SCRIPT_ERR_PUBKEYTYPE | ? SCRIPT_ERR_PUBKEYTYPE | ||||
: SCRIPT_ERR_NONCOMPRESSED_PUBKEY); | : SCRIPT_ERR_NONCOMPRESSED_PUBKEY); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |