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 });