Changeset View
Changeset View
Standalone View
Standalone View
src/test/sigencoding_tests.cpp
Show First 20 Lines • Show All 200 Lines • ▼ Show 20 Lines | for (uint32_t flags = 0; flags < (1U << 17); flags++) { | ||||
ScriptError err = SCRIPT_ERR_OK; | ScriptError err = SCRIPT_ERR_OK; | ||||
// Compressed pubkeys are always valid. | // Compressed pubkeys are always valid. | ||||
BOOST_CHECK(CheckPubKeyEncoding(compressedKey0, flags, &err)); | BOOST_CHECK(CheckPubKeyEncoding(compressedKey0, flags, &err)); | ||||
BOOST_CHECK(CheckPubKeyEncoding(compressedKey1, flags, &err)); | BOOST_CHECK(CheckPubKeyEncoding(compressedKey1, flags, &err)); | ||||
// If SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE is specified, full key are | // If SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE is specified, full key are | ||||
// disabled. | // disabled. | ||||
bool allowFullKey = (flags & SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE) == 0; | const bool allowFullKey = | ||||
(flags & SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE) == 0; | |||||
BOOST_CHECK_EQUAL(CheckPubKeyEncoding(fullKey, flags, &err), | BOOST_CHECK_EQUAL(CheckPubKeyEncoding(fullKey, flags, &err), | ||||
allowFullKey); | allowFullKey); | ||||
if (!allowFullKey) { | |||||
BOOST_CHECK_EQUAL(err, SCRIPT_ERR_NONCOMPRESSED_PUBKEY); | |||||
} | |||||
// 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. | ||||
bool allowInvalidKeys = | const bool hasStrictEnc = (flags & SCRIPT_VERIFY_STRICTENC) != 0; | ||||
allowFullKey && (flags & SCRIPT_VERIFY_STRICTENC) == 0; | 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) { | |||||
BOOST_CHECK_EQUAL(err, | |||||
hasStrictEnc | |||||
? SCRIPT_ERR_PUBKEYTYPE | |||||
: SCRIPT_ERR_NONCOMPRESSED_PUBKEY); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |