5 #ifndef __ZETH_CIRCUITS_PRFS_PRF_HPP__
6 #define __ZETH_CIRCUITS_PRFS_PRF_HPP__
14 #include <libsnark/gadgetlib1/gadget.hpp>
15 #include <libsnark/gadgetlib1/gadgets/hashes/hash_io.hpp>
20 template<
typename FieldT,
typename HashT>
24 std::shared_ptr<libsnark::digest_variable<FieldT>> result;
25 libsnark::block_variable<FieldT> block;
30 libsnark::protoboard<FieldT> &pb,
31 const libsnark::pb_variable_array<FieldT> &x,
32 const libsnark::pb_variable_array<FieldT> &y,
33 std::shared_ptr<libsnark::digest_variable<FieldT>>
35 const std::string &annotation_prefix =
"PRF_gadget");
44 template<
typename FieldT,
typename HashT>
46 const libsnark::pb_variable<FieldT> &ZERO);
48 template<
typename FieldT>
50 const libsnark::pb_variable<FieldT> &ZERO,
51 const libsnark::pb_variable_array<FieldT> &x);
53 template<
typename FieldT>
54 libsnark::pb_variable_array<FieldT>
get_tag_nf(
55 const libsnark::pb_variable<FieldT> &ZERO,
56 const libsnark::pb_variable_array<FieldT> &a_sk);
58 template<
typename FieldT>
59 libsnark::pb_variable_array<FieldT>
get_tag_pk(
60 const libsnark::pb_variable<FieldT> &ZERO,
61 const libsnark::pb_variable_array<FieldT> &a_sk,
64 template<
typename FieldT>
66 const libsnark::pb_variable<FieldT> &ZERO,
67 const libsnark::pb_variable_array<FieldT> &phi,
73 template<
typename FieldT,
typename HashT>
78 libsnark::protoboard<FieldT> &pb,
79 const libsnark::pb_variable<FieldT> &ZERO,
80 const libsnark::pb_variable_array<FieldT> &a_sk,
81 std::shared_ptr<libsnark::digest_variable<FieldT>> result,
82 const std::string &annotation_prefix =
" add_PRF_gadget");
88 template<
typename FieldT,
typename HashT>
93 libsnark::protoboard<FieldT> &pb,
94 const libsnark::pb_variable<FieldT> &ZERO,
95 const libsnark::pb_variable_array<FieldT> &a_sk,
96 const libsnark::pb_variable_array<FieldT> &rho,
97 std::shared_ptr<libsnark::digest_variable<FieldT>>
99 const std::string &annotation_prefix =
"PRF_nf_gadget");
105 template<
typename FieldT,
typename HashT>
110 libsnark::protoboard<FieldT> &pb,
111 const libsnark::pb_variable<FieldT> &ZERO,
112 const libsnark::pb_variable_array<FieldT> &a_sk,
113 const libsnark::pb_variable_array<FieldT> &h_sig,
115 std::shared_ptr<libsnark::digest_variable<FieldT>> result,
116 const std::string &annotation_prefix =
" pk_PRF_gadget");
122 template<
typename FieldT,
typename HashT>
127 libsnark::protoboard<FieldT> &pb,
128 const libsnark::pb_variable<FieldT> &ZERO,
129 const libsnark::pb_variable_array<FieldT> &phi,
130 const libsnark::pb_variable_array<FieldT> &h_sig,
132 std::shared_ptr<libsnark::digest_variable<FieldT>> result,
133 const std::string &annotation_prefix =
" rho_PRF_gadget");
140 #endif // __ZETH_CIRCUITS_PRFS_PRF_HPP__