mirror of
https://github.com/selfxyz/self.git
synced 2026-01-10 23:27:56 -05:00
generating proof in generateProof.ts 🌈
This commit is contained in:
36
zkrsa/circom-rsa-verify/scripts/generateProof.ts
vendored
36
zkrsa/circom-rsa-verify/scripts/generateProof.ts
vendored
@@ -9,10 +9,11 @@ import fs from "fs";
|
||||
import bigInt from "big-integer";
|
||||
|
||||
const main = () => {
|
||||
const circuitName = process.argv[2];
|
||||
// const circuitName = process.argv[2];
|
||||
const circuitName = "rsa_verify";
|
||||
const { splitToWords, assertWitnessHas } = require("../test/util.js");
|
||||
|
||||
console.log("Loading circuit..");
|
||||
console.log("Loading circuit...");
|
||||
const circuitDef = JSON.parse(
|
||||
readFileSync(`./bin/${circuitName}.json`, "utf-8")
|
||||
);
|
||||
@@ -22,39 +23,44 @@ const main = () => {
|
||||
|
||||
const exp = bigInt(65537);
|
||||
const modulus = bigInt(
|
||||
"20506905762542020524871161678960952669227058659927078218271030534582761906102467699393948948114139735259706562420121819112616469954212206452989673612962456485305857618836705565920733028260432760902031313787720369995510471130599102558482336196876350284746643805203867606604791810979044849617116414687907664642425838288031468042894615870085669599118270574276888256966317882601643671908532332881082928485931800682216974215333508696744511589005313614483528061110932069902761669230087546367823235305619310530467515083259158991386499753659530202286867052240182476186344672076897333556704707979558010033445565709135805374613"
|
||||
"28159883352674882379057769986480568362451772038776968585004981578225278693333547799102130894763405432587915062082465148496474234575326105385821759136009545779818222153233133035879793115174362760842019209694080335094106992594750768845203453730838752915512153732497843616618793848301960760149638047510008343360196880685663479558178763682016378217247163810196893987406871499561685670874108707284107075831225850508689339986430051452676316285408792544552423732572641619762668633933359140892474838724513811145157680654041371778117922705097996064897405260161239587206924594751637153123036795597697983924175089749292396161441"
|
||||
);
|
||||
const sign = bigInt(
|
||||
"5332533708304928746894390686611370107777648928992425061277200333880115157436051084444362905461532996433641113519926367874526095072310720152973308224330358686438617471416055294190586134682872348440672370380995250031085161121381564017697263551778610884714382166968969177242355479964292743453957133034752559140338547652996896360540859090172918998428671903288379676931780276952537766132923383266753722220952517425873806713403712573540875001657636820437023260187176397640658050733586006363551613755012222660224916177460794428681462357514747077850858497964541008009093527747458335492854300840516233890468664145778772049050"
|
||||
"11421002704440838275758104327703219541694143116443588846473971828134487778844684016221045000128421608760663340136706444770533262842224739724790388577861540759248537724228224325826320008026191292927005002194505413540686070846094289808101544462606878681304564711193776960609022832005967163535658828500127030008271205944006367664936507626289241791511913991862417840852461435811537561476559374106251314455102000594960007561777666754199130606872360270853397399211975651186846229644803018232027055655342984015001315397892430118157830024480757997489988388269475398463434333251401882239955420063768498533807664027784037561622"
|
||||
);
|
||||
const hashed = bigInt(
|
||||
"68047946378308475289293787357717828552636626916964367437434418622917273241319"
|
||||
);
|
||||
const hashed = bigInt("1391999260142290886374207300432027233340359984115");
|
||||
|
||||
const input = Object.assign(
|
||||
{},
|
||||
splitToWords(sign, 32, 64, "sign"),
|
||||
splitToWords(exp, 32, 64, "exp"),
|
||||
splitToWords(modulus, 32, 64, "modulus"),
|
||||
splitToWords(hashed, 32, 5, "hashed")
|
||||
splitToWords(sign, 64, 32, "sign"),
|
||||
splitToWords(exp, 64, 32, "exp"),
|
||||
splitToWords(modulus, 64, 32, "modulus"),
|
||||
splitToWords(hashed, 64, 4, "hashed")
|
||||
);
|
||||
|
||||
console.log("Calculating witness..");
|
||||
console.log("input:", input);
|
||||
console.log("Calculating witness...");
|
||||
const witness = circuit.calculateWitness(input);
|
||||
|
||||
console.log("Loading vk proof..");
|
||||
console.log("Loading vk proof...");
|
||||
const vkProof = JSON.parse(
|
||||
fs.readFileSync(`./vkeys/${circuitName}.vk_proof`, "utf8")
|
||||
);
|
||||
|
||||
console.log("Loading vk verifier");
|
||||
console.log("Loading vk verifier...");
|
||||
const vkVerifier = JSON.parse(
|
||||
fs.readFileSync(`./vkeys/${circuitName}.vk_verifier`, "utf8")
|
||||
);
|
||||
|
||||
console.log("Generating proof..");
|
||||
console.log("Generating proof...");
|
||||
const { proof, publicSignals } = snarkjs.original.genProof(
|
||||
unstringifyBigInts(vkProof),
|
||||
unstringifyBigInts(witness)
|
||||
);
|
||||
console.log("proof:", proof);
|
||||
console.log("publicSignals:", publicSignals);
|
||||
|
||||
if (
|
||||
snarkjs.original.isValid(
|
||||
@@ -67,6 +73,10 @@ const main = () => {
|
||||
} else {
|
||||
console.log("Invalid!");
|
||||
}
|
||||
// snarkjs.original.exportSolidityVerifier(
|
||||
// unstringifyBigInts(vkVerifier),
|
||||
// "Verifier"
|
||||
// );
|
||||
};
|
||||
|
||||
main();
|
||||
|
||||
Reference in New Issue
Block a user