From d3edd7503f48f98a71b6013c248ef3ad55e19703 Mon Sep 17 00:00:00 2001 From: Andrew He Date: Wed, 30 Mar 2022 10:03:52 -0700 Subject: [PATCH] BigMod incorrectly omits range checks on the remainder --- circuits/bigint.circom | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/circuits/bigint.circom b/circuits/bigint.circom index 7df182d..72c31c0 100644 --- a/circuits/bigint.circom +++ b/circuits/bigint.circom @@ -374,10 +374,15 @@ template BigMod(n, k) { mod[i] <-- longdiv[1][i]; } div[k] <-- longdiv[0][k]; - component range_checks[k + 1]; + component div_range_checks[k + 1]; for (var i = 0; i <= k; i++) { - range_checks[i] = Num2Bits(n); - range_checks[i].in <== div[i]; + div_range_checks[i] = Num2Bits(n); + div_range_checks[i].in <== div[i]; + } + component mod_range_checks[k]; + for (var i = 0; i < k; i++) { + mod_range_checks[i] = Num2Bits(n); + mod_range_checks[i].in <== mod[i]; } component mul = BigMult(n, k + 1);