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// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
7#include "secp256k1.hpp"
8
9using namespace bb;
10
11// Silencing warnings about reserved identifiers. Fixing would break downstream code that calls our WASM API.
12// NOLINTBEGIN(cert-dcl37-c, cert-dcl51-cpp, bugprone-reserved-identifier)
13WASM_EXPORT void ecc_secp256k1__mul(uint8_t const* point_buf, uint8_t const* scalar_buf, uint8_t* result)
14{
15 using serialize::write;
16 auto point = from_buffer<secp256k1::g1::affine_element>(point_buf);
17 auto scalar = from_buffer<secp256k1::fr>(scalar_buf);
18 secp256k1::g1::affine_element r = point * scalar;
19 write(result, r);
20}
21
27
29{
30 auto bigint_input = from_buffer<uint512_t>(input);
31
32 uint512_t barretenberg_modulus(secp256k1::fr::modulus);
33
34 uint512_t target_output = bigint_input % barretenberg_modulus;
35 write(result, target_output.lo);
36}
37// 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:28
WASM_EXPORT void ecc_secp256k1__get_random_scalar_mod_circuit_modulus(uint8_t *result)
Definition c_bind.cpp:22
WASM_EXPORT void ecc_secp256k1__mul(uint8_t const *point_buf, uint8_t const *scalar_buf, uint8_t *result)
Definition c_bind.cpp:13
Entry point for Barretenberg command-line interface.
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...
General class for prime fields see Prime field documentation["field documentation"] for general imple...
static constexpr uint256_t modulus
static field random_element(numeric::RNG *engine=nullptr) noexcept
#define WASM_EXPORT