@@ -110,39 +110,60 @@ func TestKZGVerificationEmulated2(t *testing.T) {
110110 srs , err := kzg_bls12381 .NewSRS (kzgSize , alpha )
111111 assert .NoError (err )
112112
113- f := make ([]fr_bls12381.Element , polynomialSize )
114- for i := range f {
115- f [i ].SetRandom ()
116- }
117-
118- com , err := kzg_bls12381 .Commit (f , srs .Pk )
119- assert .NoError (err )
120-
121- var point fr_bls12381.Element
122- point .SetRandom ()
123- proof , err := kzg_bls12381 .Open (f , point , srs .Pk )
124- assert .NoError (err )
113+ check := func (assert * test.Assert , f fr_bls12381.Vector , point fr_bls12381.Element ) {
114+ com , err := kzg_bls12381 .Commit (f , srs .Pk )
115+ assert .NoError (err )
116+ proof , err := kzg_bls12381 .Open (f , point , srs .Pk )
117+ assert .NoError (err )
118+ if err = kzg_bls12381 .Verify (& com , & proof , point , srs .Vk ); err != nil {
119+ t .Fatal ("verify proof" , err )
120+ }
121+ wCmt , err := ValueOfCommitment [sw_bls12381.G1Affine ](com )
122+ assert .NoError (err )
123+ wVk , err := ValueOfVerifyingKey [sw_bls12381.G1Affine , sw_bls12381.G2Affine ](srs .Vk )
124+ assert .NoError (err )
125+ wProof , err := ValueOfOpeningProof [sw_bls12381.ScalarField , sw_bls12381.G1Affine ](proof )
126+ assert .NoError (err )
127+ wPt , err := ValueOfScalar [sw_bls12381.ScalarField ](point )
128+ assert .NoError (err )
125129
126- if err = kzg_bls12381 .Verify (& com , & proof , point , srs .Vk ); err != nil {
127- t .Fatal ("verify proof" , err )
130+ assignment := KZGVerificationCircuit [sw_bls12381.ScalarField , sw_bls12381.G1Affine , sw_bls12381.G2Affine , sw_bls12381.GTEl ]{
131+ VerifyingKey : wVk ,
132+ Commitment : wCmt ,
133+ OpeningProof : wProof ,
134+ Point : wPt ,
135+ }
136+ assert .CheckCircuit (& KZGVerificationCircuit [sw_bls12381.ScalarField , sw_bls12381.G1Affine , sw_bls12381.G2Affine , sw_bls12381.GTEl ]{}, test .WithValidAssignment (& assignment ))
128137 }
129138
130- wCmt , err := ValueOfCommitment [sw_bls12381.G1Affine ](com )
131- assert .NoError (err )
132- wProof , err := ValueOfOpeningProof [sw_bls12381.ScalarField , sw_bls12381.G1Affine ](proof )
133- assert .NoError (err )
134- wVk , err := ValueOfVerifyingKey [sw_bls12381.G1Affine , sw_bls12381.G2Affine ](srs .Vk )
135- assert .NoError (err )
136- wPt , err := ValueOfScalar [sw_bls12381.ScalarField ](point )
137- assert .NoError (err )
138-
139- assignment := KZGVerificationCircuit [sw_bls12381.ScalarField , sw_bls12381.G1Affine , sw_bls12381.G2Affine , sw_bls12381.GTEl ]{
140- VerifyingKey : wVk ,
141- Commitment : wCmt ,
142- OpeningProof : wProof ,
143- Point : wPt ,
144- }
145- assert .CheckCircuit (& KZGVerificationCircuit [sw_bls12381.ScalarField , sw_bls12381.G1Affine , sw_bls12381.G2Affine , sw_bls12381.GTEl ]{}, test .WithValidAssignment (& assignment ))
139+ assert .Run (func (assert * test.Assert ) {
140+ f := make (fr_bls12381.Vector , polynomialSize )
141+ f .MustSetRandom ()
142+ var point fr_bls12381.Element
143+ point .MustSetRandom ()
144+ check (assert , f , point )
145+ })
146+ assert .Run (func (assert * test.Assert ) {
147+ f := make (fr_bls12381.Vector , polynomialSize )
148+ var point fr_bls12381.Element
149+ point .MustSetRandom ()
150+ check (assert , f , point )
151+ }, "case=zero_polynomial" )
152+ assert .Run (func (assert * test.Assert ) {
153+ f := make (fr_bls12381.Vector , polynomialSize )
154+ f .MustSetRandom ()
155+ var point fr_bls12381.Element
156+ point .SetZero ()
157+ check (assert , f , point )
158+ }, "case=zero_point" )
159+ assert .Run (func (assert * test.Assert ) {
160+ f := make (fr_bls12381.Vector , polynomialSize )
161+ f .MustSetRandom ()
162+ f [0 ].SetZero ()
163+ var point fr_bls12381.Element
164+ point .SetZero ()
165+ check (assert , f , point )
166+ }, "case=zero_first_coeff_zero_point" )
146167}
147168
148169func TestKZGVerificationEmulated3 (t * testing.T ) {
0 commit comments