Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
Go to the documentation of this file.
13 #ifndef SHA256_COMPONENTS_HPP_
14 #define SHA256_COMPONENTS_HPP_
26 template<
typename FieldT>
29 template<
typename FieldT>
33 std::vector<pb_variable_array<FieldT>>
W_bits;
34 std::vector<std::shared_ptr<packing_gadget<FieldT>>>
pack_W;
36 std::vector<pb_variable<FieldT>>
sigma0;
37 std::vector<pb_variable<FieldT>>
sigma1;
41 std::vector<std::shared_ptr<lastbits_gadget<FieldT>>>
mod_reduce_W;
55 template<
typename FieldT>
68 std::shared_ptr<packing_gadget<FieldT>>
pack_d;
70 std::shared_ptr<packing_gadget<FieldT>>
pack_h;
116 #endif // SHA256_COMPONENTS_HPP_
pb_variable< FieldT > sigma1
std::shared_ptr< majority_gadget< FieldT > > compute_majority
std::shared_ptr< big_sigma_gadget< FieldT > > compute_sigma1
std::vector< std::shared_ptr< packing_gadget< FieldT > > > pack_W
const std::string annotation_prefix
pb_linear_combination_array< FieldT > e
void generate_r1cs_witness()
sha256_round_function_gadget(protoboard< FieldT > &pb, const pb_linear_combination_array< FieldT > &a, const pb_linear_combination_array< FieldT > &b, const pb_linear_combination_array< FieldT > &c, const pb_linear_combination_array< FieldT > &d, const pb_linear_combination_array< FieldT > &e, const pb_linear_combination_array< FieldT > &f, const pb_linear_combination_array< FieldT > &g, const pb_linear_combination_array< FieldT > &h, const pb_variable< FieldT > &W, const long &K, const pb_linear_combination_array< FieldT > &new_a, const pb_linear_combination_array< FieldT > &new_e, const std::string &annotation_prefix)
protoboard< FieldT > & pb
std::vector< std::shared_ptr< small_sigma_gadget< FieldT > > > compute_sigma1
pb_linear_combination_array< FieldT > b
std::shared_ptr< choice_gadget< FieldT > > compute_choice
std::vector< std::shared_ptr< lastbits_gadget< FieldT > > > mod_reduce_W
pb_variable< FieldT > packed_h
const size_t SHA256_block_size
void generate_r1cs_constraints()
pb_linear_combination_array< FieldT > f
pb_linear_combination_array< FieldT > a
pb_linear_combination_array< FieldT > d
pb_variable< FieldT > choice
pb_variable< FieldT > majority
pb_linear_combination_array< FieldT > SHA256_default_IV(protoboard< FieldT > &pb)
std::vector< pb_variable< FieldT > > sigma0
std::shared_ptr< big_sigma_gadget< FieldT > > compute_sigma0
pb_linear_combination_array< FieldT > new_e
std::vector< std::shared_ptr< small_sigma_gadget< FieldT > > > compute_sigma0
pb_variable< FieldT > packed_new_e
pb_variable_array< FieldT > packed_W
std::shared_ptr< packing_gadget< FieldT > > pack_h
std::shared_ptr< lastbits_gadget< FieldT > > mod_reduce_new_a
pb_variable_array< FieldT > M
pb_variable< FieldT > sigma0
pb_linear_combination_array< FieldT > h
pb_variable< FieldT > packed_d
pb_linear_combination_array< FieldT > c
pb_linear_combination_array< FieldT > new_a
void generate_r1cs_constraints()
void generate_r1cs_witness()
std::vector< pb_variable< FieldT > > unreduced_W
std::shared_ptr< packing_gadget< FieldT > > pack_d
pb_linear_combination_array< FieldT > g
sha256_message_schedule_gadget(protoboard< FieldT > &pb, const pb_variable_array< FieldT > &M, const pb_variable_array< FieldT > &packed_W, const std::string &annotation_prefix)
const size_t SHA256_digest_size
std::vector< pb_variable< FieldT > > sigma1
pb_variable< FieldT > packed_new_a
std::shared_ptr< lastbits_gadget< FieldT > > mod_reduce_new_e
pb_variable< FieldT > unreduced_new_a
std::vector< pb_variable_array< FieldT > > W_bits
pb_variable< FieldT > unreduced_new_e