8#include "../hashers/hashers.hpp"
26 std::array<uint8_t, 32>
r;
27 std::array<uint8_t, 32>
s;
33template <
typename Hash,
typename Fq,
typename Fr,
typename G1>
36template <
typename Hash,
typename Fq,
typename Fr,
typename G1>
40template <
typename Hash,
typename Fq,
typename Fr,
typename G1>
42 const typename G1::affine_element& public_key,
47 return lhs.
r == rhs.
r && lhs.
s == rhs.
s && lhs.
v == rhs.
v;
52 os <<
"{ " << sig.
r <<
", " << sig.
s <<
", " <<
static_cast<uint32_t
>(sig.
v) <<
" }";
G1::affine_element ecdsa_recover_public_key(const std::string &message, const ecdsa_signature &sig)
ecdsa_signature ecdsa_construct_signature(const std::string &message, const ecdsa_key_pair< Fr, G1 > &account)
bool operator==(ecdsa_signature const &lhs, ecdsa_signature const &rhs)
std::ostream & operator<<(std::ostream &os, ecdsa_signature const &sig)
bool ecdsa_verify_signature(const std::string &message, const typename G1::affine_element &public_key, const ecdsa_signature &signature)
MSGPACK_FIELDS(private_key, public_key)
G1::affine_element public_key
std::array< uint8_t, 32 > r
std::array< uint8_t, 32 > s