52TEST(ecdsa, recover_public_key_secp256k1_sha256)
54 std::string message =
"The quick brown dog jumped over the lazy fox.";
61 ecdsa_construct_signature<Sha256Hasher, secp256k1::fq, secp256k1::fr, secp256k1::g1>(message, account);
63 bool result = ecdsa_verify_signature<Sha256Hasher, secp256k1::fq, secp256k1::fr, secp256k1::g1>(
66 auto recovered_public_key =
67 ecdsa_recover_public_key<Sha256Hasher, secp256k1::fq, secp256k1::fr, secp256k1::g1>(message, signature);
69 EXPECT_EQ(result,
true);
70 EXPECT_EQ(recovered_public_key, account.
public_key);
73TEST(ecdsa, recover_public_key_secp256r1_sha256)
75 std::string message =
"The quick brown dog jumped over the lazy fox.";
82 ecdsa_construct_signature<Sha256Hasher, secp256r1::fq, secp256r1::fr, secp256r1::g1>(message, account);
84 bool result = ecdsa_verify_signature<Sha256Hasher, secp256r1::fq, secp256r1::fr, secp256r1::g1>(
87 auto recovered_public_key =
88 ecdsa_recover_public_key<Sha256Hasher, secp256r1::fq, secp256r1::fr, secp256r1::g1>(message, signature);
90 EXPECT_EQ(result,
true);
91 EXPECT_EQ(recovered_public_key, account.
public_key);
94TEST(ecdsa, check_overflowing_r_and_s_are_rejected)
99 std::string message(message_vec.begin(), message_vec.end());
107 key_pair = { private_key, public_key };
108 signature = ecdsa_construct_signature<Sha256Hasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(message, key_pair);
111 ecdsa_verify_signature<Sha256Hasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(message, public_key, signature);
115 const auto* p_r = &signature.
r[0];
122 auto* p_r_m = &signature.
r[0];
125 ecdsa_verify_signature<Sha256Hasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(message, public_key, signature);
127 EXPECT_FALSE(result);
129 const auto* p_s = &signature.
s[0];
134 auto* p_r_s = &signature.
s[0];
138 ecdsa_verify_signature<Sha256Hasher, grumpkin::fq, grumpkin::fr, grumpkin::g1>(message, public_key, signature);
139 EXPECT_FALSE(result);
142TEST(ecdsa, verify_signature_secp256r1_sha256_NIST_1)
161 std::array<uint8_t, 32> r{
162 0xf3, 0xac, 0x80, 0x61, 0xb5, 0x14, 0x79, 0x5b, 0x88, 0x43, 0xe3, 0xd6, 0x62, 0x95, 0x27, 0xed,
163 0x2a, 0xfd, 0x6b, 0x1f, 0x6a, 0x55, 0x5a, 0x7a, 0xca, 0xbb, 0x5e, 0x6f, 0x79, 0xc8, 0xc2, 0xac,
166 std::array<uint8_t, 32> s{
167 0x8b, 0xf7, 0x78, 0x19, 0xca, 0x05, 0xa6, 0xb2, 0x78, 0x6c, 0x76, 0x26, 0x2b, 0xf7, 0x37, 0x1c,
168 0xef, 0x97, 0xb2, 0x18, 0xe9, 0x6f, 0x17, 0x5a, 0x3c, 0xcd, 0xda, 0x2a, 0xcc, 0x05, 0x89, 0x03,
173 "5905238877c77421f73e43ee3da6f2d9e2ccad5fc942dcec0cbd25482935faaf416983fe165b1a045ee2bcd2e6dca3bdf46"
174 "c4310a7461f9a37960ca672d3feb5473e253605fb1ddfd28065b53cb5858a8ad28175bf9bd386a5e471ea7a65c17cc934a9"
175 "d791e91491eb3754d03799790fe2d308d16146d5c9b0d0debd97d79ce8");
176 std::string message(message_vec.begin(), message_vec.end());
179 ecdsa_verify_signature<Sha256Hasher, secp256r1::fq, secp256r1::fr, secp256r1::g1>(message, public_key, sig);
180 EXPECT_EQ(result,
true);