grapevine-sonobe/circom/node_modules/circomlib/test/mimcspongecircuit.js
circom/node_modules/circomlib/test/mimcspongecircuit.jsRaw
1const path = require("path");
2const wasm_tester = require("circom_tester").wasm;
3
4const buildMimcSponge = require("circomlibjs").buildMimcSponge;
5
6
7describe("MiMC Sponge Circuit test", function () {
8 let circuit;
9 let mimcSponge;
10 let F;
11
12 this.timeout(100000);
13
14 before( async () => {
15 mimcSponge = await buildMimcSponge();
16 F = mimcSponge.F;
17 });
18
19
20 it("Should check permutation", async () => {
21
22 circuit = await wasm_tester(path.join(__dirname, "circuits", "mimc_sponge_test.circom"));
23
24 const w = await circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3});
25
26 const out2 = mimcSponge.hash(1,2,3);
27
28 await circuit.assertOut(w, {xL_out: F.toObject(out2.xL), xR_out: F.toObject(out2.xR)});
29
30 await circuit.checkConstraints(w);
31
32 });
33
34 it("Should check hash", async () => {
35 circuit = await wasm_tester(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom"));
36
37 const w = await circuit.calculateWitness({ins: [1, 2], k: 0});
38
39 const out2 = mimcSponge.multiHash([1,2], 0, 3);
40
41 for (let i=0; i<out2.length; i++) out2[i] = F.toObject(out2[i]);
42
43 await circuit.assertOut(w, {outs: out2});
44
45 await circuit.checkConstraints(w);
46 });
47});