Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
c_bind.cpp
Go to the documentation of this file.
1#include "secp256k1.hpp"
2
3using namespace bb;
4
5// Silencing warnings about reserved identifiers. Fixing would break downstream code that calls our WASM API.
6// NOLINTBEGIN(cert-dcl37-c, cert-dcl51-cpp, bugprone-reserved-identifier)
7WASM_EXPORT void ecc_secp256k1__mul(uint8_t const* point_buf, uint8_t const* scalar_buf, uint8_t* result)
8{
10 auto point = from_buffer<secp256k1::g1::affine_element>(point_buf);
11 auto scalar = from_buffer<secp256k1::fr>(scalar_buf);
12 secp256k1::g1::affine_element r = point * scalar;
13 write(result, r);
14}
15
21
23{
24 auto bigint_input = from_buffer<uint512_t>(input);
25
26 uint512_t barretenberg_modulus(secp256k1::fr::modulus);
27
28 uint512_t target_output = bigint_input % barretenberg_modulus;
29 write(result, target_output.lo);
30}
31// NOLINTEND(cert-dcl37-c, cert-dcl51-cpp, bugprone-reserved-identifier)
WASM_EXPORT void ecc_secp256k1__reduce512_buffer_mod_circuit_modulus(uint8_t *input, uint8_t *result)
Definition c_bind.cpp:22
WASM_EXPORT void ecc_secp256k1__get_random_scalar_mod_circuit_modulus(uint8_t *result)
Definition c_bind.cpp:16
WASM_EXPORT void ecc_secp256k1__mul(uint8_t const *point_buf, uint8_t const *scalar_buf, uint8_t *result)
Definition c_bind.cpp:7
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
void write(B &buf, field2< base_field, Params > const &value)
void write(auto &buf, const msgpack_concepts::HasMsgPack auto &obj)
Automatically derived write for any object that defines .msgpack() (implicitly defined by MSGPACK_FIE...
static constexpr uint256_t modulus
static field random_element(numeric::RNG *engine=nullptr) noexcept
#define WASM_EXPORT