12 auto point = from_buffer<grumpkin::g1::affine_element>(point_buf);
13 auto scalar = from_buffer<grumpkin::fr>(scalar_buf);
23 auto point_a = from_buffer<grumpkin::g1::affine_element>(point_a_buf);
24 auto point_b = from_buffer<grumpkin::g1::affine_element>(point_b_buf);
31 uint8_t
const* scalar_buf,
37 points.reserve(num_points);
38 for (
size_t i = 0; i < num_points; ++i) {
39 points.emplace_back(from_buffer<grumpkin::g1::affine_element>(point_buf + (i * 64)));
41 auto scalar = from_buffer<grumpkin::fr>(scalar_buf);
42 auto output = grumpkin::g1::element::batch_mul_with_endomorphism(points, scalar);
43 for (
size_t i = 0; i < num_points; ++i) {
45 uint8_t* result_ptr = result + (i * 64);
53 write(result, output);
58 auto bigint_input = from_buffer<uint512_t>(input);
62 uint512_t target_output = bigint_input % barretenberg_modulus;
63 write(result, target_output.
lo);
WASM_EXPORT void ecc_grumpkin__get_random_scalar_mod_circuit_modulus(uint8_t *result)
WASM_EXPORT void ecc_grumpkin__batch_mul(uint8_t const *point_buf, uint8_t const *scalar_buf, uint32_t num_points, uint8_t *result)
WASM_EXPORT void ecc_grumpkin__reduce512_buffer_mod_circuit_modulus(uint8_t *input, uint8_t *result)
WASM_EXPORT void ecc_grumpkin__mul(uint8_t const *point_buf, uint8_t const *scalar_buf, uint8_t *result)
WASM_EXPORT void ecc_grumpkin__add(uint8_t const *point_a_buf, uint8_t const *point_b_buf, uint8_t *result)
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...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static constexpr uint256_t modulus
static field random_element(numeric::RNG *engine=nullptr) noexcept