2023-11-11 13:35:13 +01:00
|
|
|
|
|
|
|
|
import ./groth16
|
|
|
|
|
import ./witness
|
|
|
|
|
import ./zkey
|
|
|
|
|
import ./zkey_types
|
|
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
|
|
2023-11-11 14:37:31 +01:00
|
|
|
proc testProveAndVerify*( zkey_fname, wtns_fname: string): Proof =
|
2023-11-11 13:35:13 +01:00
|
|
|
|
|
|
|
|
echo("parsing witness & zkey files...")
|
|
|
|
|
let witness = parseWitness( wtns_fname)
|
|
|
|
|
let zkey = parseZKey( zkey_fname)
|
|
|
|
|
|
|
|
|
|
echo("generating proof...")
|
2023-11-11 14:37:31 +01:00
|
|
|
let vkey = extractVKey( zkey)
|
|
|
|
|
let proof = generateProof( zkey, witness )
|
2023-11-11 13:35:13 +01:00
|
|
|
|
|
|
|
|
echo("verifying the proof...")
|
2023-11-11 14:37:31 +01:00
|
|
|
let ok = verifyProof( vkey, proof)
|
2023-11-11 13:35:13 +01:00
|
|
|
echo("verification succeeded = ",ok)
|
|
|
|
|
|
2023-11-11 14:37:31 +01:00
|
|
|
return proof
|
|
|
|
|
|
2023-11-11 13:35:13 +01:00
|
|
|
#-------------------------------------------------------------------------------
|