nim-circom-compat/tests/testcircom.nim
Dmitriy Ryajov 39c8891291
Rework ffi (#1)
* rework ffi

* fix types

* fix types

* update ffi

* bump

* bump to master

update ffi

update tests

fix tests

update ffi

update tests
2024-02-09 13:21:38 -06:00

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