diff --git a/src/fflonk_verify.js b/src/fflonk_verify.js index df5f3801..7af5fbb1 100644 --- a/src/fflonk_verify.js +++ b/src/fflonk_verify.js @@ -35,8 +35,6 @@ export default async function fflonkVerify(_vk_verifier, _publicSignals, _proof, const vk = fromObjectVk(curve, _vk_verifier); - // TODO ??? Compute wr^3 and check if it matches with w - const proof = new Proof(curve, logger); proof.fromObjectProof(_proof); @@ -49,6 +47,13 @@ export default async function fflonkVerify(_vk_verifier, _publicSignals, _proof, const Fr = curve.Fr; + // Validate that wr^3 = w (cube root relationship) + const wrCubed = Fr.mul(Fr.mul(vk.wr, vk.wr), vk.wr); + if (!Fr.eq(wrCubed, vk.w)) { + if (logger) logger.error("Invalid verification key: wr^3 does not equal w"); + return false; + } + if (logger) { logger.info("----------------------------"); logger.info(" FFLONK VERIFY SETTINGS");