From 902507f32c3740f8a2c85a500d37d4eb347e1998 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Tue, 14 Sep 2021 13:21:02 +0200 Subject: [PATCH] fix --- rln/rln.go | 7 +++++-- rln/rln_test.go | 23 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/rln/rln.go b/rln/rln.go index dae79f5..05bfcf5 100644 --- a/rln/rln.go +++ b/rln/rln.go @@ -113,8 +113,11 @@ func (r *RLN) Verify(proof []byte) bool { } func (r *RLN) UpdateNextMember(input []byte) error { - buf := toBuffer(input) - if !bool(C.update_next_member(r.ptr, &buf)) { + size := int(unsafe.Sizeof(C.Buffer{})) + in := (*C.Buffer)(C.malloc(C.size_t(size))) + *in = toBuffer(input) + + if !bool(C.update_next_member(r.ptr, in)) { return errors.New("failed to update next member") } diff --git a/rln/rln_test.go b/rln/rln_test.go index 422ee34..48d7d0c 100644 --- a/rln/rln_test.go +++ b/rln/rln_test.go @@ -61,11 +61,32 @@ func TestRLN_Verify(t *testing.T) { t.Fatal(err) } - _, err = r.GenerateKey() + index := 5 + + auth, err := r.GenerateKey() if err != nil { t.Fatal(err) } + for i := 0; i < 10; i++ { + if i == index { + err := r.UpdateNextMember(auth.Commitment[:]) + if err != nil { + t.Fatalf("failed to add member: %s", err) + } + } else { + key, err := r.GenerateKey() + if err != nil { + t.Fatal(err) + } + + err = r.UpdateNextMember(key.Commitment[:]) + if err != nil { + t.Fatalf("failed to add member: %s", err) + } + } + } + // @TODO create inputs }