Changeset View
Changeset View
Standalone View
Standalone View
src/test/checkdatasig_tests.cpp
Show First 20 Lines • Show All 143 Lines • ▼ Show 20 Lines | const valtype highSSig{ | ||||
0x8e, 0xff, 0xec, 0x6b, 0x95, 0xc4, 0x12, 0x21, 0xc0, 0xcf, 0x3a, 0x8e, | 0x8e, 0xff, 0xec, 0x6b, 0x95, 0xc4, 0x12, 0x21, 0xc0, 0xcf, 0x3a, 0x8e, | ||||
0x6c, 0xcb, 0x8c, 0xbf, 0x17, 0x25, 0xb5, 0x62, 0xe9, 0xaf, 0xde, 0x2c, | 0x6c, 0xcb, 0x8c, 0xbf, 0x17, 0x25, 0xb5, 0x62, 0xe9, 0xaf, 0xde, 0x2c, | ||||
0x02, 0x21, 0x00, 0xab, 0x1e, 0x3d, 0xa7, 0x3d, 0x67, 0xe3, 0x20, 0x45, | 0x02, 0x21, 0x00, 0xab, 0x1e, 0x3d, 0xa7, 0x3d, 0x67, 0xe3, 0x20, 0x45, | ||||
0xa2, 0x0e, 0x0b, 0x99, 0x9e, 0x04, 0x99, 0x78, 0xea, 0x8d, 0x6e, 0xe5, | 0xa2, 0x0e, 0x0b, 0x99, 0x9e, 0x04, 0x99, 0x78, 0xea, 0x8d, 0x6e, 0xe5, | ||||
0x48, 0x0d, 0x48, 0x5f, 0xcf, 0x2c, 0xe0, 0xd0, 0x3b, 0x2e, 0xf0}; | 0x48, 0x0d, 0x48, 0x5f, 0xcf, 0x2c, 0xe0, 0xd0, 0x3b, 0x2e, 0xf0}; | ||||
MMIXLinearCongruentialGenerator lcg; | MMIXLinearCongruentialGenerator lcg; | ||||
for (int i = 0; i < 4096; i++) { | for (int i = 0; i < 4096; i++) { | ||||
uint32_t flags = lcg.next() | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS; | uint32_t flags = lcg.next(); | ||||
if (flags & SCRIPT_VERIFY_STRICTENC) { | if (flags & SCRIPT_VERIFY_STRICTENC) { | ||||
// When strict encoding is enforced, hybrid keys are invalid. | // When strict encoding is enforced, hybrid keys are invalid. | ||||
CheckError(flags, {{}, message, pubkeyH}, script, | CheckError(flags, {{}, message, pubkeyH}, script, | ||||
ScriptError::PUBKEYTYPE); | ScriptError::PUBKEYTYPE); | ||||
CheckError(flags, {{}, message, pubkeyH}, scriptverify, | CheckError(flags, {{}, message, pubkeyH}, scriptverify, | ||||
ScriptError::PUBKEYTYPE); | ScriptError::PUBKEYTYPE); | ||||
} else if (flags & SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE) { | } else if (flags & SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE) { | ||||
▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | for (int i = 0; i < 4096; i++) { | ||||
// If we do not check, then it is accepted. | // If we do not check, then it is accepted. | ||||
CheckPass(flags, {nondersig, message, pubkeyC}, script, {}); | CheckPass(flags, {nondersig, message, pubkeyC}, script, {}); | ||||
CheckError(flags, {nondersig, message, pubkeyC}, scriptverify, | CheckError(flags, {nondersig, message, pubkeyC}, scriptverify, | ||||
ScriptError::CHECKDATASIGVERIFY); | ScriptError::CHECKDATASIGVERIFY); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(checkdatasig_inclusion_in_standard_and_mandatory_flags) { | BOOST_AUTO_TEST_CASE(checkdatasig_sigops_inclusion_in_standard_flags) { | ||||
BOOST_CHECK(STANDARD_SCRIPT_VERIFY_FLAGS & | BOOST_CHECK(STANDARD_SCRIPT_VERIFY_FLAGS & | ||||
SCRIPT_VERIFY_CHECKDATASIG_SIGOPS); | SCRIPT_VERIFY_CHECKDATASIG_SIGOPS); | ||||
BOOST_CHECK( | |||||
!(MANDATORY_SCRIPT_VERIFY_FLAGS & SCRIPT_VERIFY_CHECKDATASIG_SIGOPS)); | |||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |