Skip to content

Commit 0171a49

Browse files
authored
fix: Ensure barretenberg provides headers that Noir needs (#200)
1 parent 78d644d commit 0171a49

File tree

6 files changed

+109
-6
lines changed

6 files changed

+109
-6
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#include <cstdint>
2+
#include <cstddef>
3+
4+
#define WASM_EXPORT __attribute__((visibility("default")))
5+
6+
extern "C" {
7+
8+
WASM_EXPORT void blake2s_to_field(uint8_t const* data, size_t length, uint8_t* r);
9+
}

cpp/src/aztec/crypto/pedersen/c_bind.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include "c_bind.hpp"
12
#include "pedersen.hpp"
23
#include <common/serialize.hpp>
34
#include <common/timer.hpp>
@@ -36,6 +37,15 @@ WASM_EXPORT void pedersen__compress_with_hash_index(uint8_t const* inputs_buffer
3637
barretenberg::fr::serialize_to_buffer(r, output);
3738
}
3839

40+
WASM_EXPORT void pedersen__commit(uint8_t const* inputs_buffer, uint8_t* output)
41+
{
42+
std::vector<grumpkin::fq> to_compress;
43+
read(inputs_buffer, to_compress);
44+
grumpkin::g1::affine_element pedersen_hash = crypto::pedersen::commit_native(to_compress);
45+
46+
write(output, pedersen_hash);
47+
}
48+
3949
WASM_EXPORT void pedersen__buffer_to_field(uint8_t const* data, size_t length, uint8_t* r)
4050
{
4151
std::vector<uint8_t> to_compress(data, data + length);
@@ -67,4 +77,4 @@ WASM_EXPORT uint8_t* pedersen__hash_to_tree(uint8_t const* data)
6777

6878
return buf;
6979
}
70-
}
80+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include <common/serialize.hpp>
2+
#include <common/timer.hpp>
3+
#include <common/mem.hpp>
4+
#include <common/streams.hpp>
5+
#define WASM_EXPORT __attribute__((visibility("default")))
6+
7+
extern "C" {
8+
9+
WASM_EXPORT void pedersen__init();
10+
11+
WASM_EXPORT void pedersen__compress_fields(uint8_t const* left, uint8_t const* right, uint8_t* result);
12+
13+
WASM_EXPORT void pedersen__compress(uint8_t const* inputs_buffer, uint8_t* output);
14+
15+
WASM_EXPORT void pedersen__compress_with_hash_index(uint8_t const* inputs_buffer, uint8_t* output, uint32_t hash_index);
16+
17+
WASM_EXPORT void pedersen__commit(uint8_t const* inputs_buffer, uint8_t* output);
18+
19+
WASM_EXPORT void pedersen__buffer_to_field(uint8_t const* data, size_t length, uint8_t* r);
20+
21+
/**
22+
* Given a buffer containing 32 byte pedersen leaves, return a new buffer containing the leaves and all pairs of
23+
* nodes that define a merkle tree.
24+
* e.g.
25+
* input: [1][2][3][4]
26+
* output: [1][2][3][4][compress(1,2)][compress(3,4)][compress(5,6)]
27+
*/
28+
WASM_EXPORT uint8_t* pedersen__hash_to_tree(uint8_t const* data);
29+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include <ecc/curves/grumpkin/grumpkin.hpp>
2+
3+
#define WASM_EXPORT __attribute__((visibility("default")))
4+
5+
extern "C" {
6+
7+
WASM_EXPORT void compute_public_key(uint8_t const* private_key, uint8_t* public_key_buf);
8+
WASM_EXPORT void negate_public_key(uint8_t const* public_key_buffer, uint8_t* output);
9+
10+
WASM_EXPORT void construct_signature(
11+
uint8_t const* message, size_t msg_len, uint8_t const* private_key, uint8_t* s, uint8_t* e);
12+
13+
WASM_EXPORT bool verify_signature(
14+
uint8_t const* message, size_t msg_len, uint8_t const* pub_key, uint8_t const* sig_s, uint8_t const* sig_e);
15+
16+
WASM_EXPORT void multisig_create_multisig_public_key(uint8_t const* private_key, uint8_t* multisig_pubkey_buf);
17+
18+
WASM_EXPORT bool multisig_validate_and_combine_signer_pubkeys(uint8_t const* signer_pubkey_buf,
19+
uint8_t* combined_key_buf);
20+
21+
WASM_EXPORT void multisig_construct_signature_round_1(uint8_t* round_one_public_output_buf,
22+
uint8_t* round_one_private_output_buf);
23+
24+
WASM_EXPORT bool multisig_construct_signature_round_2(uint8_t const* message,
25+
size_t msg_len,
26+
uint8_t* private_key,
27+
uint8_t* signer_round_one_private_buf,
28+
uint8_t* signer_pubkeys_buf,
29+
uint8_t* round_one_public_buf,
30+
uint8_t* round_two_buf);
31+
32+
WASM_EXPORT bool multisig_combine_signatures(uint8_t const* message,
33+
size_t msg_len,
34+
uint8_t* signer_pubkeys_buf,
35+
uint8_t* round_one_buf,
36+
uint8_t* round_two_buf,
37+
uint8_t* s,
38+
uint8_t* e);
39+
}

cpp/src/aztec/ecc/curves/bn254/scalar_multiplication/c_bind.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
#include "./scalar_multiplication.hpp"
21
#include "pippenger.hpp"
3-
#include <common/mem.hpp>
4-
#include <srs/io.hpp>
2+
#include "common/mem.hpp"
53

64
using namespace barretenberg;
75

@@ -20,7 +18,7 @@ WASM_EXPORT void bbfree(void* ptr)
2018
aligned_free(ptr);
2119
}
2220

23-
WASM_EXPORT void* new_pippenger(g1::affine_element* points, size_t num_points)
21+
WASM_EXPORT void* new_pippenger(uint8_t* points, size_t num_points)
2422
{
2523
auto ptr = new scalar_multiplication::Pippenger(points, num_points);
2624
return ptr;
@@ -47,4 +45,4 @@ WASM_EXPORT void g1_sum(void* points_ptr, const size_t num_points, void* result_
4745
result->self_set_infinity();
4846
*result = std::accumulate(points, points + num_points, *result);
4947
}
50-
}
48+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <cstddef>
2+
#include "../g1.hpp"
3+
4+
#define WASM_EXPORT __attribute__((visibility("default")))
5+
6+
extern "C" {
7+
8+
WASM_EXPORT void* bbmalloc(size_t size);
9+
10+
WASM_EXPORT void bbfree(void* ptr);
11+
12+
WASM_EXPORT void* new_pippenger(uint8_t* points, size_t num_points);
13+
14+
WASM_EXPORT void delete_pippenger(void* pippenger);
15+
16+
WASM_EXPORT void pippenger_unsafe(void* pippenger_ptr, void* scalars_ptr, size_t from, size_t range, void* result_ptr);
17+
WASM_EXPORT void g1_sum(void* points_ptr, size_t num_points, void* result_ptr);
18+
}

0 commit comments

Comments
 (0)