Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
keccak_constraint.cpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
10#include "round.hpp"
11
12namespace acir_format {
13
14template <typename Builder> void create_keccak_permutations(Builder& builder, const Keccakf1600& constraint)
15{
17
18 // Create the array containing the permuted state
20
21 // Get the witness assignment for each witness index
22 // Write the witness assignment to the byte array
23 for (size_t i = 0; i < constraint.state.size(); ++i) {
24 state[i] = to_field_ct(constraint.state[i], builder);
25 }
26
28
29 for (size_t i = 0; i < output_state.size(); ++i) {
30 builder.assert_equal(output_state[i].normalize().witness_index, constraint.result[i]);
31 }
32}
34 const Keccakf1600& constraint);
35
37 const Keccakf1600& constraint);
38
39} // namespace acir_format
static std::array< field_ct, NUM_KECCAK_LANES > permutation_opcode(std::array< field_ct, NUM_KECCAK_LANES > state, Builder *context)
Definition keccak.cpp:627
AluTraceBuilder builder
Definition alu.test.cpp:123
template void create_keccak_permutations< bb::UltraCircuitBuilder >(bb::UltraCircuitBuilder &builder, const Keccakf1600 &constraint)
void create_keccak_permutations(Builder &builder, const Keccakf1600 &constraint)
template void create_keccak_permutations< bb::MegaCircuitBuilder >(bb::MegaCircuitBuilder &builder, const Keccakf1600 &constraint)
bb::stdlib::field_t< Builder > to_field_ct(const WitnessOrConstant< FF > &input, Builder &builder)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
std::array< uint32_t, 25 > result
std::array< WitnessOrConstant< bb::fr >, 25 > state