arnaucube
arnaucube/circom_testerPublic Self-hosted repository
Fix c tester witness file read

c tester (c/tester.js) was using a method to read the witness file
called 'readBinaryFile' that was obtaining a wrong number of witness
elements, and as consequence was returning a wrong array of witness.

Changed that method to 'readBinWitnessFile', which makes use of
wtnsUtils method from snarkjs to read the witness binary file, so now
the c tester returns the correct witness.
arnaucube root@arnaucube.com
Thu, 04 Nov 2021 11:16:58 +0100
commit

bd01a89971f5a3aeaf34e443555d2de70b1fa816

parent

15ddd2a0bec2907704c143a7830288f23d292d0d

2 files changed, 8 insertions(+), 14 deletions(-)

jump to
M c/tester.js → c/tester.js

@@ -11,6 +11,8 @@

const loadR1cs = require("r1csfile").load; const ZqField = require("ffjavascript").ZqField; +const readWtns = require("snarkjs").wtns.exportJson; + module.exports = c_tester; async function c_tester(circomInput, _options) {

@@ -81,7 +83,7 @@ if (err) throw err;

}); await exec("ls " + path.join(this.dir.path, this.baseName+"_cpp/")); await exec(runc + " " + inputFile + " " + wtnsFile); - return readBinaryFile(wtnsFile); + return await readBinWitnessFile(wtnsFile); } async loadSymbols() {

@@ -208,18 +210,9 @@ vlist = version_to_list(v);

return check_versions ( compiler_version, vlist ); } -function readBinaryFile(fileName) { - const buff = fs.readFileSync(fileName); - const n32 = fromArray8ToUint(buff.slice(24,27)); - var pos = 28+n32; - const ws = fromArray8ToUint(buff.slice(pos,pos+3)); - pos += 16; - const w = []; - for (let i=0; i<ws; i++) { - w.push(fromArray8(buff.slice(pos,pos+n32-1))); - pos += n32; - } - return w; +async function readBinWitnessFile(fileName) { + const buffWitness = await readWtns(fileName); + return buffWitness; } function fromArray8(arr) { //returns a BigInt
M package.json → package.json

@@ -29,6 +29,7 @@ "ffjavascript": "^0.2.38",

"fnv-plus": "^1.3.1", "r1csfile": "0.0.16", "tmp-promise": "^3.0.2", - "util": "^0.12.4" + "util": "^0.12.4", + "snarkjs": "0.4.10" } }