11 if (!point.on_curve()) {
12 BBAPI_ERROR(request,
"Input point must be on the curve");
14 return { point * scalar };
19 if (!point_a.on_curve()) {
20 BBAPI_ERROR(request,
"Input point_a must be on the curve");
22 if (!point_b.on_curve()) {
23 BBAPI_ERROR(request,
"Input point_b must be on the curve");
25 return { point_a + point_b };
30 for (
const auto& p : points) {
32 BBAPI_ERROR(request,
"Input point must be on the curve");
35 auto output = grumpkin::g1::element::batch_mul_with_endomorphism(points, scalar);
46 auto bigint_input = from_buffer<uint512_t>(input.data());
48 uint512_t target_output = bigint_input % barretenberg_modulus;
54 if (!point.on_curve()) {
55 BBAPI_ERROR(request,
"Input point must be on the curve");
57 return { point * scalar };
67 auto bigint_input = from_buffer<uint512_t>(input.data());
69 uint512_t target_output = bigint_input % secp256k1_modulus;
75 auto [is_sqr, root] = input.sqrt();
76 return { is_sqr, root };
81 auto [is_sqr, root] = input.sqrt();
82 return { is_sqr, root };
87 if (!point.on_curve()) {
88 BBAPI_ERROR(request,
"Input point must be on the curve");
90 auto result = point * scalar;
91 if (!result.on_curve()) {
92 BBAPI_ERROR(request,
"Output point must be on the curve");
99 if (!point.on_curve()) {
100 BBAPI_ERROR(request,
"Input point must be on the curve");
102 auto result = point * scalar;
103 if (!result.on_curve()) {
104 BBAPI_ERROR(request,
"Output point must be on the curve");
111 return { point.on_curve() };
117 uint256_t compressed_value = from_buffer<uint256_t>(compressed.data());
119 auto point = bb::g1::affine_element::from_compressed(compressed_value);
121 if (!point.on_curve()) {
122 BBAPI_ERROR(request,
"Decompressed point is not on the curve");
Elliptic curve operations command definitions for the Barretenberg RPC API.
#define BBAPI_ERROR(request, msg)
Macro to set error in BBApiRequest and return default response.
field< Bn254FrParams > fr
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
Response execute(BBApiRequest &request) &&
static constexpr uint256_t modulus
static field random_element(numeric::RNG *engine=nullptr) noexcept