mirror of
https://github.com/arnaucube/circom_tester.git
synced 2026-02-06 19:06:42 +01:00
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.
This commit is contained in:
19
c/tester.js
19
c/tester.js
@@ -11,6 +11,8 @@ const exec = util.promisify(require("child_process").exec);
|
||||
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 @@ class WasmTester {
|
||||
});
|
||||
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 @@ async function compiler_above_version(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
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user