Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bigfield.fuzzer.hpp File Reference

Go to the source code of this file.

Classes

class  BigFieldBase< Builder >
 The class parametrizing Bigfield fuzzing instructions, execution, etc. More...
 
class  BigFieldBase< Builder >::Instruction
 A class representing a single fuzzing instruction. More...
 
struct  BigFieldBase< Builder >::Instruction::Element
 
struct  BigFieldBase< Builder >::Instruction::TwoArgs
 
struct  BigFieldBase< Builder >::Instruction::ThreeArgs
 
struct  BigFieldBase< Builder >::Instruction::FourArgs
 
struct  BigFieldBase< Builder >::Instruction::FiveArgs
 
struct  BigFieldBase< Builder >::Instruction::MultAddArgs
 
struct  BigFieldBase< Builder >::Instruction::MultOpArgs
 
struct  BigFieldBase< Builder >::Instruction::SliceArgs
 
union  BigFieldBase< Builder >::Instruction::ArgumentContents
 
class  BigFieldBase< Builder >::ArgSizes
 
class  BigFieldBase< Builder >::InstructionWeights
 Optional subclass that governs limits on the use of certain instructions, since some of them can be too slow. More...
 
class  BigFieldBase< Builder >::Parser
 Parser class handles the parsing and writing the instructions back to data buffer. More...
 
class  BigFieldBase< Builder >::ExecutionHandler
 This class implements the execution of safeuint with an oracle to detect discrepancies. More...
 

Macros

#define HAVOC_TESTING
 
#define PRINT_SINGLE_ARG_INSTRUCTION(first_index, vector, operation_name, preposition)
 
#define PRINT_TWO_ARG_INSTRUCTION(first_index, second_index, vector, operation_name, preposition)
 
#define PRINT_TWO_ARG_ONE_VALUE_INSTRUCTION( first_index, second_index, third_index, vector, operation_name, preposition1, preposition2)
 
#define PRINT_TWO_ARG_TWO_VALUES_INSTRUCTION( first_index, second_index, value1, value2, vector, operation_name, preposition1, preposition2, preposition3)
 
#define PRINT_THREE_ARG_INSTRUCTION( first_index, second_index, third_index, vector, operation_name, preposition1, preposition2)
 
#define PRINT_RESULT(prefix, action, index, value)
 
#define PRINT_SLICE(first_index, lsb, msb, vector)
 
#define OPERATION_TYPE_SIZE   1
 
#define ELEMENT_SIZE   (sizeof(fq) + 1)
 
#define TWO_IN_ONE_OUT   3
 
#define THREE_IN_ONE_OUT   4
 
#define SLICE_ARGS_SIZE   6
 
#define MSUB_DIV_MINIMUM_MUL_PAIRS   1
 
#define MSUB_DIV_MAXIMUM_MUL_PAIRS   8
 
#define MSUB_DIV_MINIMUM_SUBTRACTED_ELEMENTS   0
 
#define MSUB_DIV_MAXIMUM_SUBTRACTED_ELEMENTS   8
 
#define MULT_MADD_MINIMUM_MUL_PAIRS   1
 
#define MULT_MADD_MAXIMUM_MUL_PAIRS   8
 
#define MULT_MADD_MINIMUM_ADDED_ELEMENTS   0
 
#define MULT_MADD_MAXIMUM_ADDED_ELEMENTS   8
 
#define SQR_ADD_MINIMUM_ADDED_ELEMENTS   0
 
#define SQR_ADD_MAXIMUM_ADDED_ELEMENTS   8
 
#define MONT_CONVERSION
 
#define INV_MONT_CONVERSION
 
#define PUT_RANDOM_BYTE_IF_LUCKY(variable)
 

Functions

int LLVMFuzzerInitialize (int *argc, char ***argv)
 
size_t LLVMFuzzerTestOneInput (const uint8_t *Data, size_t Size)
 Fuzzer entry function.
 

Variables

bool circuit_should_fail = false
 
FastRandom VarianceRNG (0)
 

Macro Definition Documentation

◆ ELEMENT_SIZE

#define ELEMENT_SIZE   (sizeof(fq) + 1)

Definition at line 110 of file bigfield.fuzzer.hpp.

◆ HAVOC_TESTING

#define HAVOC_TESTING

Definition at line 21 of file bigfield.fuzzer.hpp.

◆ INV_MONT_CONVERSION

#define INV_MONT_CONVERSION
Value:
if (convert_to_montgomery) { \
e = bb::fq(value_data).from_montgomery_form(); \
} else { \
e = bb::fq(value_data); \
}
field< Bn254FqParams > fq
Definition fq.hpp:169
BB_INLINE constexpr field from_montgomery_form() const noexcept

◆ MONT_CONVERSION

#define MONT_CONVERSION
Value:
if (convert_to_montgomery) { \
value_data = uint256_t(e.to_montgomery_form()); \
} else { \
value_data = uint256_t(e); \
}

◆ MSUB_DIV_MAXIMUM_MUL_PAIRS

#define MSUB_DIV_MAXIMUM_MUL_PAIRS   8

Definition at line 116 of file bigfield.fuzzer.hpp.

◆ MSUB_DIV_MAXIMUM_SUBTRACTED_ELEMENTS

#define MSUB_DIV_MAXIMUM_SUBTRACTED_ELEMENTS   8

Definition at line 118 of file bigfield.fuzzer.hpp.

◆ MSUB_DIV_MINIMUM_MUL_PAIRS

#define MSUB_DIV_MINIMUM_MUL_PAIRS   1

Definition at line 115 of file bigfield.fuzzer.hpp.

◆ MSUB_DIV_MINIMUM_SUBTRACTED_ELEMENTS

#define MSUB_DIV_MINIMUM_SUBTRACTED_ELEMENTS   0

Definition at line 117 of file bigfield.fuzzer.hpp.

◆ MULT_MADD_MAXIMUM_ADDED_ELEMENTS

#define MULT_MADD_MAXIMUM_ADDED_ELEMENTS   8

Definition at line 122 of file bigfield.fuzzer.hpp.

◆ MULT_MADD_MAXIMUM_MUL_PAIRS

#define MULT_MADD_MAXIMUM_MUL_PAIRS   8

Definition at line 120 of file bigfield.fuzzer.hpp.

◆ MULT_MADD_MINIMUM_ADDED_ELEMENTS

#define MULT_MADD_MINIMUM_ADDED_ELEMENTS   0

Definition at line 121 of file bigfield.fuzzer.hpp.

◆ MULT_MADD_MINIMUM_MUL_PAIRS

#define MULT_MADD_MINIMUM_MUL_PAIRS   1

Definition at line 119 of file bigfield.fuzzer.hpp.

◆ OPERATION_TYPE_SIZE

#define OPERATION_TYPE_SIZE   1

Definition at line 108 of file bigfield.fuzzer.hpp.

◆ PRINT_RESULT

#define PRINT_RESULT (   prefix,
  action,
  index,
  value 
)

Definition at line 103 of file bigfield.fuzzer.hpp.

◆ PRINT_SINGLE_ARG_INSTRUCTION

#define PRINT_SINGLE_ARG_INSTRUCTION (   first_index,
  vector,
  operation_name,
  preposition 
)

Definition at line 93 of file bigfield.fuzzer.hpp.

◆ PRINT_SLICE

#define PRINT_SLICE (   first_index,
  lsb,
  msb,
  vector 
)

Definition at line 105 of file bigfield.fuzzer.hpp.

◆ PRINT_THREE_ARG_INSTRUCTION

#define PRINT_THREE_ARG_INSTRUCTION (   first_index,
  second_index,
  third_index,
  vector,
  operation_name,
  preposition1,
  preposition2 
)

Definition at line 101 of file bigfield.fuzzer.hpp.

◆ PRINT_TWO_ARG_INSTRUCTION

#define PRINT_TWO_ARG_INSTRUCTION (   first_index,
  second_index,
  vector,
  operation_name,
  preposition 
)

Definition at line 94 of file bigfield.fuzzer.hpp.

◆ PRINT_TWO_ARG_ONE_VALUE_INSTRUCTION

#define PRINT_TWO_ARG_ONE_VALUE_INSTRUCTION (   first_index,
  second_index,
  third_index,
  vector,
  operation_name,
  preposition1,
  preposition2 
)

Definition at line 96 of file bigfield.fuzzer.hpp.

◆ PRINT_TWO_ARG_TWO_VALUES_INSTRUCTION

#define PRINT_TWO_ARG_TWO_VALUES_INSTRUCTION (   first_index,
  second_index,
  value1,
  value2,
  vector,
  operation_name,
  preposition1,
  preposition2,
  preposition3 
)

Definition at line 98 of file bigfield.fuzzer.hpp.

◆ PUT_RANDOM_BYTE_IF_LUCKY

#define PUT_RANDOM_BYTE_IF_LUCKY (   variable)
Value:
if (rng.next() & 1) { \
variable = rng.next() & 0xff; \
}

◆ SLICE_ARGS_SIZE

#define SLICE_ARGS_SIZE   6

Definition at line 113 of file bigfield.fuzzer.hpp.

◆ SQR_ADD_MAXIMUM_ADDED_ELEMENTS

#define SQR_ADD_MAXIMUM_ADDED_ELEMENTS   8

Definition at line 124 of file bigfield.fuzzer.hpp.

◆ SQR_ADD_MINIMUM_ADDED_ELEMENTS

#define SQR_ADD_MINIMUM_ADDED_ELEMENTS   0

Definition at line 123 of file bigfield.fuzzer.hpp.

◆ THREE_IN_ONE_OUT

#define THREE_IN_ONE_OUT   4

Definition at line 112 of file bigfield.fuzzer.hpp.

◆ TWO_IN_ONE_OUT

#define TWO_IN_ONE_OUT   3

Definition at line 111 of file bigfield.fuzzer.hpp.

Function Documentation

◆ LLVMFuzzerInitialize()

int LLVMFuzzerInitialize ( int *  argc,
char ***  argv 
)

This is used, when we need to determine the probabilities of various mutations. Left here for posterity

Write mutation settings to log

Definition at line 1873 of file bigfield.fuzzer.hpp.

◆ LLVMFuzzerTestOneInput()

size_t LLVMFuzzerTestOneInput ( const uint8_t *  Data,
size_t  Size 
)

Fuzzer entry function.

Definition at line 1996 of file bigfield.fuzzer.hpp.

Variable Documentation

◆ circuit_should_fail

bool circuit_should_fail = false

Definition at line 19 of file bigfield.fuzzer.hpp.

◆ VarianceRNG

FastRandom VarianceRNG(0) ( )