File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -134,10 +134,16 @@ impl<E: Pairing> KzgAccumulator<E> {
134134 }
135135
136136 pub fn verify ( & self ) -> bool {
137- let acc = ( -E :: G1 :: msm ( & self . acc_points , & self . acc_scalars ) . unwrap ( ) ) . into_affine ( ) ;
138137 let proof = E :: G1 :: msm ( & self . kzg_proofs , & self . randomizers )
139138 . unwrap ( )
140139 . into_affine ( ) ;
140+ if !crate :: is_in_correct_subgroup_assuming_on_curve :: < E > ( & proof) {
141+ return false ;
142+ }
143+ let acc = ( -E :: G1 :: msm ( & self . acc_points , & self . acc_scalars ) . unwrap ( ) ) . into_affine ( ) ;
144+ if !crate :: is_in_correct_subgroup_assuming_on_curve :: < E > ( & acc) {
145+ return false ;
146+ }
141147 KZG :: < E > :: verify_accumulated ( AccumulatedOpening { acc, proof } , & self . kzg_vk )
142148 }
143149}
Original file line number Diff line number Diff line change 11#![ cfg_attr( not( feature = "std" ) , no_std) ]
22
3- use ark_ff:: { FftField , PrimeField } ;
3+ use ark_ec:: pairing:: Pairing ;
4+ use ark_ec:: AffineRepr ;
5+ use ark_ff:: { FftField , Field , PrimeField , Zero } ;
46use ark_poly:: univariate:: DensePolynomial ;
57use ark_poly:: { EvaluationDomain , Evaluations , GeneralEvaluationDomain , Polynomial } ;
68use ark_serialize:: { CanonicalDeserialize , CanonicalSerialize } ;
@@ -78,6 +80,12 @@ pub trait ColumnsCommited<F: PrimeField, C: Commitment<F>>:
7880 fn to_vec ( self ) -> Vec < C > ;
7981}
8082
83+ // suboptimal for BLS12-381
84+ fn is_in_correct_subgroup_assuming_on_curve < E : Pairing > ( p : & E :: G1Affine ) -> bool {
85+ let r = E :: ScalarField :: characteristic ( ) ;
86+ p. mul_bigint ( r) . is_zero ( )
87+ }
88+
8189#[ derive( Clone , CanonicalSerialize , CanonicalDeserialize ) ]
8290pub struct Proof < F , CS , Commitments , Evaluations >
8391where
You can’t perform that action at this time.
0 commit comments