@@ -3821,14 +3821,38 @@ static void test_ge(void) {
3821
3821
3822
3822
/* Test batch gej -> ge conversion without known z ratios. */
3823
3823
{
3824
+ secp256k1_ge * ge_set_all_var = (secp256k1_ge * )checked_malloc (& CTX -> error_callback , (4 * runs + 1 ) * sizeof (secp256k1_ge ));
3824
3825
secp256k1_ge * ge_set_all = (secp256k1_ge * )checked_malloc (& CTX -> error_callback , (4 * runs + 1 ) * sizeof (secp256k1_ge ));
3825
- secp256k1_ge_set_all_gej_var (ge_set_all , gej , 4 * runs + 1 );
3826
+ secp256k1_ge_set_all_gej_var (& ge_set_all_var [ 0 ], & gej [ 0 ] , 4 * runs + 1 );
3826
3827
for (i = 0 ; i < 4 * runs + 1 ; i ++ ) {
3828
+ secp256k1_fe s ;
3829
+ testutil_random_fe_non_zero (& s );
3830
+ secp256k1_gej_rescale (& gej [i ], & s );
3831
+ CHECK (secp256k1_gej_eq_ge_var (& gej [i ], & ge_set_all_var [i ]));
3832
+ }
3833
+
3834
+ /* Skip infinity at &gej[0]. */
3835
+ secp256k1_ge_set_all_gej (& ge_set_all [1 ], & gej [1 ], 4 * runs );
3836
+ for (i = 1 ; i < 4 * runs + 1 ; i ++ ) {
3827
3837
secp256k1_fe s ;
3828
3838
testutil_random_fe_non_zero (& s );
3829
3839
secp256k1_gej_rescale (& gej [i ], & s );
3830
3840
CHECK (secp256k1_gej_eq_ge_var (& gej [i ], & ge_set_all [i ]));
3841
+ CHECK (secp256k1_ge_eq_var (& ge_set_all_var [i ], & ge_set_all [i ]));
3831
3842
}
3843
+
3844
+ /* Test with an array of length 1. */
3845
+ secp256k1_ge_set_all_gej_var (ge_set_all_var , & gej [1 ], 1 );
3846
+ secp256k1_ge_set_all_gej (ge_set_all , & gej [1 ], 1 );
3847
+ CHECK (secp256k1_gej_eq_ge_var (& gej [1 ], & ge_set_all_var [1 ]));
3848
+ CHECK (secp256k1_gej_eq_ge_var (& gej [1 ], & ge_set_all [1 ]));
3849
+ CHECK (secp256k1_ge_eq_var (& ge_set_all_var [1 ], & ge_set_all [1 ]));
3850
+
3851
+ /* Test with an array of length 0. */
3852
+ secp256k1_ge_set_all_gej_var (NULL , NULL , 0 );
3853
+ secp256k1_ge_set_all_gej (NULL , NULL , 0 );
3854
+
3855
+ free (ge_set_all_var );
3832
3856
free (ge_set_all );
3833
3857
}
3834
3858
0 commit comments