mirror of
https://github.com/logos-storage/nim-circom-compat.git
synced 2026-01-03 22:23:11 +00:00
update ffi
This commit is contained in:
parent
5743d10220
commit
261588d56e
@ -54,6 +54,14 @@ type Inputs* = object
|
||||
elms*: ptr array[32, byte]
|
||||
len*: uint
|
||||
|
||||
type VerifyingKey* = object
|
||||
alpha1*: G1
|
||||
beta2*: G2
|
||||
gamma2*: G2
|
||||
delta2*: G2
|
||||
ic*: ptr G1
|
||||
icLen*: uint
|
||||
|
||||
## # Safety
|
||||
#
|
||||
proc init_circom_compat*(r1cs_path: pointer,
|
||||
@ -65,18 +73,32 @@ proc release_circom_compat*(ctx_ptr: ptr ptr CircomCompatCtx): void {.importc: "
|
||||
|
||||
proc release_buffer*(buff_ptr: ptr ptr Buffer): void {.importc: "release_buffer".}
|
||||
|
||||
## # Safety
|
||||
#
|
||||
proc prove_circuit*(ctx_ptr: ptr CircomCompatCtx,
|
||||
proof_ptr: ptr ptr Proof,
|
||||
inputs_ptr: ptr ptr Inputs): int32 {.importc: "prove_circuit".}
|
||||
proc release_proof*(proof_ptr: ptr ptr Proof): void {.importc: "release_proof".}
|
||||
|
||||
proc release_inputs*(inputs_ptr: ptr ptr Inputs): void {.importc: "release_inputs".}
|
||||
|
||||
proc release_key*(key_ptr: ptr ptr VerifyingKey): void {.importc: "release_key".}
|
||||
|
||||
## # Safety
|
||||
#
|
||||
proc verify_circuit*(ctx_ptr: ptr CircomCompatCtx,
|
||||
compress: bool,
|
||||
proof: ptr Proof,
|
||||
inputs: ptr Inputs): int32 {.importc: "verify_circuit".}
|
||||
proc prove_circuit*(ctx_ptr: ptr CircomCompatCtx,
|
||||
proof_ptr: ptr ptr Proof): int32 {.importc: "prove_circuit".}
|
||||
|
||||
## # Safety
|
||||
#
|
||||
proc get_pub_inputs*(ctx_ptr: ptr CircomCompatCtx,
|
||||
inputs_ptr: ptr ptr Inputs): int32 {.importc: "get_pub_inputs".}
|
||||
|
||||
## # Safety
|
||||
#
|
||||
proc get_verifying_key*(ctx_ptr: ptr CircomCompatCtx,
|
||||
vk_ptr: ptr ptr VerifyingKey): int32 {.importc: "get_verifying_key".}
|
||||
|
||||
## # Safety
|
||||
#
|
||||
proc verify_circuit*(proof: ptr Proof,
|
||||
inputs: ptr Inputs,
|
||||
pvk: ptr VerifyingKey): int32 {.importc: "verify_circuit".}
|
||||
|
||||
## # Safety
|
||||
#
|
||||
|
||||
@ -9,32 +9,33 @@ suite "Test circom compat nim":
|
||||
wasmPath = "vendor/circom-compat-ffi/fixtures/mycircuit.wasm".cstring
|
||||
|
||||
var ctx: ptr CircomCompatCtx
|
||||
let res = init_circom_compat(
|
||||
check init_circom_compat(
|
||||
r1csPath,
|
||||
wasmPath,
|
||||
nil,
|
||||
ctx.addr)
|
||||
ctx.addr) == ERR_OK
|
||||
|
||||
check ctx.push_input_numeric_i8("a".cstring, 3) == ERR_OK
|
||||
check ctx.push_input_numeric_i8("b".cstring, 11) == ERR_OK
|
||||
check ctx.push_input_i8("a".cstring, 3) == ERR_OK
|
||||
check ctx.push_input_i8("b".cstring, 11) == ERR_OK
|
||||
|
||||
var proofBytes: ptr Buffer
|
||||
var publicBytes: ptr Buffer
|
||||
var proofPtr: ptr Proof
|
||||
var inputsPtr: ptr Inputs
|
||||
var vkPtr: ptr VerifyingKey
|
||||
|
||||
check ctx.prove_circuit(proofBytes.addr, publicBytes.addr) == ERR_OK
|
||||
check ctx.get_pub_inputs(inputsPtr.addr) == ERR_OK
|
||||
check ctx.prove_circuit(proofPtr.addr) == ERR_OK
|
||||
|
||||
check proofBytes.len > 0
|
||||
check publicBytes.len > 0
|
||||
check ctx.get_verifying_key(vkPtr.addr) == ERR_OK
|
||||
check verify_circuit(proofPtr, inputsPtr, vkPtr) == ERR_OK
|
||||
|
||||
check ctx.verify_circuit(proofBytes, publicBytes) == ERR_OK
|
||||
release_proof(proofPtr.addr)
|
||||
check proofPtr == nil
|
||||
|
||||
release_inputs(inputsPtr.addr)
|
||||
check inputsPtr == nil
|
||||
|
||||
release_key(vkPtr.addr)
|
||||
check vkPtr == nil
|
||||
|
||||
ctx.addr.release_circom_compat()
|
||||
check ctx == nil
|
||||
|
||||
proofBytes.addr.release_buffer()
|
||||
check proofBytes == nil
|
||||
|
||||
publicBytes.addr.release_buffer()
|
||||
check publicBytes == nil
|
||||
|
||||
check res == ERR_OK
|
||||
|
||||
2
vendor/circom-compat-ffi
vendored
2
vendor/circom-compat-ffi
vendored
@ -1 +1 @@
|
||||
Subproject commit d6bb7a6b309072b98ebc42fe8f07170477541f53
|
||||
Subproject commit 6028d1e0fc9d2cea9f4a0d7a6a55eca13d9f1017
|
||||
Loading…
x
Reference in New Issue
Block a user