18 auto point = from_buffer<grumpkin::g1::affine_element>(point_buf);
19 auto scalar = from_buffer<grumpkin::fr>(scalar_buf);
29 auto point_a = from_buffer<grumpkin::g1::affine_element>(point_a_buf);
30 auto point_b = from_buffer<grumpkin::g1::affine_element>(point_b_buf);
37 uint8_t
const* scalar_buf,
43 points.reserve(num_points);
44 for (
size_t i = 0; i < num_points; ++i) {
45 points.emplace_back(from_buffer<grumpkin::g1::affine_element>(point_buf + (i * 64)));
47 auto scalar = from_buffer<grumpkin::fr>(scalar_buf);
48 auto output = grumpkin::g1::element::batch_mul_with_endomorphism(points, scalar);
49 for (
size_t i = 0; i < num_points; ++i) {
51 uint8_t* result_ptr = result + (i * 64);
59 write(result, output);
64 auto bigint_input = from_buffer<uint512_t>(input);
68 uint512_t target_output = bigint_input % barretenberg_modulus;
69 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