14#include <gtest/gtest.h>
25void check_bn254_consistency(
const fs::path& crs_download_path,
size_t num_points,
bool allow_download)
33 g1_points[i] = from_buffer<g1::affine_element>(g1_buf, i *
sizeof(
g1::affine_element));
38 auto g2_point = from_buffer<g2::affine_element>(g2_buf);
44 auto f_prover = file_crs.get_crs(num_points);
45 auto m_prover = mem_crs.get_crs(num_points);
46 EXPECT_EQ(m_prover->get_monomial_size(), f_prover->get_monomial_size());
52 auto f_ver = file_crs.get_verifier_crs();
53 auto m_ver = mem_crs.get_verifier_crs();
54 EXPECT_EQ(m_ver->get_g2x(), f_ver->get_g2x());
56 memcmp(m_ver->get_precomputed_g2_lines(),
57 f_ver->get_precomputed_g2_lines(),
62void check_grumpkin_consistency(
const fs::path& crs_download_path,
size_t num_points,
bool allow_download)
77 auto f_prover = file_crs.get_crs(num_points);
78 auto m_prover = mem_crs.get_crs(num_points);
79 EXPECT_EQ(m_prover->get_monomial_size(), f_prover->get_monomial_size());
90 const std::filesystem::path& temp_crs_path =
"barretenberg_srs_test_crs_bn254";
91 fs::remove_all(temp_crs_path);
92 fs::create_directories(temp_crs_path);
94 ASSERT_ANY_THROW(check_bn254_consistency(temp_crs_path, 1,
false));
95 check_bn254_consistency(temp_crs_path, 1,
true);
101 const std::filesystem::path& temp_crs_path =
"barretenberg_srs_test_crs_grumpkin";
102 fs::remove_all(temp_crs_path);
103 fs::create_directories(temp_crs_path);
105 ASSERT_ANY_THROW(check_grumpkin_consistency(temp_crs_path, 1,
false));
106 check_grumpkin_consistency(temp_crs_path, 1,
true);
112 const std::filesystem::path& temp_crs_path =
"barretenberg_srs_test_crs_bn254_fallback";
113 fs::remove_all(temp_crs_path);
114 fs::create_directories(temp_crs_path);
117 std::string bad_primary =
"http://nonexistent.invalid/g1.dat";
118 std::string good_fallback =
"http://crs.aztec-labs.com/g1.dat";
122 EXPECT_EQ(points.size(), 1);
126 fs::remove_all(temp_crs_path);
135 EXPECT_EQ(hash, bb::srs::BN254_G1_CHUNK_HASHES[0]);
144 data[bb::srs::SRS_CHUNK_SIZE_BYTES / 2] ^= 0xFF;
147 EXPECT_NE(hash, bb::srs::BN254_G1_CHUNK_HASHES[0]);
typename Group::affine_element AffineElement
const std::vector< MemoryValue > data
Sha256Hash sha256(const ByteContainer &input)
SHA-256 hash function (FIPS 180-4)
std::filesystem::path bb_crs_path()
constexpr g1::affine_element BN254_G1_FIRST_ELEMENT
Expected first G1 element from BN254 CRS.
Entry point for Barretenberg command-line interface.
std::vector< g1::affine_element > get_bn254_g1_data(const std::filesystem::path &path, size_t num_points, bool allow_download, const std::string &primary_url, const std::string &fallback_url)
std::vector< uint8_t > read_file(const std::string &filename, size_t bytes=0)
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept