mirror of
https://github.com/logos-storage/nim-circom-compat.git
synced 2026-01-03 14:13:09 +00:00
* rework ffi * fix types * fix types * update ffi * bump * bump to master update ffi update tests fix tests update ffi update tests
47 lines
1.2 KiB
Nim
47 lines
1.2 KiB
Nim
import std/unittest
|
|
|
|
import ../circomcompat
|
|
|
|
suite "Test circom compat nim":
|
|
test "Should generate witness, prove and verify":
|
|
let
|
|
r1csPath = "vendor/circom-compat-ffi/fixtures/circom2_multiplier2.r1cs".cstring
|
|
wasmPath = "vendor/circom-compat-ffi/fixtures/circom2_multiplier2.wasm".cstring
|
|
|
|
var cfg_ptr: ptr CircomBn254Cfg
|
|
check init_circom_config(
|
|
r1csPath,
|
|
wasmPath,
|
|
nil,
|
|
cfg_ptr.addr) == ERR_OK
|
|
|
|
var ctx: ptr CircomCompatCtx
|
|
check init_circom_compat(
|
|
cfg_ptr,
|
|
ctx.addr) == ERR_OK
|
|
|
|
check ctx.push_input_i8("a".cstring, 3) == ERR_OK
|
|
check ctx.push_input_i8("b".cstring, 11) == ERR_OK
|
|
|
|
var proofPtr: ptr Proof
|
|
var inputsPtr: ptr Inputs
|
|
var vkPtr: ptr VerifyingKey
|
|
|
|
check ctx.get_pub_inputs(inputsPtr.addr) == ERR_OK
|
|
check cfg_ptr.prove_circuit(ctx, proofPtr.addr) == ERR_OK
|
|
|
|
check cfg_ptr.get_verifying_key(vkPtr.addr) == ERR_OK
|
|
check verify_circuit(proofPtr, inputsPtr, vkPtr) == 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
|