2020-10-08 12:43:05 +03:00
|
|
|
import {readR1cs} from "r1csfile";
|
2020-06-30 16:45:21 +03:00
|
|
|
|
2020-10-08 17:06:48 +03:00
|
|
|
export function stringifyBigInts(Fr, o) {
|
|
|
|
if (o instanceof Uint8Array) {
|
|
|
|
return Fr.toString(o);
|
|
|
|
} else if (Array.isArray(o)) {
|
|
|
|
return o.map(stringifyBigInts.bind(null, Fr));
|
|
|
|
} else if (typeof o == "object") {
|
|
|
|
const res = {};
|
|
|
|
const keys = Object.keys(o);
|
|
|
|
keys.forEach( (k) => {
|
|
|
|
res[k] = stringifyBigInts(Fr, o[k]);
|
|
|
|
});
|
|
|
|
return res;
|
|
|
|
} else if ((typeof(o) == "bigint") || o.eq !== undefined) {
|
|
|
|
return o.toString(10);
|
|
|
|
} else {
|
|
|
|
return o;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2020-07-11 11:31:52 +03:00
|
|
|
export default async function r1csExportJson(r1csFileName, logger) {
|
2020-06-30 16:45:21 +03:00
|
|
|
|
2020-10-09 07:29:55 +03:00
|
|
|
const cir = await readR1cs(r1csFileName, true, true, true, logger);
|
2020-10-08 17:06:48 +03:00
|
|
|
const Fr=cir.curve.Fr;
|
|
|
|
delete cir.curve;
|
2020-06-30 16:45:21 +03:00
|
|
|
|
2020-10-08 17:06:48 +03:00
|
|
|
return stringifyBigInts(Fr, cir);
|
2020-06-30 16:45:21 +03:00
|
|
|
}
|