chore: expose set_tree, key_gen, seeded_key_gen, extended_seeded_keygen, recover_id_secret, set_leaf, init_tree_with_leaves, set_metadata and get_metadata

This commit is contained in:
Richard Ramos 2023-07-26 11:36:16 -04:00
parent 89b514ad76
commit c48a56712e
No known key found for this signature in database
GPG Key ID: 1CE87DB518195760
8 changed files with 77 additions and 1 deletions

Binary file not shown.

View File

@ -39,6 +39,8 @@ bool delete_leaf(struct RLN *ctx, uintptr_t index);
bool set_leaf(struct RLN *ctx, uintptr_t index, const struct Buffer *input_buffer);
bool get_leaf(struct RLN *ctx, uintptr_t index, struct Buffer *output_buffer);
bool set_next_leaf(struct RLN *ctx, const struct Buffer *input_buffer);
bool set_leaves_from(struct RLN *ctx, uintptr_t index, const struct Buffer *input_buffer);
@ -88,6 +90,10 @@ bool recover_id_secret(const struct RLN *ctx,
const struct Buffer *input_proof_buffer_2,
struct Buffer *output_buffer);
bool set_metadata(struct RLN *ctx, const struct Buffer *input_buffer);
bool get_metadata(const struct RLN *ctx, struct Buffer *output_buffer);
bool hash(const struct Buffer *input_buffer, struct Buffer *output_buffer);
bool poseidon_hash(const struct Buffer *input_buffer, struct Buffer *output_buffer);

View File

@ -63,6 +63,27 @@ func NewWithFolder(depth int, resourcesFolderPath string) (*RLN, error) {
return r, nil
}
func (r *RLN) SetTree(treeHeight uint) bool {
return bool(C.set_tree(r.ptr, C.uintptr_t(treeHeight)))
}
func (r *RLN) KeyGen() []byte {
buffer := toBuffer([]byte{})
if !bool(C.key_gen(r.ptr, &buffer)) {
return nil
}
return C.GoBytes(unsafe.Pointer(buffer.ptr), C.int(buffer.len))
}
func (r *RLN) SeededKeyGen(seed []byte) []byte {
seedBuff := toCBufferPtr(seed)
buffer := toBuffer([]byte{})
if !bool(C.seeded_key_gen(r.ptr, seedBuff, &buffer)) {
return nil
}
return C.GoBytes(unsafe.Pointer(buffer.ptr), C.int(buffer.len))
}
func (r *RLN) ExtendedKeyGen() []byte {
buffer := toBuffer([]byte{})
if !bool(C.extended_key_gen(r.ptr, &buffer)) {
@ -71,6 +92,29 @@ func (r *RLN) ExtendedKeyGen() []byte {
return C.GoBytes(unsafe.Pointer(buffer.ptr), C.int(buffer.len))
}
func (r *RLN) ExtendedSeededKeyGen(seed []byte) []byte {
seedBuff := toCBufferPtr(seed)
buffer := toBuffer([]byte{})
if !bool(C.seeded_extended_key_gen(r.ptr, seedBuff, &buffer)) {
return nil
}
return C.GoBytes(unsafe.Pointer(buffer.ptr), C.int(buffer.len))
}
func (r *RLN) RecoverIDSecret(proof1 []byte, proof2 []byte) ([]byte, error) {
proof1Buff := toCBufferPtr(proof1)
proof2Buff := toCBufferPtr(proof2)
var output []byte
out := toBuffer(output)
if !bool(C.recover_id_secret(r.ptr, proof1Buff, proof2Buff, &out)) {
return nil, errors.New("failed to hash")
}
return C.GoBytes(unsafe.Pointer(out.ptr), C.int(out.len)), nil
}
func (r *RLN) Hash(input []byte) ([]byte, error) {
inpBuff := toCBufferPtr(input)
@ -122,6 +166,11 @@ func (r *RLN) VerifyWithRoots(input []byte, roots []byte) (bool, error) {
return bool(res), nil
}
func (r *RLN) SetLeaf(index uint, idcommitment []byte) bool {
buff := toCBufferPtr(idcommitment[:])
return bool(C.set_leaf(r.ptr, C.uintptr_t(index), buff))
}
func (r *RLN) SetNextLeaf(idcommitment []byte) bool {
buff := toCBufferPtr(idcommitment[:])
return bool(C.set_next_leaf(r.ptr, buff))
@ -132,6 +181,27 @@ func (r *RLN) SetLeavesFrom(index uint, idcommitments []byte) bool {
return bool(C.set_leaves_from(r.ptr, C.uintptr_t(index), idCommBuffer))
}
func (r *RLN) InitTreeWithLeaves(idcommitments []byte) bool {
idCommBuffer := toCBufferPtr(idcommitments)
return bool(C.init_tree_with_leaves(r.ptr, idCommBuffer))
}
func (r *RLN) SetMetadata(metadata []byte) bool {
metadataBuffer := toCBufferPtr(metadata)
return bool(C.set_metadata(r.ptr, metadataBuffer))
}
func (r *RLN) GetMetadata() ([]byte, error) {
var output []byte
out := toBuffer(output)
if !bool(C.get_metadata(r.ptr, &out)) {
return nil, errors.New("could not obtain the metadata")
}
return C.GoBytes(unsafe.Pointer(out.ptr), C.int(out.len)), nil
}
func (r *RLN) AtomicOperation(index uint, leaves []byte, indices []byte) bool {
leavesBuffer := toCBufferPtr(leaves)
indicesBuffer := toCBufferPtr(indices)

@ -1 +1 @@
Subproject commit c2d386cb749f551541bb34c4386a3849485356f9
Subproject commit 8a365f0c9e5c4a744f70c5dd4904ce8d8f926c34