Refactor PRF_gadget to hand responsibility to PRF_addr_a_pk_gadget for creating the '0' argument to the PRF.
This commit is contained in:
parent
671b9562f1
commit
1bcdec40a4
|
@ -14,7 +14,7 @@ public:
|
||||||
bool c,
|
bool c,
|
||||||
bool d,
|
bool d,
|
||||||
pb_variable_array<FieldT> x,
|
pb_variable_array<FieldT> x,
|
||||||
boost::optional<pb_variable_array<FieldT>> y,
|
pb_variable_array<FieldT> y,
|
||||||
std::shared_ptr<digest_variable<FieldT>> result
|
std::shared_ptr<digest_variable<FieldT>> result
|
||||||
) : gadget<FieldT>(pb), result(result) {
|
) : gadget<FieldT>(pb), result(result) {
|
||||||
|
|
||||||
|
@ -26,18 +26,10 @@ public:
|
||||||
discriminants.emplace_back(c ? ONE : ZERO);
|
discriminants.emplace_back(c ? ONE : ZERO);
|
||||||
discriminants.emplace_back(d ? ONE : ZERO);
|
discriminants.emplace_back(d ? ONE : ZERO);
|
||||||
|
|
||||||
if (!y) {
|
|
||||||
// Create y and pad it with zeroes.
|
|
||||||
y = pb_variable_array<FieldT>();
|
|
||||||
while (y->size() < 256) {
|
|
||||||
y->emplace_back(ZERO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
block.reset(new block_variable<FieldT>(pb, {
|
block.reset(new block_variable<FieldT>(pb, {
|
||||||
discriminants,
|
discriminants,
|
||||||
x,
|
x,
|
||||||
*y
|
y
|
||||||
}, "PRF_block"));
|
}, "PRF_block"));
|
||||||
|
|
||||||
hasher.reset(new sha256_compression_function_gadget<FieldT>(
|
hasher.reset(new sha256_compression_function_gadget<FieldT>(
|
||||||
|
@ -57,6 +49,16 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename FieldT>
|
||||||
|
pb_variable_array<FieldT> gen256zeroes(pb_variable<FieldT>& ZERO) {
|
||||||
|
pb_variable_array<FieldT> ret;
|
||||||
|
while (ret.size() < 256) {
|
||||||
|
ret.emplace_back(ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename FieldT>
|
template<typename FieldT>
|
||||||
class PRF_addr_a_pk_gadget : public PRF_gadget<FieldT> {
|
class PRF_addr_a_pk_gadget : public PRF_gadget<FieldT> {
|
||||||
public:
|
public:
|
||||||
|
@ -65,7 +67,7 @@ public:
|
||||||
pb_variable<FieldT>& ZERO,
|
pb_variable<FieldT>& ZERO,
|
||||||
pb_variable_array<FieldT>& a_sk,
|
pb_variable_array<FieldT>& a_sk,
|
||||||
std::shared_ptr<digest_variable<FieldT>> result
|
std::shared_ptr<digest_variable<FieldT>> result
|
||||||
) : PRF_gadget<FieldT>(pb, ZERO, 1, 1, 0, 0, a_sk, boost::none, result) {}
|
) : PRF_gadget<FieldT>(pb, ZERO, 1, 1, 0, 0, a_sk, gen256zeroes(ZERO), result) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename FieldT>
|
template<typename FieldT>
|
||||||
|
|
Loading…
Reference in New Issue