10 auto priv_key = from_buffer<fr>(private_key);
12 write(public_key_buf, pub_key);
17 ecdsa__compute_public_key<secp256k1::fr, secp256k1::g1>(private_key, public_key_buf);
22 ecdsa__compute_public_key<secp256r1::fr, secp256r1::g1>(private_key, public_key_buf);
25template <
typename fr,
typename fq,
typename g1>
28 uint8_t
const* private_key,
29 uint8_t* output_sig_r,
30 uint8_t* output_sig_s,
31 uint8_t* output_sig_v)
34 auto priv_key = from_buffer<fr>(private_key);
35 auto pub_key =
g1::one * priv_key;
38 auto sig = ecdsa_construct_signature<Sha256Hasher, fq, fr, g1>(std::string((
char*)message, msg_len), key_pair);
39 write(output_sig_r, sig.r);
40 write(output_sig_s, sig.s);
41 write(output_sig_v, sig.v);
46 uint8_t
const* private_key,
47 uint8_t* output_sig_r,
48 uint8_t* output_sig_s,
49 uint8_t* output_sig_v)
51 ecdsa__construct_signature<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
52 message, msg_len, private_key, output_sig_r, output_sig_s, output_sig_v);
57 uint8_t
const* private_key,
58 uint8_t* output_sig_r,
59 uint8_t* output_sig_s,
60 uint8_t* output_sig_v)
62 ecdsa__construct_signature<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
63 message, msg_len, private_key, output_sig_r, output_sig_s, output_sig_v);
66template <
typename fr,
typename fq,
typename g1>
68 uint8_t
const* private_key,
69 uint8_t* output_sig_r,
70 uint8_t* output_sig_s,
71 uint8_t* output_sig_v)
74 auto priv_key = from_buffer<fr>(private_key);
75 auto pub_key =
g1::one * priv_key;
78 auto message = from_buffer<std::string>(message_buf);
80 auto sig = ecdsa_construct_signature<Sha256Hasher, fq, fr, g1>(message, key_pair);
81 write(output_sig_r, sig.r);
82 write(output_sig_s, sig.s);
83 write(output_sig_v, sig.v);
87 uint8_t
const* private_key,
88 uint8_t* output_sig_r,
89 uint8_t* output_sig_s,
90 uint8_t* output_sig_v)
92 ecdsa__construct_signature_<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
93 message_buf, private_key, output_sig_r, output_sig_s, output_sig_v);
97 uint8_t
const* private_key,
98 uint8_t* output_sig_r,
99 uint8_t* output_sig_s,
100 uint8_t* output_sig_v)
102 ecdsa__construct_signature_<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
103 message_buf, private_key, output_sig_r, output_sig_s, output_sig_v);
106template <
typename fr,
typename fq,
typename g1>
109 uint8_t
const* sig_r,
110 uint8_t
const* sig_s,
112 uint8_t* output_pub_key)
114 std::array<uint8_t, 32> r, s;
117 const uint8_t v = *sig_v;
120 auto recovered_pub_key =
121 ecdsa_recover_public_key<Sha256Hasher, fq, fr, g1>(std::string((
char*)message, msg_len), sig);
122 write(output_pub_key, recovered_pub_key);
127 uint8_t
const* sig_r,
128 uint8_t
const* sig_s,
130 uint8_t* output_pub_key)
132 ecdsa__recover_public_key_from_signature<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
133 message, msg_len, sig_r, sig_s, sig_v, output_pub_key);
138 uint8_t
const* sig_r,
139 uint8_t
const* sig_s,
141 uint8_t* output_pub_key)
143 ecdsa__recover_public_key_from_signature<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
144 message, msg_len, sig_r, sig_s, sig_v, output_pub_key);
147template <
typename fr,
typename fq,
typename g1>
149 uint8_t
const* message_buf, uint8_t
const* sig_r, uint8_t
const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key)
151 std::array<uint8_t, 32> r, s;
154 const uint8_t v = *sig_v;
156 auto message = from_buffer<std::string>(message_buf);
158 auto recovered_pub_key = ecdsa_recover_public_key<Sha256Hasher, fq, fr, g1>(message, sig);
159 write(output_pub_key, recovered_pub_key);
163 uint8_t
const* message_buf, uint8_t
const* sig_r, uint8_t
const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key)
165 ecdsa__recover_public_key_from_signature_<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
166 message_buf, sig_r, sig_s, sig_v, output_pub_key);
170 uint8_t
const* message_buf, uint8_t
const* sig_r, uint8_t
const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key)
172 ecdsa__recover_public_key_from_signature_<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
173 message_buf, sig_r, sig_s, sig_v, output_pub_key);
176template <
typename fr,
typename fq,
typename g1>
179 uint8_t
const* pub_key,
180 uint8_t
const* sig_r,
181 uint8_t
const* sig_s,
182 uint8_t
const* sig_v)
184 auto pubk = from_buffer<typename g1::affine_element>(pub_key);
185 std::array<uint8_t, 32> r, s;
188 const uint8_t v = *sig_v;
191 return ecdsa_verify_signature<Sha256Hasher, fq, fr, g1>(std::string((
char*)message, msg_len), pubk, sig);
196 uint8_t
const* pub_key,
197 uint8_t
const* sig_r,
198 uint8_t
const* sig_s,
199 uint8_t
const* sig_v)
201 return ecdsa__verify_signature<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
202 message, msg_len, pub_key, sig_r, sig_s, sig_v);
207 uint8_t
const* pub_key,
208 uint8_t
const* sig_r,
209 uint8_t
const* sig_s,
210 uint8_t
const* sig_v)
212 return ecdsa__verify_signature<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
213 message, msg_len, pub_key, sig_r, sig_s, sig_v);
216template <
typename fr,
typename fq,
typename g1>
218 uint8_t
const* pub_key,
219 uint8_t
const* sig_r,
220 uint8_t
const* sig_s,
221 uint8_t
const* sig_v,
224 auto pubk = from_buffer<typename g1::affine_element>(pub_key);
225 std::array<uint8_t, 32> r, s;
228 const uint8_t v = *sig_v;
230 auto message = from_buffer<std::string>(message_buf);
232 *result = ecdsa_verify_signature<Sha256Hasher, fq, fr, g1>(message, pubk, sig);
236 uint8_t
const* pub_key,
237 uint8_t
const* sig_r,
238 uint8_t
const* sig_s,
239 uint8_t
const* sig_v,
242 ecdsa__verify_signature_<secp256k1::fr, secp256k1::fq, secp256k1::g1>(
243 message, pub_key, sig_r, sig_s, sig_v, result);
247 uint8_t
const* pub_key,
248 uint8_t
const* sig_r,
249 uint8_t
const* sig_s,
250 uint8_t
const* sig_v,
253 ecdsa__verify_signature_<secp256r1::fr, secp256r1::fq, secp256r1::g1>(
254 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