Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
Go to the documentation of this file.
12 #ifndef SHA256_GADGET_HPP_
13 #define SHA256_GADGET_HPP_
26 template<
typename FieldT>
30 std::vector<pb_linear_combination_array<FieldT>>
round_a;
31 std::vector<pb_linear_combination_array<FieldT>>
round_b;
32 std::vector<pb_linear_combination_array<FieldT>>
round_c;
33 std::vector<pb_linear_combination_array<FieldT>>
round_d;
34 std::vector<pb_linear_combination_array<FieldT>>
round_e;
35 std::vector<pb_linear_combination_array<FieldT>>
round_f;
36 std::vector<pb_linear_combination_array<FieldT>>
round_g;
37 std::vector<pb_linear_combination_array<FieldT>>
round_h;
69 template<
typename FieldT>
76 std::shared_ptr<sha256_compression_function_gadget<FieldT>>
f;
86 const size_t block_length,
92 const bool ensure_output_bitness =
true);
97 static libff::bit_vector
get_hash(
const libff::bit_vector &input);
100 const bool ensure_output_bitness =
true);
107 #endif // SHA256_GADGET_HPP_
pb_variable_array< FieldT > packed_W
merkle_authentication_path merkle_authentication_path_type
const std::string annotation_prefix
std::vector< lastbits_gadget< FieldT > > reduce_output
std::shared_ptr< sha256_message_schedule_gadget< FieldT > > message_schedule
std::shared_ptr< sha256_compression_function_gadget< FieldT > > f
pb_variable_array< FieldT > unreduced_output
void generate_r1cs_witness()
protoboard< FieldT > & pb
pb_variable_array< FieldT > reduced_output
std::vector< pb_linear_combination_array< FieldT > > round_c
sha256_compression_function_gadget(protoboard< FieldT > &pb, const pb_linear_combination_array< FieldT > &prev_output, const pb_variable_array< FieldT > &new_block, const digest_variable< FieldT > &output, const std::string &annotation_prefix)
std::vector< pb_linear_combination_array< FieldT > > round_h
std::vector< sha256_round_function_gadget< FieldT > > round_functions
void generate_r1cs_constraints()
std::vector< pb_linear_combination_array< FieldT > > round_a
std::vector< pb_linear_combination_array< FieldT > > round_e
static size_t expected_constraints(const bool ensure_output_bitness=true)
digest_variable< FieldT > output
std::vector< pb_linear_combination_array< FieldT > > round_g
std::vector< pb_linear_combination_array< FieldT > > round_f
static libff::bit_vector get_hash(const libff::bit_vector &input)
std::vector< pb_linear_combination_array< FieldT > > round_b
void generate_r1cs_constraints(const bool ensure_output_bitness=true)
static size_t get_block_len()
pb_linear_combination_array< FieldT > prev_output
std::vector< pb_linear_combination_array< FieldT > > round_d
pb_variable_array< FieldT > new_block
void generate_r1cs_witness()
sha256_two_to_one_hash_gadget(protoboard< FieldT > &pb, const digest_variable< FieldT > &left, const digest_variable< FieldT > &right, const digest_variable< FieldT > &output, const std::string &annotation_prefix)
std::vector< merkle_authentication_node > merkle_authentication_path
libff::bit_vector hash_value_type
static size_t get_digest_len()