2c964b3fe6
* @noble/hashes is a widely used and audited cryptography library that is pure JavaScript with no transitive dependencies and no dependencies on NodeJS. * NodeJS now comes with built-in support for testing, so mocha and chai are no longer required, removing most dependencies from this project. Between these two changes, almost all dependencies were removed and now there are only 2, including transitive.
44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of zksnark JavaScript library.
|
|
|
|
zksnark JavaScript library is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
zksnark JavaScript library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
zksnark JavaScript library. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
const assert = require("node:assert");
|
|
const { describe, it } = require("node:test");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const Circuit = require("../src/circuit.js");
|
|
const zkSnark = require("../index.js").kimleeoh;
|
|
|
|
describe("zkSnark KimLeeOh", () => {
|
|
it("Load a circuit, create trusted setup, create a proof and validate it", { timeout: 10000000 }, () => {
|
|
|
|
|
|
const cirDef = JSON.parse(fs.readFileSync(path.join(__dirname, "circuit", "sum.json"), "utf8"));
|
|
const cir = new Circuit(cirDef);
|
|
|
|
const setup = zkSnark.setup(cir);
|
|
|
|
const witness = cir.calculateWitness({"a": "33", "b": "34"});
|
|
|
|
const {proof, publicSignals} = zkSnark.genProof(setup.vk_proof, witness);
|
|
|
|
assert( zkSnark.isValid(setup.vk_verifier, proof, publicSignals));
|
|
});
|
|
});
|