MCPcopy Create free account
hub / github.com/docknetwork/crypto / verify

Method verify

smc_range_proof/src/ccs_range_proof/kv_arbitrary_range.rs:214–270  ·  view source on GitHub ↗

Verify the proof for `min <= value < max` where `commitment` is a Pedersen commitment to `value`

(
        &self,
        commitment: &G,
        challenge: &G::ScalarField,
        min: u64,
        max: u64,
        comm_key: &MemberCommitmentKey<G>,
        params: &SetMembershipCheckParamsKV<

Source from the content-addressed store, hash-verified

212impl<G: AffineRepr> CCSArbitraryRangeWithKVProof<G> {
213 /// Verify the proof for `min <= value < max` where `commitment` is a Pedersen commitment to `value`
214 pub fn verify(
215 &self,
216 commitment: &G,
217 challenge: &G::ScalarField,
218 min: u64,
219 max: u64,
220 comm_key: &MemberCommitmentKey<G>,
221 params: &SetMembershipCheckParamsKV<G>,
222 secret_key: &SecretKey<G::ScalarField>,
223 ) -> Result<(), SmcRangeProofError> {
224 params.validate_base(self.base)?;
225 let l = find_l_for_arbitrary_range(max, min, self.base) as usize;
226 expect_equality!(
227 self.pok_sigs_min.len(),
228 l,
229 SmcRangeProofError::ProofShorterThanExpected
230 );
231 expect_equality!(
232 self.pok_sigs_max.len(),
233 l,
234 SmcRangeProofError::ProofShorterThanExpected
235 );
236
237 let resp_d_min = cfg_iter!(self.pok_sigs_min)
238 .map(|p| *p.get_resp_for_message().unwrap())
239 .collect::<Vec<_>>();
240 let resp_d_max = cfg_iter!(self.pok_sigs_max)
241 .map(|p| *p.get_resp_for_message().unwrap())
242 .collect::<Vec<_>>();
243 check_commitment_for_arbitrary_range::<G>(
244 self.base,
245 &resp_d_min,
246 &resp_d_max,
247 &self.resp_r_min,
248 &self.resp_r_max,
249 &self.D_min,
250 &self.D_max,
251 min,
252 max,
253 commitment,
254 challenge,
255 comm_key,
256 )?;
257 let results = cfg_iter!(self.pok_sigs_min)
258 .chain(cfg_iter!(self.pok_sigs_max))
259 .map(|p| {
260 if let Err(e) = p.verify(challenge, secret_key, &params.bb_sig_params) {
261 return Err(SmcRangeProofError::ShortGroupSig(e));
262 }
263 Ok(())
264 })
265 .collect::<Vec<_>>();
266 for r in results {
267 r?;
268 }
269 Ok(())
270 }
271

Callers 1

Calls 3

mapMethod · 0.80
get_resp_for_messageMethod · 0.45

Tested by 1