Changeset View
Changeset View
Standalone View
Standalone View
src/test/key_tests.cpp
Show First 20 Lines • Show All 88 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(key_test1) { | ||||
for (int n = 0; n < 16; n++) { | for (int n = 0; n < 16; n++) { | ||||
std::string strMsg = strprintf("Very secret message %i: 11", n); | std::string strMsg = strprintf("Very secret message %i: 11", n); | ||||
uint256 hashMsg = Hash(strMsg.begin(), strMsg.end()); | uint256 hashMsg = Hash(strMsg.begin(), strMsg.end()); | ||||
// normal signatures | // normal signatures | ||||
std::vector<uint8_t> sign1, sign2, sign1C, sign2C; | std::vector<uint8_t> sign1, sign2, sign1C, sign2C; | ||||
BOOST_CHECK(key1.Sign(hashMsg, sign1)); | BOOST_CHECK(key1.SignECDSA(hashMsg, sign1)); | ||||
BOOST_CHECK(key2.Sign(hashMsg, sign2)); | BOOST_CHECK(key2.SignECDSA(hashMsg, sign2)); | ||||
BOOST_CHECK(key1C.Sign(hashMsg, sign1C)); | BOOST_CHECK(key1C.SignECDSA(hashMsg, sign1C)); | ||||
BOOST_CHECK(key2C.Sign(hashMsg, sign2C)); | BOOST_CHECK(key2C.SignECDSA(hashMsg, sign2C)); | ||||
BOOST_CHECK(pubkey1.Verify(hashMsg, sign1)); | BOOST_CHECK(pubkey1.VerifyECDSA(hashMsg, sign1)); | ||||
BOOST_CHECK(!pubkey1.Verify(hashMsg, sign2)); | BOOST_CHECK(!pubkey1.VerifyECDSA(hashMsg, sign2)); | ||||
BOOST_CHECK(pubkey1.Verify(hashMsg, sign1C)); | BOOST_CHECK(pubkey1.VerifyECDSA(hashMsg, sign1C)); | ||||
BOOST_CHECK(!pubkey1.Verify(hashMsg, sign2C)); | BOOST_CHECK(!pubkey1.VerifyECDSA(hashMsg, sign2C)); | ||||
BOOST_CHECK(!pubkey2.Verify(hashMsg, sign1)); | BOOST_CHECK(!pubkey2.VerifyECDSA(hashMsg, sign1)); | ||||
BOOST_CHECK(pubkey2.Verify(hashMsg, sign2)); | BOOST_CHECK(pubkey2.VerifyECDSA(hashMsg, sign2)); | ||||
BOOST_CHECK(!pubkey2.Verify(hashMsg, sign1C)); | BOOST_CHECK(!pubkey2.VerifyECDSA(hashMsg, sign1C)); | ||||
BOOST_CHECK(pubkey2.Verify(hashMsg, sign2C)); | BOOST_CHECK(pubkey2.VerifyECDSA(hashMsg, sign2C)); | ||||
BOOST_CHECK(pubkey1C.Verify(hashMsg, sign1)); | BOOST_CHECK(pubkey1C.VerifyECDSA(hashMsg, sign1)); | ||||
BOOST_CHECK(!pubkey1C.Verify(hashMsg, sign2)); | BOOST_CHECK(!pubkey1C.VerifyECDSA(hashMsg, sign2)); | ||||
BOOST_CHECK(pubkey1C.Verify(hashMsg, sign1C)); | BOOST_CHECK(pubkey1C.VerifyECDSA(hashMsg, sign1C)); | ||||
BOOST_CHECK(!pubkey1C.Verify(hashMsg, sign2C)); | BOOST_CHECK(!pubkey1C.VerifyECDSA(hashMsg, sign2C)); | ||||
BOOST_CHECK(!pubkey2C.Verify(hashMsg, sign1)); | BOOST_CHECK(!pubkey2C.VerifyECDSA(hashMsg, sign1)); | ||||
BOOST_CHECK(pubkey2C.Verify(hashMsg, sign2)); | BOOST_CHECK(pubkey2C.VerifyECDSA(hashMsg, sign2)); | ||||
BOOST_CHECK(!pubkey2C.Verify(hashMsg, sign1C)); | BOOST_CHECK(!pubkey2C.VerifyECDSA(hashMsg, sign1C)); | ||||
BOOST_CHECK(pubkey2C.Verify(hashMsg, sign2C)); | BOOST_CHECK(pubkey2C.VerifyECDSA(hashMsg, sign2C)); | ||||
// compact signatures (with key recovery) | // compact signatures (with key recovery) | ||||
std::vector<uint8_t> csign1, csign2, csign1C, csign2C; | std::vector<uint8_t> csign1, csign2, csign1C, csign2C; | ||||
BOOST_CHECK(key1.SignCompact(hashMsg, csign1)); | BOOST_CHECK(key1.SignCompact(hashMsg, csign1)); | ||||
BOOST_CHECK(key2.SignCompact(hashMsg, csign2)); | BOOST_CHECK(key2.SignCompact(hashMsg, csign2)); | ||||
BOOST_CHECK(key1C.SignCompact(hashMsg, csign1C)); | BOOST_CHECK(key1C.SignCompact(hashMsg, csign1C)); | ||||
Show All 12 Lines | for (int n = 0; n < 16; n++) { | ||||
BOOST_CHECK(rkey2C == pubkey2C); | BOOST_CHECK(rkey2C == pubkey2C); | ||||
} | } | ||||
// test deterministic signing | // test deterministic signing | ||||
std::vector<uint8_t> detsig, detsigc; | std::vector<uint8_t> detsig, detsigc; | ||||
std::string strMsg = "Very deterministic message"; | std::string strMsg = "Very deterministic message"; | ||||
uint256 hashMsg = Hash(strMsg.begin(), strMsg.end()); | uint256 hashMsg = Hash(strMsg.begin(), strMsg.end()); | ||||
BOOST_CHECK(key1.Sign(hashMsg, detsig)); | BOOST_CHECK(key1.SignECDSA(hashMsg, detsig)); | ||||
BOOST_CHECK(key1C.Sign(hashMsg, detsigc)); | BOOST_CHECK(key1C.SignECDSA(hashMsg, detsigc)); | ||||
BOOST_CHECK(detsig == detsigc); | BOOST_CHECK(detsig == detsigc); | ||||
BOOST_CHECK(detsig == | BOOST_CHECK(detsig == | ||||
ParseHex("3045022100c6ab5f8acfccc114da39dd5ad0b1ef4d39df6a721e8" | ParseHex("3045022100c6ab5f8acfccc114da39dd5ad0b1ef4d39df6a721e8" | ||||
"24c22e00b7bc7944a1f7802206ff23df3802e241ee234a8b66c40" | "24c22e00b7bc7944a1f7802206ff23df3802e241ee234a8b66c40" | ||||
"c82e56a6cc37f9b50463111c9f9229b8f3b3")); | "c82e56a6cc37f9b50463111c9f9229b8f3b3")); | ||||
BOOST_CHECK(key2.Sign(hashMsg, detsig)); | BOOST_CHECK(key2.SignECDSA(hashMsg, detsig)); | ||||
BOOST_CHECK(key2C.Sign(hashMsg, detsigc)); | BOOST_CHECK(key2C.SignECDSA(hashMsg, detsigc)); | ||||
BOOST_CHECK(detsig == detsigc); | BOOST_CHECK(detsig == detsigc); | ||||
BOOST_CHECK(detsig == | BOOST_CHECK(detsig == | ||||
ParseHex("304502210094dc5a77b8d5db6b42b66c29d7033cd873fac7a1272" | ParseHex("304502210094dc5a77b8d5db6b42b66c29d7033cd873fac7a1272" | ||||
"4a90373726f60bb9f852a02204eb4c98b9a2f5c017f9417ba7c43" | "4a90373726f60bb9f852a02204eb4c98b9a2f5c017f9417ba7c43" | ||||
"279c20c84bb058dc05b3beeb9333016b15bb")); | "279c20c84bb058dc05b3beeb9333016b15bb")); | ||||
BOOST_CHECK(key1.SignCompact(hashMsg, detsig)); | BOOST_CHECK(key1.SignCompact(hashMsg, detsig)); | ||||
BOOST_CHECK(key1C.SignCompact(hashMsg, detsigc)); | BOOST_CHECK(key1C.SignCompact(hashMsg, detsigc)); | ||||
BOOST_CHECK(detsig == | BOOST_CHECK(detsig == | ||||
Show All 20 Lines |