Changeset View
Changeset View
Standalone View
Standalone View
src/test/sigencoding_tests.cpp
Show First 20 Lines • Show All 389 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(checkschnorr_test) { | ||||
BOOST_REQUIRE_EQUAL(Zero64.size(), 64); | BOOST_REQUIRE_EQUAL(Zero64.size(), 64); | ||||
BOOST_REQUIRE_EQUAL(DER64.size(), 64); | BOOST_REQUIRE_EQUAL(DER64.size(), 64); | ||||
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(); | ||||
const bool hasForkId = (flags & SCRIPT_ENABLE_SIGHASH_FORKID) != 0; | const bool hasForkId = (flags & SCRIPT_ENABLE_SIGHASH_FORKID) != 0; | ||||
const bool hasSchnorr = (flags & SCRIPT_ENABLE_SCHNORR) != 0; | |||||
const bool hasStricts = | |||||
(flags & (SCRIPT_VERIFY_DERSIG | SCRIPT_VERIFY_LOW_S | | |||||
SCRIPT_VERIFY_STRICTENC)) != 0; | |||||
ScriptError err = SCRIPT_ERR_OK; | ScriptError err = SCRIPT_ERR_OK; | ||||
valtype DER65_hb = | valtype DER65_hb = | ||||
SignatureWithHashType(DER64, SigHashType().withForkId(hasForkId)); | SignatureWithHashType(DER64, SigHashType().withForkId(hasForkId)); | ||||
valtype Zero65_hb = | valtype Zero65_hb = | ||||
SignatureWithHashType(Zero64, SigHashType().withForkId(hasForkId)); | SignatureWithHashType(Zero64, SigHashType().withForkId(hasForkId)); | ||||
BOOST_CHECK(CheckDataSignatureEncoding(DER64, flags, &err)); | BOOST_CHECK(CheckDataSignatureEncoding(DER64, flags, &err)); | ||||
BOOST_CHECK(CheckTransactionSignatureEncoding(DER65_hb, flags, &err)); | BOOST_CHECK(CheckTransactionSignatureEncoding(DER65_hb, flags, &err)); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK( | ||||
!CheckTransactionECDSASignatureEncoding(DER65_hb, flags, &err), | !CheckTransactionECDSASignatureEncoding(DER65_hb, flags, &err)); | ||||
hasSchnorr); | |||||
if (hasSchnorr) { | |||||
BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_BADLENGTH); | BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_BADLENGTH); | ||||
} | |||||
if (hasSchnorr) { | |||||
BOOST_CHECK(CheckDataSignatureEncoding(Zero64, flags, &err)); | BOOST_CHECK(CheckDataSignatureEncoding(Zero64, flags, &err)); | ||||
BOOST_CHECK(CheckTransactionSignatureEncoding(Zero65_hb, flags, &err)); | |||||
BOOST_CHECK( | BOOST_CHECK( | ||||
CheckTransactionSignatureEncoding(Zero65_hb, flags, &err)); | !CheckTransactionECDSASignatureEncoding(Zero65_hb, flags, &err)); | ||||
BOOST_CHECK(!CheckTransactionECDSASignatureEncoding(Zero65_hb, | |||||
flags, &err)); | |||||
BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_BADLENGTH); | BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_BADLENGTH); | ||||
} else { | |||||
BOOST_CHECK_EQUAL(!CheckDataSignatureEncoding(Zero64, flags, &err), | |||||
hasStricts); | |||||
if (hasStricts) { | |||||
BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_DER); | |||||
} | |||||
BOOST_CHECK_EQUAL( | |||||
!CheckTransactionSignatureEncoding(Zero65_hb, flags, &err), | |||||
hasStricts); | |||||
if (hasStricts) { | |||||
BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_DER); | |||||
} | |||||
BOOST_CHECK_EQUAL( | |||||
!CheckTransactionECDSASignatureEncoding(Zero65_hb, flags, &err), | |||||
hasStricts); | |||||
if (hasStricts) { | |||||
BOOST_CHECK_EQUAL(err, SCRIPT_ERR_SIG_DER); | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |