8#include <gtest/gtest.h>
33 static std::vector<std::string>
get_labels() {
return {
"None",
"Input",
"HashValue",
"Output" }; }
41 switch (invalid_witness_target) {
43 if constexpr (IsInputConstant) {
46 witness_values[constraint.
inputs[0].index] +=
FF(1);
51 if constexpr (IsInputConstant) {
60 witness_values[constraint.
result[0]] +=
FF(1);
67 return { constraint, witness_values };
77 if constexpr (IsInputConstant) {
80 uint32_t idx =
static_cast<uint32_t
>(witness_values.size());
81 witness_values.emplace_back(
FF(
value));
90 std::array<uint32_t, 8> hash_values = { 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
91 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 };
97 for (
size_t i = 0; i < 16; ++i) {
98 sha256_constraint.
inputs[i] = make_witness_or_constant(input_block[i]);
100 for (
size_t i = 0; i < 8; ++i) {
101 sha256_constraint.
hash_values[i] = make_witness_or_constant(hash_values[i]);
105 for (
size_t i = 0; i < 8; ++i) {
106 sha256_constraint.
result[i] =
static_cast<uint32_t
>(witness_values.size());
107 witness_values.emplace_back(
FF(result[i]));
113template <
class Builder>
115 public TestClass<Sha256TestingFunctions<Builder, true>> {
120using BuilderTypes = testing::Types<UltraCircuitBuilder, MegaCircuitBuilder>;
127 TestFixture::template test_vk_independence<Flavor>();
132 [[maybe_unused]] std::vector<std::string> _ = TestFixture::test_tampering();
136template <
class Builder>
138 public TestClass<Sha256TestingFunctions<Builder, false>> {
148 TestFixture::template test_vk_independence<Flavor>();
153 [[maybe_unused]] std::vector<std::string> _ = TestFixture::test_tampering();
static ProgramMetadata generate_metadata()
static std::pair< AcirConstraint, WitnessVector > invalidate_witness(AcirConstraint constraint, WitnessVector witness_values, const InvalidWitness::Target &invalid_witness_target)
static void generate_constraints(Sha256Compression &sha256_constraint, WitnessVector &witness_values)
Generate a valid Sha256Compression constraint with correct witness values.
std::array< uint32_t, 8 > sha256_block(const std::array< uint32_t, 8 > &h_init, const std::array< uint32_t, 16 > &input)
SHA-256 compression function (FIPS 180-4 Section 6.2.2)
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
TYPED_TEST_SUITE(BoomerangRecursiveVerifierTest, Flavors)
Entry point for Barretenberg command-line interface.
TYPED_TEST(ShpleminiTest, CorrectnessOfMultivariateClaimBatching)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
::testing::Types< UltraCircuitBuilder, MegaCircuitBuilder > BuilderTypes
static std::vector< Target > get_all()
static std::vector< std::string > get_labels()