This commit is contained in:
decanus 2021-09-13 17:15:25 +02:00
parent 3faa61ce34
commit 63ee41dab3
No known key found for this signature in database
GPG Key ID: 3730AAF5D6589867
5 changed files with 56 additions and 7 deletions

View File

@ -1,7 +1,7 @@
.PHONY: rlnlib
rlnlib:
cd lib/rln && cargo build --release
cd lib/rln && cargo build --release --target=aarch64-apple-darwin
cbindgen --config ../cbindgen.toml --crate rln --output librln.h --lang c
mv lib/rln/target/release/librln.* lib/

View File

@ -1 +1 @@
/Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/target/release/librln.rlib: /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/mod.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/polynomial.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/poseidon.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/rln.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/ffi.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/lib.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/merkle.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/poseidon.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/public.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/utils.rs
/Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/target/aarch64-apple-darwin/release/librln.dylib: /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/mod.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/polynomial.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/poseidon.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/rln.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/ffi.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/lib.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/merkle.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/poseidon.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/public.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/utils.rs

Binary file not shown.

51
pkg/rln/rln.go Normal file
View File

@ -0,0 +1,51 @@
package rln
/*
#cgo LDFLAGS: -L${SRCDIR}/../../lib/ -llibrln -ldl -lm
#include "./../../lib/librln.h"
*/
import "C"
import "unsafe"
type Buffer struct {
Ptr *[]byte
Len uint
}
type RLN struct {
ptr *C.RLN_Bn256
}
//func (r *RLN) CircuitFromParams(depth int, parameters []byte) bool {
// return C.new_circuit_from_params(depth, toBuffer(parameters), r.ptr)
//}
//
//func (r *RLN) GenerateProof(input, output []byte) bool {
// //bool generate_proof(const struct RLN_Bn256 *ctx,
// // const struct Buffer *input_buffer,
// //struct Buffer *output_buffer);
//
// return C.generate_proof(r.ptr, toBuffer(input), toBuffer(output));
//}
func (r *RLN) GenerateKey() {
C.key_gen(r.ptr, &Buffer{})
//bool key_gen(const struct RLN_Bn256 *ctx, struct Buffer *keypair_buffer);
}
func toBuffer(data []byte) C.Buffer {
dataPtr, dataLen := sliceToPtr(data)
return C.Buffer{
ptr: dataPtr,
len: C.int(dataLen),
}
}
func sliceToPtr(slice []byte) (*C.uchar, C.int) {
if len(slice) == 0 {
return nil, 0
} else {
return (*C.uchar)(unsafe.Pointer(&slice[0])), C.int(len(slice))
}
}

8
rln.go
View File

@ -1,11 +1,9 @@
package main
/*
#cgo CFLAGS: -I../lib
#include "./lib/librln.h"
*/
import "C"
import "github.com/decanus/go-rln/pkg/rln"
func main() {
r := &rln.RLN{}
r.GenerateKey()
//C
}