Changeset View
Changeset View
Standalone View
Standalone View
src/test/sigencoding_tests.cpp
Show First 20 Lines • Show All 368 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(checkpubkeyencoding_test) { | ||||
}; | }; | ||||
MMIXLinearCongruentialGenerator lcg; | MMIXLinearCongruentialGenerator lcg; | ||||
for (int i = 0; i < 4096; i++) { | for (int i = 0; i < 4096; i++) { | ||||
uint32_t flags = lcg.next(); | uint32_t flags = lcg.next(); | ||||
ScriptError err = ScriptError::OK; | ScriptError err = ScriptError::OK; | ||||
// Compressed pubkeys are always valid. | // Compressed and uncompressed 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)); | ||||
BOOST_CHECK(CheckPubKeyEncoding(fullKey, flags, &err)); | |||||
// If SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE is specified, full key are | // If SCRIPT_VERIFY_STRICTENC is specified, we rule out invalid keys. | ||||
// disabled. | |||||
const bool allowFullKey = | |||||
(flags & SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE) == 0; | |||||
BOOST_CHECK_EQUAL(CheckPubKeyEncoding(fullKey, flags, &err), | |||||
allowFullKey); | |||||
if (!allowFullKey) { | |||||
BOOST_CHECK(err == ScriptError::NONCOMPRESSED_PUBKEY); | |||||
} | |||||
// If SCRIPT_VERIFY_STRICTENC or SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE is | |||||
// 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 = !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(err == (hasStrictEnc | BOOST_CHECK(err == ScriptError::PUBKEYTYPE); | ||||
? ScriptError::PUBKEYTYPE | |||||
: ScriptError::NONCOMPRESSED_PUBKEY)); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(checkschnorr_test) { | BOOST_AUTO_TEST_CASE(checkschnorr_test) { | ||||
// tests using 64 byte sigs (+hashtype byte where relevant) | // tests using 64 byte sigs (+hashtype byte where relevant) | ||||
valtype Zero64(64, 0); | valtype Zero64(64, 0); | ||||
▲ Show 20 Lines • Show All 42 Lines • Show Last 20 Lines |