Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
libsnark
gadgetlib1
gadgets
hashes
hash_io.hpp
Go to the documentation of this file.
1
7
#ifndef HASH_IO_HPP_
8
#define HASH_IO_HPP_
9
#include <cstddef>
10
#include <
libsnark/gadgetlib1/gadgets/basic_gadgets.hpp
>
11
#include <vector>
12
13
namespace
libsnark
14
{
15
16
template
<
typename
FieldT>
class
digest_variable
:
public
gadget
<FieldT>
17
{
18
public
:
19
size_t
digest_size
;
20
pb_variable_array<FieldT>
bits
;
21
22
digest_variable<FieldT>
(
23
protoboard<FieldT>
&
pb
,
24
const
size_t
digest_size
,
25
const
std::string &
annotation_prefix
);
26
27
digest_variable<FieldT>
(
28
protoboard<FieldT>
&
pb
,
29
const
size_t
digest_size
,
30
const
pb_variable_array<FieldT>
&partial_bits,
31
const
pb_variable<FieldT>
&padding,
32
const
std::string &
annotation_prefix
);
33
34
void
generate_r1cs_constraints
();
35
void
generate_r1cs_witness
(
const
libff::bit_vector &contents);
36
libff::bit_vector
get_digest
()
const
;
37
};
38
39
template
<
typename
FieldT>
class
block_variable
:
public
gadget
<FieldT>
40
{
41
public
:
42
size_t
block_size
;
43
pb_variable_array<FieldT>
bits
;
44
45
block_variable
(
46
protoboard<FieldT>
&
pb
,
47
const
size_t
block_size
,
48
const
std::string &
annotation_prefix
);
49
50
block_variable
(
51
protoboard<FieldT>
&
pb
,
52
const
std::vector<
pb_variable_array<FieldT>
> &parts,
53
const
std::string &
annotation_prefix
);
54
55
block_variable
(
56
protoboard<FieldT>
&
pb
,
57
const
digest_variable<FieldT>
&left,
58
const
digest_variable<FieldT>
&right,
59
const
std::string &
annotation_prefix
);
60
61
void
generate_r1cs_constraints
();
62
void
generate_r1cs_witness
(
const
libff::bit_vector &contents);
63
libff::bit_vector
get_block
()
const
;
64
};
65
66
}
// namespace libsnark
67
#include <
libsnark/gadgetlib1/gadgets/hashes/hash_io.tcc
>
68
69
#endif // HASH_IO_HPP_
hash_io.tcc
libsnark::block_variable::block_size
size_t block_size
Definition:
hash_io.hpp:42
libsnark::gadget::annotation_prefix
const std::string annotation_prefix
Definition:
gadget.hpp:20
libsnark
Definition:
accumulation_vector.hpp:18
libsnark::gadget::pb
protoboard< FieldT > & pb
Definition:
gadget.hpp:19
libsnark::block_variable::block_variable
block_variable(protoboard< FieldT > &pb, const size_t block_size, const std::string &annotation_prefix)
libsnark::gadget
Definition:
gadget.hpp:16
libsnark::digest_variable::get_digest
libff::bit_vector get_digest() const
libsnark::block_variable::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::block_variable::generate_r1cs_witness
void generate_r1cs_witness(const libff::bit_vector &contents)
libsnark::block_variable::bits
pb_variable_array< FieldT > bits
Definition:
hash_io.hpp:43
libsnark::block_variable::get_block
libff::bit_vector get_block() const
libsnark::block_variable
Definition:
hash_io.hpp:39
libsnark::digest_variable
Definition:
hash_io.hpp:16
libsnark::digest_variable::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::digest_variable::generate_r1cs_witness
void generate_r1cs_witness(const libff::bit_vector &contents)
libsnark::pb_variable
Definition:
pb_variable.hpp:24
basic_gadgets.hpp
libsnark::digest_variable::digest_size
size_t digest_size
Definition:
hash_io.hpp:19
libsnark::pb_variable_array
Definition:
pb_variable.hpp:44
libsnark::digest_variable::bits
pb_variable_array< FieldT > bits
Definition:
hash_io.hpp:20
libsnark::protoboard
Definition:
pb_variable.hpp:22
Generated on Wed Jan 25 2023 11:05:58 for Clearmatics Libsnark by
1.8.17