Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
keccak.fuzzer.cpp
Go to the documentation of this file.
1#include "keccak.hpp"
5#include <cassert>
6#include <cstdint>
7#include <vector>
8
9using namespace bb;
10using namespace bb::stdlib;
11
12extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
13{
14 if (Size == 0)
15 return 0;
17 std::vector<uint8_t> input_vec(Data, Data + Size);
19 auto output_bits = keccak<UltraCircuitBuilder>::hash(input);
20 auto output_str = output_bits.get_value();
21 std::vector<uint8_t> circuit_output(output_str.begin(), output_str.end());
22
23 auto expected_struct = ethash_keccak256(input_vec.data(), input_vec.size());
24 std::vector<uint8_t> expected(reinterpret_cast<uint8_t*>(expected_struct.word64s),
25 reinterpret_cast<uint8_t*>(expected_struct.word64s) + 32);
26
27 assert(circuit_output == expected);
29 return 0;
30}
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
Represents a dynamic array of bytes in-circuit.
KECCAAAAAAAAAAK.
Definition keccak.hpp:25
AluTraceBuilder builder
Definition alu.test.cpp:123
struct keccak256 ethash_keccak256(const uint8_t *data, size_t size) NOEXCEPT
Definition keccak.cpp:107
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
Entry point for Barretenberg command-line interface.