websnark/test/groth16.js
test/groth16.jsRaw
1
2const assert = require("assert");
3const fs = require("fs");
4const path = require("path");
5const snarkjs = require("snarkjs");
6
7const buildGroth16 = require("../index.js").buildGroth16;
8
9describe("Basic tests for groth16 proof generator", () => {
10 it("It should do a basic point doubling G1", async () => {
11 const groth16 = await buildGroth16();
12
13 const signals = fs.readFileSync(path.join(__dirname, "data", "witness.bin"));
14 const provingKey = fs.readFileSync(path.join(__dirname, "data", "proving_key.bin"));
15 const proofS = await groth16.proof(signals.buffer, provingKey.buffer);
16
17 const proof = snarkjs.unstringifyBigInts(proofS);
18 const verifierKey = snarkjs.unstringifyBigInts(JSON.parse(fs.readFileSync(path.join(__dirname, "data", "verification_key.json"), "utf8")));
19 const pub = snarkjs.unstringifyBigInts(JSON.parse(fs.readFileSync(path.join(__dirname, "data", "public.json"), "utf8")));
20
21 assert(snarkjs.groth.isValid(verifierKey, proof, pub));
22
23 groth16.terminate();
24 }).timeout(10000000);
25});