Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
c_bind.cpp
Go to the documentation of this file.
1#include "c_bind.hpp"
4#include "poseidon2.hpp"
6
7using namespace bb;
8
10{
11 std::vector<fr> to_hash;
12 read(inputs_buffer, to_hash);
14 fr::serialize_to_buffer(r, output);
15}
16
18{
19 std::vector<fr> to_hash;
20 read(inputs_buffer, to_hash);
21 const size_t numHashes = to_hash.size() / 2;
22 std::vector<fr> results;
23 size_t count = 0;
24 while (count < numHashes) {
26 { to_hash[count * 2], to_hash[count * 2 + 1] });
27 results.push_back(r);
28 ++count;
29 }
30 write(output, results);
31}
32
34{
36
37 // Serialise input vector.
38 std::vector<fr> to_permute;
39 read(inputs_buffer, to_permute);
40
41 // Copy input vector into Permutation::State (which is an std::array).
42 Permutation::State input_state;
43 std::copy(to_permute.begin(), to_permute.end(), input_state.data());
44
45 Permutation::State results_array = Permutation::permutation(input_state);
46
47 const std::vector<fr> results(results_array.begin(), results_array.end());
48 *output = to_heap_buffer(results);
49}
50
52{
53 std::vector<fr> to_hash;
54 read(inputs_buffer, to_hash);
55 const size_t numHashes = to_hash.size();
56 fr result = to_hash[0];
57 size_t count = 1;
58 while (count < numHashes) {
60 ++count;
61 }
62 write(output, result);
63}
static FF hash(const std::vector< FF > &input)
Hashes a vector of field elements.
Applies the Poseidon2 permutation function from https://eprint.iacr.org/2023/323.
Circuit form of Poseidon2 permutation from https://eprint.iacr.org/2023/323.
std::array< field_t< Builder >, t > State
static State permutation(Builder *builder, const State &input)
Circuit form of Poseidon2 permutation from https://eprint.iacr.org/2023/323.
WASM_EXPORT void poseidon2_hashes(fr::vec_in_buf inputs_buffer, fr::out_buf output)
Definition c_bind.cpp:17
WASM_EXPORT void poseidon2_hash_accumulate(fr::vec_in_buf inputs_buffer, fr::out_buf output)
Definition c_bind.cpp:51
WASM_EXPORT void poseidon2_hash(fr::vec_in_buf inputs_buffer, fr::out_buf output)
Definition c_bind.cpp:9
WASM_EXPORT void poseidon2_permutation(fr::vec_in_buf inputs_buffer, fr::vec_out_buf output)
Definition c_bind.cpp:33
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
void read(B &it, field2< base_field, Params > &value)
void write(B &buf, field2< base_field, Params > const &value)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
uint8_t * to_heap_buffer(T const &value)
uint8_t ** vec_out_buf
static void serialize_to_buffer(const field &value, uint8_t *buffer)
const uint8_t * vec_in_buf
#define WASM_EXPORT