8#include "../hashers/hashers.hpp"
19static constexpr int ECDSA_RECOVERY_ID_OFFSET = 27;
20static constexpr int ECDSA_R_FINITENESS_OFFSET = 2;
31 std::array<uint8_t, 32>
r;
32 std::array<uint8_t, 32>
s;
43template <
typename Hash,
typename Fq,
typename Fr,
typename G1>
65template <
typename Hash,
typename Fq,
typename Fr,
typename G1>
72template <
typename Hash,
typename Fq,
typename Fr,
typename G1>
74 const typename G1::affine_element& public_key,
88 return lhs.
r == rhs.r && lhs.
s == rhs.s && lhs.
v == rhs.v;
91inline std::ostream&
operator<<(std::ostream& os, ecdsa_signature
const& sig)
93 os <<
"{ " << sig.r <<
", " << sig.s <<
", " <<
static_cast<uint32_t
>(sig.v) <<
" }";
99#include "ecdsa_impl.hpp"
G1::affine_element ecdsa_recover_public_key(const std::string &message, const ecdsa_signature &sig)
std::ostream & operator<<(std::ostream &os, schnorr_signature const &sig)
Fr ecdsa_hash_message(const std::string &message)
ecdsa_signature ecdsa_construct_signature(const std::string &message, const ecdsa_key_pair< Fr, G1 > &account)
Generate the ECDSA for the message using the provided account key pair and hash function.
bool ecdsa_verify_signature(const std::string &message, const typename G1::affine_element &public_key, const ecdsa_signature &sig)
bool operator==(schnorr_signature const &lhs, schnorr_signature const &rhs)
MSGPACK_FIELDS(private_key, public_key)
G1::affine_element public_key
std::array< uint8_t, 32 > r
std::array< uint8_t, 32 > s