@@ -100,6 +100,12 @@ void random_group_element_jacobian_test(secp256k1_gej *gej, const secp256k1_ge *
100
100
gej -> infinity = ge -> infinity ;
101
101
}
102
102
103
+ void random_gej_test (secp256k1_gej * gej ) {
104
+ secp256k1_ge ge ;
105
+ random_group_element_test (& ge );
106
+ random_group_element_jacobian_test (gej , & ge );
107
+ }
108
+
103
109
void random_scalar_order_test (secp256k1_scalar * num ) {
104
110
do {
105
111
unsigned char b32 [32 ];
@@ -3341,6 +3347,37 @@ void run_ge(void) {
3341
3347
test_intialized_inf ();
3342
3348
}
3343
3349
3350
+ void test_gej_cmov (const secp256k1_gej * a , const secp256k1_gej * b ) {
3351
+ secp256k1_gej t = * a ;
3352
+ secp256k1_gej_cmov (& t , b , 0 );
3353
+ CHECK (gej_xyz_equals_gej (& t , a ));
3354
+ secp256k1_gej_cmov (& t , b , 1 );
3355
+ CHECK (gej_xyz_equals_gej (& t , b ));
3356
+ }
3357
+
3358
+ void run_gej (void ) {
3359
+ int i ;
3360
+ secp256k1_gej a , b ;
3361
+
3362
+ /* Tests for secp256k1_gej_cmov */
3363
+ for (i = 0 ; i < count ; i ++ ) {
3364
+ secp256k1_gej_set_infinity (& a );
3365
+ secp256k1_gej_set_infinity (& b );
3366
+ test_gej_cmov (& a , & b );
3367
+
3368
+ random_gej_test (& a );
3369
+ test_gej_cmov (& a , & b );
3370
+ test_gej_cmov (& b , & a );
3371
+
3372
+ b = a ;
3373
+ test_gej_cmov (& a , & b );
3374
+
3375
+ random_gej_test (& b );
3376
+ test_gej_cmov (& a , & b );
3377
+ test_gej_cmov (& b , & a );
3378
+ }
3379
+ }
3380
+
3344
3381
void test_ec_combine (void ) {
3345
3382
secp256k1_scalar sum = SECP256K1_SCALAR_CONST (0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
3346
3383
secp256k1_pubkey data [6 ];
@@ -6808,6 +6845,7 @@ int main(int argc, char **argv) {
6808
6845
6809
6846
/* group tests */
6810
6847
run_ge ();
6848
+ run_gej ();
6811
6849
run_group_decompress ();
6812
6850
6813
6851
/* ecmult tests */
0 commit comments