Skip to content

Commit e0c7219

Browse files
authored
Rebuild (#569)
1 parent 1de7c8a commit e0c7219

File tree

6 files changed

+249
-76
lines changed

6 files changed

+249
-76
lines changed

browser_tests/package-lock.json

Lines changed: 55 additions & 38 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/browser.esm.js

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3525,7 +3525,7 @@ async function groth16Verify(_vk_verifier, _publicSignals, _proof, logger) {
35253525
const IC = new Uint8Array(curve.G1.F.n8*2 * publicSignals.length);
35263526
const w = new Uint8Array(curve.Fr.n8 * publicSignals.length);
35273527

3528-
if (!publicInputsAreValid$1(curve, publicSignals)) {
3528+
if (!publicInputsAreValid$2(curve, publicSignals)) {
35293529
if (logger) logger.error("Public inputs are not valid.");
35303530
return false;
35313531
}
@@ -3579,9 +3579,13 @@ function isWellConstructed$1(curve, proof) {
35793579
&& G1.isValid(proof.pi_c);
35803580
}
35813581

3582-
function publicInputsAreValid$1(curve, publicInputs) {
3582+
function checkValueBelongToField$2(curve, value) {
3583+
return Scalar.geq(value, 0) && Scalar.lt(value, curve.r);
3584+
}
3585+
3586+
function publicInputsAreValid$2(curve, publicInputs) {
35833587
for(let i = 0; i < publicInputs.length; i++) {
3584-
if(!Scalar.lt(publicInputs[i], curve.r)) {
3588+
if(!checkValueBelongToField$2(curve, publicInputs[i])) {
35853589
return false;
35863590
}
35873591
}
@@ -11848,9 +11852,8 @@ async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOp
1184811852
You should have received a copy of the GNU General Public License along with
1184911853
snarkjs. If not, see <https://www.gnu.org/licenses/>.
1185011854
*/
11851-
const {unstringifyBigInts: unstringifyBigInts$4} = utils;
11852-
1185311855

11856+
const { unstringifyBigInts: unstringifyBigInts$4 } = utils;
1185411857

1185511858
async function plonkVerify(_vk_verifier, _publicSignals, _proof, logger) {
1185611859
let vk_verifier = unstringifyBigInts$4(_vk_verifier);
@@ -11868,16 +11871,26 @@ async function plonkVerify(_vk_verifier, _publicSignals, _proof, logger) {
1186811871
vk_verifier = fromObjectVk$1(curve, vk_verifier);
1186911872

1187011873
if (!isWellConstructed(curve, proof)) {
11871-
logger.error("Proof is not well constructed");
11874+
logger.error("Proof commitments are not valid.");
1187211875
return false;
1187311876
}
1187411877

1187511878
if (publicSignals.length != vk_verifier.nPublic) {
11876-
logger.error("Invalid number of public inputs");
11879+
if (logger) logger.error("Invalid number of public inputs");
11880+
return false;
11881+
}
11882+
11883+
if (!evaluationsAreValid$1(curve, proof)) {
11884+
if (logger) logger.error("Proof evaluations are not valid");
1187711885
return false;
1187811886
}
11887+
11888+
if (!publicInputsAreValid$1(curve, publicSignals)) {
11889+
if (logger) logger.error("Public inputs are not valid.");
11890+
return false;
11891+
}
11892+
1187911893
const challenges = calculatechallenges(curve, proof, publicSignals, vk_verifier);
11880-
1188111894
if (logger) {
1188211895
logger.debug("beta: " + Fr.toString(challenges.beta, 16));
1188311896
logger.debug("gamma: " + Fr.toString(challenges.gamma, 16));
@@ -11995,6 +12008,32 @@ function isWellConstructed(curve, proof) {
1199512008
return true;
1199612009
}
1199712010

12011+
function checkValueBelongToField$1(curve, value) {
12012+
return Scalar.geq(value, 0) && Scalar.lt(value, curve.r);
12013+
}
12014+
12015+
function checkEvaluationIsValid$1(curve, evaluation) {
12016+
return checkValueBelongToField$1(curve, Scalar.fromRprLE(evaluation));
12017+
}
12018+
12019+
function evaluationsAreValid$1(curve, proof) {
12020+
return checkEvaluationIsValid$1(curve, proof.eval_a)
12021+
&& checkEvaluationIsValid$1(curve, proof.eval_b)
12022+
&& checkEvaluationIsValid$1(curve, proof.eval_c)
12023+
&& checkEvaluationIsValid$1(curve, proof.eval_s1)
12024+
&& checkEvaluationIsValid$1(curve, proof.eval_s2)
12025+
&& checkEvaluationIsValid$1(curve, proof.eval_zw);
12026+
}
12027+
12028+
function publicInputsAreValid$1(curve, publicInputs) {
12029+
for(let i = 0; i < publicInputs.length; i++) {
12030+
if(!checkValueBelongToField$1(curve, publicInputs[i])) {
12031+
return false;
12032+
}
12033+
}
12034+
return true;
12035+
}
12036+
1199812037
function calculatechallenges(curve, proof, publicSignals, vk) {
1199912038
const Fr = curve.Fr;
1200012039
const res = {};
@@ -14581,7 +14620,7 @@ function commitmentsBelongToG1(curve, proof, vk) {
1458114620
}
1458214621

1458314622
function checkValueBelongToField(curve, value) {
14584-
return Scalar.lt(value, curve.r);
14623+
return Scalar.geq(value, 0) && Scalar.lt(value, curve.r);
1458514624
}
1458614625

1458714626
function checkEvaluationIsValid(curve, evaluation) {

build/cli.cjs

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6172,7 +6172,7 @@ async function groth16Verify$1(_vk_verifier, _publicSignals, _proof, logger) {
61726172
const IC = new Uint8Array(curve.G1.F.n8*2 * publicSignals.length);
61736173
const w = new Uint8Array(curve.Fr.n8 * publicSignals.length);
61746174

6175-
if (!publicInputsAreValid$1(curve, publicSignals)) {
6175+
if (!publicInputsAreValid$2(curve, publicSignals)) {
61766176
if (logger) logger.error("Public inputs are not valid.");
61776177
return false;
61786178
}
@@ -6226,9 +6226,13 @@ function isWellConstructed$1(curve, proof) {
62266226
&& G1.isValid(proof.pi_c);
62276227
}
62286228

6229-
function publicInputsAreValid$1(curve, publicInputs) {
6229+
function checkValueBelongToField$2(curve, value) {
6230+
return ffjavascript.Scalar.geq(value, 0) && ffjavascript.Scalar.lt(value, curve.r);
6231+
}
6232+
6233+
function publicInputsAreValid$2(curve, publicInputs) {
62306234
for(let i = 0; i < publicInputs.length; i++) {
6231-
if(!ffjavascript.Scalar.lt(publicInputs[i], curve.r)) {
6235+
if(!checkValueBelongToField$2(curve, publicInputs[i])) {
62326236
return false;
62336237
}
62346238
}
@@ -9044,9 +9048,8 @@ async function plonkFullProve$1(_input, wasmFile, zkeyFileName, logger, wtnsCalc
90449048
You should have received a copy of the GNU General Public License along with
90459049
snarkjs. If not, see <https://www.gnu.org/licenses/>.
90469050
*/
9047-
const {unstringifyBigInts: unstringifyBigInts$5} = ffjavascript.utils;
9048-
90499051

9052+
const { unstringifyBigInts: unstringifyBigInts$5 } = ffjavascript.utils;
90509053

90519054
async function plonkVerify$1(_vk_verifier, _publicSignals, _proof, logger) {
90529055
let vk_verifier = unstringifyBigInts$5(_vk_verifier);
@@ -9064,16 +9067,26 @@ async function plonkVerify$1(_vk_verifier, _publicSignals, _proof, logger) {
90649067
vk_verifier = fromObjectVk$1(curve, vk_verifier);
90659068

90669069
if (!isWellConstructed(curve, proof)) {
9067-
logger.error("Proof is not well constructed");
9070+
logger.error("Proof commitments are not valid.");
90689071
return false;
90699072
}
90709073

90719074
if (publicSignals.length != vk_verifier.nPublic) {
9072-
logger.error("Invalid number of public inputs");
9075+
if (logger) logger.error("Invalid number of public inputs");
9076+
return false;
9077+
}
9078+
9079+
if (!evaluationsAreValid$1(curve, proof)) {
9080+
if (logger) logger.error("Proof evaluations are not valid");
90739081
return false;
90749082
}
9083+
9084+
if (!publicInputsAreValid$1(curve, publicSignals)) {
9085+
if (logger) logger.error("Public inputs are not valid.");
9086+
return false;
9087+
}
9088+
90759089
const challenges = calculatechallenges(curve, proof, publicSignals, vk_verifier);
9076-
90779090
if (logger) {
90789091
logger.debug("beta: " + Fr.toString(challenges.beta, 16));
90799092
logger.debug("gamma: " + Fr.toString(challenges.gamma, 16));
@@ -9191,6 +9204,32 @@ function isWellConstructed(curve, proof) {
91919204
return true;
91929205
}
91939206

9207+
function checkValueBelongToField$1(curve, value) {
9208+
return ffjavascript.Scalar.geq(value, 0) && ffjavascript.Scalar.lt(value, curve.r);
9209+
}
9210+
9211+
function checkEvaluationIsValid$1(curve, evaluation) {
9212+
return checkValueBelongToField$1(curve, ffjavascript.Scalar.fromRprLE(evaluation));
9213+
}
9214+
9215+
function evaluationsAreValid$1(curve, proof) {
9216+
return checkEvaluationIsValid$1(curve, proof.eval_a)
9217+
&& checkEvaluationIsValid$1(curve, proof.eval_b)
9218+
&& checkEvaluationIsValid$1(curve, proof.eval_c)
9219+
&& checkEvaluationIsValid$1(curve, proof.eval_s1)
9220+
&& checkEvaluationIsValid$1(curve, proof.eval_s2)
9221+
&& checkEvaluationIsValid$1(curve, proof.eval_zw);
9222+
}
9223+
9224+
function publicInputsAreValid$1(curve, publicInputs) {
9225+
for(let i = 0; i < publicInputs.length; i++) {
9226+
if(!checkValueBelongToField$1(curve, publicInputs[i])) {
9227+
return false;
9228+
}
9229+
}
9230+
return true;
9231+
}
9232+
91949233
function calculatechallenges(curve, proof, publicSignals, vk) {
91959234
const Fr = curve.Fr;
91969235
const res = {};
@@ -11751,7 +11790,7 @@ function commitmentsBelongToG1(curve, proof, vk) {
1175111790
}
1175211791

1175311792
function checkValueBelongToField(curve, value) {
11754-
return ffjavascript.Scalar.lt(value, curve.r);
11793+
return ffjavascript.Scalar.geq(value, 0) && ffjavascript.Scalar.lt(value, curve.r);
1175511794
}
1175611795

1175711796
function checkEvaluationIsValid(curve, evaluation) {

0 commit comments

Comments
 (0)