Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
blake2s.fuzzer.cpp
Go to the documentation of this file.
1#include "blake2s.hpp"
5#include <cassert>
6#include <cstdint>
7#include <vector>
8
9using namespace bb;
10using namespace bb::stdlib;
11
12#ifdef FUZZING_SHOW_INFORMATION
13#define PRINT_BYTESTRING(header, bs) \
14 { \
15 std::cout << header; \
16 for (const uint8_t& x : bs) { \
17 std::cout << "0x" << std::hex << std::uppercase << std::setw(2) << std::setfill('0') \
18 << static_cast<int>(x) << ", " << std::dec; \
19 } \
20 std::cout << std::endl; \
21 }
22#else
23#define PRINT_BYTESTRING(header, bs)
24#endif
25
26extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
27{
28 if (Size == 0) {
29 return 0;
30 }
32 std::vector<uint8_t> input_vec(Data, Data + Size);
33
34 PRINT_BYTESTRING("Hashing: ", input_vec);
35
37 auto output_bits = Blake2s<UltraCircuitBuilder>::hash(input);
38 auto output_str = output_bits.get_value();
39 std::vector<uint8_t> circuit_output(output_str.begin(), output_str.end());
40
41 auto expected_arr = bb::crypto::blake2s(input_vec);
42 std::vector<uint8_t> expected(expected_arr.begin(), expected_arr.end());
43
44 PRINT_BYTESTRING("circuit output: ", circuit_output);
45 PRINT_BYTESTRING("Expected: ", expected);
46
47 assert(circuit_output == expected);
49 return 0;
50}
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
#define PRINT_BYTESTRING(header, bs)
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
static byte_array_ct hash(const byte_array_ct &input)
Definition blake2s.cpp:133
Represents a dynamic array of bytes in-circuit.
AluTraceBuilder builder
Definition alu.test.cpp:124
std::array< uint8_t, BLAKE2S_OUTBYTES > blake2s(std::vector< uint8_t > const &input)
Definition blake2s.cpp:232
Entry point for Barretenberg command-line interface.
Definition api.hpp:5