arnaucube
arnaucube/websnarkPublic Self-hosted repository
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});