Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::MaliciousWitnessInjector< Flavor > Class Template Reference

Test utility for injecting malicious witness values to test failure modes. More...

#include <failure_test_utils.hpp>

Public Types

using Builder = typename Flavor::CircuitBuilder
 
using FF = typename Flavor::FF
 
using ProverInstance = ProverInstance_< Flavor >
 

Public Member Functions

uint32_t add_malicious_variable (const FF &good_val, const FF &bad_val)
 Add a "good" variable to the builder and specify a malicious value to inject later.
 
std::pair< std::shared_ptr< ProverInstance >, std::shared_ptr< ProverInstance > > create_instances ()
 Create two prover instances, one based on the good witness values and one based on the malicious values.
 
Builder create_builder_with_malicious_witnesses ()
 Create a copy of the builder with malicious values injected.
 

Public Attributes

Builder builder
 

Private Attributes

std::unordered_map< uint32_t, FFmalicious_variable_map
 

Detailed Description

template<typename Flavor>
class bb::MaliciousWitnessInjector< Flavor >

Test utility for injecting malicious witness values to test failure modes.

This class allows tests to construct circuits with "malicious" variables that have different witness values in passing vs failing proofs. This enables systematic testing of constraint violations, particularly useful for validating that invalid witnesses correctly fail verification.

Definition at line 24 of file failure_test_utils.hpp.

Member Typedef Documentation

◆ Builder

Definition at line 26 of file failure_test_utils.hpp.

◆ FF

template<typename Flavor >
using bb::MaliciousWitnessInjector< Flavor >::FF = typename Flavor::FF

Definition at line 27 of file failure_test_utils.hpp.

◆ ProverInstance

Definition at line 28 of file failure_test_utils.hpp.

Member Function Documentation

◆ add_malicious_variable()

template<typename Flavor >
uint32_t bb::MaliciousWitnessInjector< Flavor >::add_malicious_variable ( const FF good_val,
const FF bad_val 
)
inline

Add a "good" variable to the builder and specify a malicious value to inject later.

Equivalent to using builder.add_variable(good_val). The malicious value is simply stored to be injected later.

Parameters
good_valThe honest value
bad_valThe malicious value to be injected for failure testing
Returns
The variable index (same value returned by builder.add_variable)

Definition at line 46 of file failure_test_utils.hpp.

◆ create_builder_with_malicious_witnesses()

template<typename Flavor >
Builder bb::MaliciousWitnessInjector< Flavor >::create_builder_with_malicious_witnesses ( )
inline

Create a copy of the builder with malicious values injected.

Malicious values are injected based on real_variable_index which means that the entire copy cycle will be updated implicitly.

Definition at line 78 of file failure_test_utils.hpp.

◆ create_instances()

template<typename Flavor >
std::pair< std::shared_ptr< ProverInstance >, std::shared_ptr< ProverInstance > > bb::MaliciousWitnessInjector< Flavor >::create_instances ( )
inline

Create two prover instances, one based on the good witness values and one based on the malicious values.

Note
The builder is finalized during the first instance construction. The second instance reuses the finalized circuit structure but with modified witness values.
Returns
A pair of {good_instance, bad_instance}

Definition at line 61 of file failure_test_utils.hpp.

Member Data Documentation

◆ builder

template<typename Flavor >
Builder bb::MaliciousWitnessInjector< Flavor >::builder

Definition at line 30 of file failure_test_utils.hpp.

◆ malicious_variable_map

template<typename Flavor >
std::unordered_map<uint32_t, FF> bb::MaliciousWitnessInjector< Flavor >::malicious_variable_map
private

Definition at line 34 of file failure_test_utils.hpp.


The documentation for this class was generated from the following file: