1#include "../bigfield/bigfield.hpp"
2#include "../biggroup/biggroup.hpp"
3#include "../bool/bool.hpp"
4#include "../field/field.hpp"
11#include "gtest/gtest.h"
24 using fr =
typename Curve::ScalarFieldNative;
25 using g1 =
typename Curve::GroupNative;
32 copy.finalize_circuit();
33 const size_t num_gates = copy.get_num_finalized_gates();
34 const size_t tables_size = copy.get_tables_size();
35 info(
"num gates = ", num_gates,
", tables_size = ", tables_size,
", max = ",
std::max(num_gates, tables_size));
42 const size_t num_repetitions = 4;
43 for (
size_t i = 0; i < num_repetitions; ++i) {
47 auto output = element_ct::secp256r1_fixed_base_mul(u);
50 EXPECT_EQ(output.x().get_value().lo,
uint256_t(expected.x));
51 EXPECT_EQ(output.y().get_value().lo,
uint256_t(expected.y));
63 auto output = element_ct::secp256r1_fixed_base_mul(u);
65 EXPECT_EQ(output.x().get_value().lo,
uint256_t(expected.x));
66 EXPECT_EQ(output.y().get_value().lo,
uint256_t(expected.y));
81 auto output = element_ct::secp256r1_ecdsa_mul(P_a, u1, u2);
84 EXPECT_EQ(output.result.x().get_value().lo,
uint256_t(expected.x));
85 EXPECT_EQ(output.result.y().get_value().lo,
uint256_t(expected.y));
99 auto output = element_ct::secp256r1_ecdsa_mul(P_a, u1, u2);
103 EXPECT_EQ(output.result.x().get_value().lo,
uint256_t(expected.x));
104 EXPECT_EQ(output.result.y().get_value().lo,
uint256_t(expected.y));
117 TestFixture::test_fixed_base_mul_secp256r1();
122 TestFixture::test_fixed_base_mul_secp256r1_single_call_gate_count();
127 TestFixture::test_ecdsa_mul_secp256r1_gate_count();
132 TestFixture::test_ecdsa_mul_secp256r1_u1_zero();
testing::Types< stdlib::secp256r1< bb::UltraCircuitBuilder >, stdlib::secp256r1< bb::MegaCircuitBuilder > > Secp256r1TestTypes
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
typename grumpkin::g1 Group
group_elements::affine_element< Fq, Fr, Params > affine_element
static constexpr element one
static bigfield from_witness(Builder *ctx, const bb::field< T > &input)
static void test_fixed_base_mul_secp256r1_single_call_gate_count()
static constexpr auto EXPECT_CIRCUIT_CORRECTNESS
typename Curve::ScalarFieldNative fr
static void test_ecdsa_mul_secp256r1_gate_count()
static void test_fixed_base_mul_secp256r1()
typename Curve::Builder Builder
static void test_ecdsa_mul_secp256r1_u1_zero()
typename Curve::ScalarField scalar_ct
typename Curve::Group element_ct
typename Curve::GroupNative g1
typename g1::affine_element affine_element
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(CommitmentKeyTest, Curves)
TYPED_TEST(CommitmentKeyTest, CommitToZeroPoly)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static field random_element(numeric::RNG *engine=nullptr) noexcept
static constexpr field zero()