Verify the proof for `0 <= value < max` where `commitment` is a Pedersen commitment to `value`
(
&self,
commitment: &E::G1Affine,
challenge: &E::ScalarField,
max: u64,
comm_key: &MemberCommitmentKey<E::G1Affine>,
params: impl Into<SetMembershipChe
| 176 | impl<E: Pairing> CCSPerfectRangeProof<E> { |
| 177 | /// Verify the proof for `0 <= value < max` where `commitment` is a Pedersen commitment to `value` |
| 178 | pub fn verify( |
| 179 | &self, |
| 180 | commitment: &E::G1Affine, |
| 181 | challenge: &E::ScalarField, |
| 182 | max: u64, |
| 183 | comm_key: &MemberCommitmentKey<E::G1Affine>, |
| 184 | params: impl Into<SetMembershipCheckParamsWithPairing<E>>, |
| 185 | ) -> Result<(), SmcRangeProofError> { |
| 186 | let params = params.into(); |
| 187 | self.verify_except_pairings(commitment, challenge, max, comm_key, ¶ms)?; |
| 188 | |
| 189 | let (yc_sigma, lhs) = self.compute_for_pairing_check(challenge, ¶ms); |
| 190 | if cfg_into_iter!(0..self.V.len()) |
| 191 | .map(|i| { |
| 192 | let rhs = E::pairing( |
| 193 | E::G1Prepared::from(self.V[i]), |
| 194 | E::G2Prepared::from(yc_sigma[i]), |
| 195 | ); |
| 196 | lhs[i] == rhs |
| 197 | }) |
| 198 | .any(|r| r == false) |
| 199 | { |
| 200 | return Err(SmcRangeProofError::InvalidRangeProof); |
| 201 | } |
| 202 | Ok(()) |
| 203 | } |
| 204 | |
| 205 | /// Verify the proof for `0 <= value < max` where `commitment` is a Pedersen commitment to `value` |
| 206 | pub fn verify_given_randomized_pairing_checker( |