@@ -3872,6 +3872,22 @@ void run_gej(void) {
3872
3872
test_gej_cmov (& a , & b );
3873
3873
test_gej_cmov (& b , & a );
3874
3874
}
3875
+
3876
+ /* Tests for secp256k1_gej_eq_var */
3877
+ for (i = 0 ; i < count ; i ++ ) {
3878
+ secp256k1_fe fe ;
3879
+ random_gej_test (& a );
3880
+ random_gej_test (& b );
3881
+ CHECK (!secp256k1_gej_eq_var (& a , & b ));
3882
+
3883
+ b = a ;
3884
+ random_field_element_test (& fe );
3885
+ if (secp256k1_fe_is_zero (& fe )) {
3886
+ continue ;
3887
+ }
3888
+ secp256k1_gej_rescale (& a , & fe );
3889
+ CHECK (secp256k1_gej_eq_var (& a , & b ));
3890
+ }
3875
3891
}
3876
3892
3877
3893
void test_ec_combine (void ) {
@@ -4077,17 +4093,12 @@ void run_ecmult_chain(void) {
4077
4093
0xB95CBCA2 , 0xC77DA786 , 0x539BE8FD , 0x53354D2D ,
4078
4094
0x3B4F566A , 0xE6580454 , 0x07ED6015 , 0xEE1B2A88
4079
4095
);
4080
-
4081
- secp256k1_gej_neg (& rp , & rp );
4082
- secp256k1_gej_add_var (& rp , & rp , & x , NULL );
4083
- CHECK (secp256k1_gej_is_infinity (& rp ));
4096
+ CHECK (secp256k1_gej_eq_var (& rp , & x ));
4084
4097
}
4085
4098
}
4086
4099
/* redo the computation, but directly with the resulting ae and ge coefficients: */
4087
4100
secp256k1_ecmult (& x2 , & a , & ae , & ge );
4088
- secp256k1_gej_neg (& x2 , & x2 );
4089
- secp256k1_gej_add_var (& x2 , & x2 , & x , NULL );
4090
- CHECK (secp256k1_gej_is_infinity (& x2 ));
4101
+ CHECK (secp256k1_gej_eq_var (& x , & x2 ));
4091
4102
}
4092
4103
4093
4104
void test_point_times_order (const secp256k1_gej * point ) {
@@ -4380,33 +4391,25 @@ void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi_func e
4380
4391
/* only G scalar */
4381
4392
secp256k1_ecmult (& r2 , & ptgj , & szero , & sc [0 ]);
4382
4393
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & r , & sc [0 ], ecmult_multi_callback , & data , 0 ));
4383
- secp256k1_gej_neg (& r2 , & r2 );
4384
- secp256k1_gej_add_var (& r , & r , & r2 , NULL );
4385
- CHECK (secp256k1_gej_is_infinity (& r ));
4394
+ CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4386
4395
4387
4396
/* 1-point */
4388
4397
secp256k1_ecmult (& r2 , & ptgj , & sc [0 ], & szero );
4389
4398
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 1 ));
4390
- secp256k1_gej_neg (& r2 , & r2 );
4391
- secp256k1_gej_add_var (& r , & r , & r2 , NULL );
4392
- CHECK (secp256k1_gej_is_infinity (& r ));
4399
+ CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4393
4400
4394
4401
/* Try to multiply 1 point, but callback returns false */
4395
4402
CHECK (!ecmult_multi (& ctx -> error_callback , scratch , & r , & szero , ecmult_multi_false_callback , & data , 1 ));
4396
4403
4397
4404
/* 2-point */
4398
4405
secp256k1_ecmult (& r2 , & ptgj , & sc [0 ], & sc [1 ]);
4399
4406
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 2 ));
4400
- secp256k1_gej_neg (& r2 , & r2 );
4401
- secp256k1_gej_add_var (& r , & r , & r2 , NULL );
4402
- CHECK (secp256k1_gej_is_infinity (& r ));
4407
+ CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4403
4408
4404
4409
/* 2-point with G scalar */
4405
4410
secp256k1_ecmult (& r2 , & ptgj , & sc [0 ], & sc [1 ]);
4406
4411
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & r , & sc [1 ], ecmult_multi_callback , & data , 1 ));
4407
- secp256k1_gej_neg (& r2 , & r2 );
4408
- secp256k1_gej_add_var (& r , & r , & r2 , NULL );
4409
- CHECK (secp256k1_gej_is_infinity (& r ));
4412
+ CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4410
4413
}
4411
4414
4412
4415
/* Check infinite outputs of various forms */
@@ -4491,9 +4494,7 @@ void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi_func e
4491
4494
4492
4495
secp256k1_ecmult (& r2 , & r , & sc [0 ], & szero );
4493
4496
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 20 ));
4494
- secp256k1_gej_neg (& r2 , & r2 );
4495
- secp256k1_gej_add_var (& r , & r , & r2 , NULL );
4496
- CHECK (secp256k1_gej_is_infinity (& r ));
4497
+ CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4497
4498
}
4498
4499
4499
4500
/* Check random scalars, constant point */
@@ -4514,9 +4515,7 @@ void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi_func e
4514
4515
secp256k1_gej_set_ge (& p0j , & pt [0 ]);
4515
4516
secp256k1_ecmult (& r2 , & p0j , & rs , & szero );
4516
4517
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 20 ));
4517
- secp256k1_gej_neg (& r2 , & r2 );
4518
- secp256k1_gej_add_var (& r , & r , & r2 , NULL );
4519
- CHECK (secp256k1_gej_is_infinity (& r ));
4518
+ CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4520
4519
}
4521
4520
4522
4521
/* Sanity check that zero scalars don't cause problems */
@@ -4578,9 +4577,7 @@ void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi_func e
4578
4577
4579
4578
secp256k1_ecmult (& expected , & ptgj , & tmp1 , & szero );
4580
4579
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & actual , & szero , ecmult_multi_callback , & data , 2 ));
4581
- secp256k1_gej_neg (& expected , & expected );
4582
- secp256k1_gej_add_var (& actual , & actual , & expected , NULL );
4583
- CHECK (secp256k1_gej_is_infinity (& actual ));
4580
+ CHECK (secp256k1_gej_eq_var (& actual , & expected ));
4584
4581
}
4585
4582
}
4586
4583
}
@@ -4750,9 +4747,7 @@ int test_ecmult_multi_random(secp256k1_scratch *scratch) {
4750
4747
CHECK (ecmult_multi (& ctx -> error_callback , scratch , & computed , g_scalar_ptr , ecmult_multi_callback , & data , filled ));
4751
4748
mults += num_nonzero + g_nonzero ;
4752
4749
/* Compare with expected result. */
4753
- secp256k1_gej_neg (& computed , & computed );
4754
- secp256k1_gej_add_var (& computed , & computed , & expected , NULL );
4755
- CHECK (secp256k1_gej_is_infinity (& computed ));
4750
+ CHECK (secp256k1_gej_eq_var (& computed , & expected ));
4756
4751
return mults ;
4757
4752
}
4758
4753
0 commit comments