/ test / mimcspongecircuit.js
mimcspongecircuit.js
 1  const path = require("path");
 2  const wasm_tester = require("circom_tester").wasm;
 3  
 4  const buildMimcSponge = require("circomlibjs").buildMimcSponge;
 5  
 6  
 7  describe("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  });