| 
    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()