16 auto priv_key = from_buffer<fr>(private_key);
18 write(public_key_buf, pub_key);
23 ecdsa__compute_public_key<secp256k1::fr, secp256k1::g1>(private_key, public_key_buf);
28 ecdsa__compute_public_key<secp256r1::fr, secp256r1::g1>(private_key, public_key_buf);
31template <
typename fr,
typename fq,
typename g1>
34 uint8_t
const* private_key,
35 uint8_t* output_sig_r,
36 uint8_t* output_sig_s,
37 uint8_t* output_sig_v)
40 auto priv_key = from_buffer<fr>(private_key);
41 auto pub_key =
g1::one * priv_key;
44 auto sig = ecdsa_construct_signature<Sha256Hasher, fq, fr, g1>(std::string((
char*)message, msg_len), key_pair);
45 write(output_sig_r, sig.r);
46 write(output_sig_s, sig.s);
47 write(output_sig_v, sig.v);
52 uint8_t
const* private_key,
53 uint8_t* output_sig_r,
54 uint8_t* output_sig_s,
55 uint8_t* output_sig_v)
57 ecdsa__construct_signature<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
58 message, msg_len, private_key, output_sig_r, output_sig_s, output_sig_v);
63 uint8_t
const* private_key,
64 uint8_t* output_sig_r,
65 uint8_t* output_sig_s,
66 uint8_t* output_sig_v)
68 ecdsa__construct_signature<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
69 message, msg_len, private_key, output_sig_r, output_sig_s, output_sig_v);
72template <
typename fr,
typename fq,
typename g1>
74 uint8_t
const* private_key,
75 uint8_t* output_sig_r,
76 uint8_t* output_sig_s,
77 uint8_t* output_sig_v)
80 auto priv_key = from_buffer<fr>(private_key);
81 auto pub_key =
g1::one * priv_key;
84 auto message = from_buffer<std::string>(message_buf);
86 auto sig = ecdsa_construct_signature<Sha256Hasher, fq, fr, g1>(message, key_pair);
87 write(output_sig_r, sig.r);
88 write(output_sig_s, sig.s);
89 write(output_sig_v, sig.v);
93 uint8_t
const* private_key,
94 uint8_t* output_sig_r,
95 uint8_t* output_sig_s,
96 uint8_t* output_sig_v)
98 ecdsa__construct_signature_<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
99 message_buf, private_key, output_sig_r, output_sig_s, output_sig_v);
103 uint8_t
const* private_key,
104 uint8_t* output_sig_r,
105 uint8_t* output_sig_s,
106 uint8_t* output_sig_v)
108 ecdsa__construct_signature_<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
109 message_buf, private_key, output_sig_r, output_sig_s, output_sig_v);
112template <
typename fr,
typename fq,
typename g1>
115 uint8_t
const* sig_r,
116 uint8_t
const* sig_s,
118 uint8_t* output_pub_key)
120 std::array<uint8_t, 32> r, s;
123 const uint8_t v = *sig_v;
126 auto recovered_pub_key =
127 ecdsa_recover_public_key<Sha256Hasher, fq, fr, g1>(std::string((
char*)message, msg_len), sig);
128 write(output_pub_key, recovered_pub_key);
133 uint8_t
const* sig_r,
134 uint8_t
const* sig_s,
136 uint8_t* output_pub_key)
138 ecdsa__recover_public_key_from_signature<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
139 message, msg_len, sig_r, sig_s, sig_v, output_pub_key);
144 uint8_t
const* sig_r,
145 uint8_t
const* sig_s,
147 uint8_t* output_pub_key)
149 ecdsa__recover_public_key_from_signature<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
150 message, msg_len, sig_r, sig_s, sig_v, output_pub_key);
153template <
typename fr,
typename fq,
typename g1>
155 uint8_t
const* message_buf, uint8_t
const* sig_r, uint8_t
const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key)
157 std::array<uint8_t, 32> r, s;
160 const uint8_t v = *sig_v;
162 auto message = from_buffer<std::string>(message_buf);
164 auto recovered_pub_key = ecdsa_recover_public_key<Sha256Hasher, fq, fr, g1>(message, sig);
165 write(output_pub_key, recovered_pub_key);
169 uint8_t
const* message_buf, uint8_t
const* sig_r, uint8_t
const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key)
171 ecdsa__recover_public_key_from_signature_<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
172 message_buf, sig_r, sig_s, sig_v, output_pub_key);
176 uint8_t
const* message_buf, uint8_t
const* sig_r, uint8_t
const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key)
178 ecdsa__recover_public_key_from_signature_<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
179 message_buf, sig_r, sig_s, sig_v, output_pub_key);
182template <
typename fr,
typename fq,
typename g1>
185 uint8_t
const* pub_key,
186 uint8_t
const* sig_r,
187 uint8_t
const* sig_s,
188 uint8_t
const* sig_v)
190 auto pubk = from_buffer<typename g1::affine_element>(pub_key);
191 std::array<uint8_t, 32> r, s;
194 const uint8_t v = *sig_v;
197 return ecdsa_verify_signature<Sha256Hasher, fq, fr, g1>(std::string((
char*)message, msg_len), pubk, sig);
202 uint8_t
const* pub_key,
203 uint8_t
const* sig_r,
204 uint8_t
const* sig_s,
205 uint8_t
const* sig_v)
207 return ecdsa__verify_signature<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
208 message, msg_len, pub_key, sig_r, sig_s, sig_v);
213 uint8_t
const* pub_key,
214 uint8_t
const* sig_r,
215 uint8_t
const* sig_s,
216 uint8_t
const* sig_v)
218 return ecdsa__verify_signature<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
219 message, msg_len, pub_key, sig_r, sig_s, sig_v);
222template <
typename fr,
typename fq,
typename g1>
224 uint8_t
const* pub_key,
225 uint8_t
const* sig_r,
226 uint8_t
const* sig_s,
227 uint8_t
const* sig_v,
230 auto pubk = from_buffer<typename g1::affine_element>(pub_key);
231 std::array<uint8_t, 32> r, s;
234 const uint8_t v = *sig_v;
236 auto message = from_buffer<std::string>(message_buf);
238 *result = ecdsa_verify_signature<Sha256Hasher, fq, fr, g1>(message, pubk, sig);
242 uint8_t
const* pub_key,
243 uint8_t
const* sig_r,
244 uint8_t
const* sig_s,
245 uint8_t
const* sig_v,
248 ecdsa__verify_signature_<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
249 message, pub_key, sig_r, sig_s, sig_v, result);
253 uint8_t
const* pub_key,
254 uint8_t
const* sig_r,
255 uint8_t
const* sig_s,
256 uint8_t
const* sig_v,
259 ecdsa__verify_signature_<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
260 message, pub_key, sig_r, sig_s, sig_v, result);
static constexpr element one
WASM_EXPORT void ecdsa_r_recover_public_key_from_signature_(uint8_t const *message_buf, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t *sig_v, uint8_t *output_pub_key)
bool ecdsa__verify_signature(uint8_t const *message, size_t msg_len, uint8_t const *pub_key, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t const *sig_v)
WASM_EXPORT bool ecdsa_r_verify_signature(uint8_t const *message, size_t msg_len, uint8_t const *pub_key, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t const *sig_v)
WASM_EXPORT void ecdsa_r_compute_public_key(uint8_t const *private_key, uint8_t *public_key_buf)
WASM_EXPORT void ecdsa_r_construct_signature_(uint8_t const *message_buf, uint8_t const *private_key, uint8_t *output_sig_r, uint8_t *output_sig_s, uint8_t *output_sig_v)
void ecdsa__construct_signature(uint8_t const *message, size_t msg_len, uint8_t const *private_key, uint8_t *output_sig_r, uint8_t *output_sig_s, uint8_t *output_sig_v)
void ecdsa__recover_public_key_from_signature(uint8_t const *message, size_t msg_len, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t *sig_v, uint8_t *output_pub_key)
WASM_EXPORT void ecdsa_r_construct_signature(uint8_t const *message, size_t msg_len, uint8_t const *private_key, uint8_t *output_sig_r, uint8_t *output_sig_s, uint8_t *output_sig_v)
void ecdsa__recover_public_key_from_signature_(uint8_t const *message_buf, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t *sig_v, uint8_t *output_pub_key)
void ecdsa__compute_public_key(uint8_t const *private_key, uint8_t *public_key_buf)
WASM_EXPORT void ecdsa_r_recover_public_key_from_signature(uint8_t const *message, size_t msg_len, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t *sig_v, uint8_t *output_pub_key)
WASM_EXPORT void ecdsa_r_verify_signature_(uint8_t const *message, uint8_t const *pub_key, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t const *sig_v, bool *result)
void ecdsa__construct_signature_(uint8_t const *message_buf, uint8_t const *private_key, uint8_t *output_sig_r, uint8_t *output_sig_s, uint8_t *output_sig_v)
void ecdsa__verify_signature_(uint8_t const *message_buf, uint8_t const *pub_key, uint8_t const *sig_r, uint8_t const *sig_s, uint8_t const *sig_v, bool *result)
void write(B &buf, SchnorrProofOfPossession< G1, Hash > const &proof_of_possession)
Entry point for Barretenberg command-line interface.
void write(auto &buf, const msgpack_concepts::HasMsgPack auto &obj)
Automatically derived write for any object that defines .msgpack() (implicitly defined by MSGPACK_FIE...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept