@@ -2307,26 +2307,23 @@ static void scalar_test(void) {
2307
2307
2308
2308
{
2309
2309
/* Test multiplicative identity. */
2310
- secp256k1_scalar r1 , v1 ;
2311
- secp256k1_scalar_set_int (& v1 ,1 );
2312
- secp256k1_scalar_mul (& r1 , & s1 , & v1 );
2310
+ secp256k1_scalar r1 ;
2311
+ secp256k1_scalar_mul (& r1 , & s1 , & secp256k1_scalar_one );
2313
2312
CHECK (secp256k1_scalar_eq (& r1 , & s1 ));
2314
2313
}
2315
2314
2316
2315
{
2317
2316
/* Test additive identity. */
2318
- secp256k1_scalar r1 , v0 ;
2319
- secp256k1_scalar_set_int (& v0 ,0 );
2320
- secp256k1_scalar_add (& r1 , & s1 , & v0 );
2317
+ secp256k1_scalar r1 ;
2318
+ secp256k1_scalar_add (& r1 , & s1 , & secp256k1_scalar_zero );
2321
2319
CHECK (secp256k1_scalar_eq (& r1 , & s1 ));
2322
2320
}
2323
2321
2324
2322
{
2325
2323
/* Test zero product property. */
2326
- secp256k1_scalar r1 , v0 ;
2327
- secp256k1_scalar_set_int (& v0 ,0 );
2328
- secp256k1_scalar_mul (& r1 , & s1 , & v0 );
2329
- CHECK (secp256k1_scalar_eq (& r1 , & v0 ));
2324
+ secp256k1_scalar r1 ;
2325
+ secp256k1_scalar_mul (& r1 , & s1 , & secp256k1_scalar_zero );
2326
+ CHECK (secp256k1_scalar_eq (& r1 , & secp256k1_scalar_zero ));
2330
2327
}
2331
2328
2332
2329
}
@@ -2357,13 +2354,25 @@ static void run_scalar_tests(void) {
2357
2354
run_scalar_set_b32_seckey_tests ();
2358
2355
}
2359
2356
2357
+ {
2358
+ /* Check that the scalar constants secp256k1_scalar_zero and
2359
+ secp256k1_scalar_one contain the expected values. */
2360
+ secp256k1_scalar zero , one ;
2361
+
2362
+ CHECK (secp256k1_scalar_is_zero (& secp256k1_scalar_zero ));
2363
+ secp256k1_scalar_set_int (& zero , 0 );
2364
+ CHECK (secp256k1_scalar_eq (& zero , & secp256k1_scalar_zero ));
2365
+
2366
+ CHECK (secp256k1_scalar_is_one (& secp256k1_scalar_one ));
2367
+ secp256k1_scalar_set_int (& one , 1 );
2368
+ CHECK (secp256k1_scalar_eq (& one , & secp256k1_scalar_one ));
2369
+ }
2370
+
2360
2371
{
2361
2372
/* (-1)+1 should be zero. */
2362
- secp256k1_scalar s , o ;
2363
- secp256k1_scalar_set_int (& s , 1 );
2364
- CHECK (secp256k1_scalar_is_one (& s ));
2365
- secp256k1_scalar_negate (& o , & s );
2366
- secp256k1_scalar_add (& o , & o , & s );
2373
+ secp256k1_scalar o ;
2374
+ secp256k1_scalar_negate (& o , & secp256k1_scalar_one );
2375
+ secp256k1_scalar_add (& o , & o , & secp256k1_scalar_one );
2367
2376
CHECK (secp256k1_scalar_is_zero (& o ));
2368
2377
secp256k1_scalar_negate (& o , & o );
2369
2378
CHECK (secp256k1_scalar_is_zero (& o ));
@@ -2388,7 +2397,6 @@ static void run_scalar_tests(void) {
2388
2397
secp256k1_scalar y ;
2389
2398
secp256k1_scalar z ;
2390
2399
secp256k1_scalar zz ;
2391
- secp256k1_scalar one ;
2392
2400
secp256k1_scalar r1 ;
2393
2401
secp256k1_scalar r2 ;
2394
2402
secp256k1_scalar zzv ;
@@ -2925,7 +2933,6 @@ static void run_scalar_tests(void) {
2925
2933
0x1e , 0x86 , 0x5d , 0x89 , 0x63 , 0xe6 , 0x0a , 0x46 ,
2926
2934
0x5c , 0x02 , 0x97 , 0x1b , 0x62 , 0x43 , 0x86 , 0xf5 }}
2927
2935
};
2928
- secp256k1_scalar_set_int (& one , 1 );
2929
2936
for (i = 0 ; i < 33 ; i ++ ) {
2930
2937
secp256k1_scalar_set_b32 (& x , chal [i ][0 ], & overflow );
2931
2938
CHECK (!overflow );
@@ -2948,7 +2955,7 @@ static void run_scalar_tests(void) {
2948
2955
CHECK (secp256k1_scalar_eq (& x , & z ));
2949
2956
secp256k1_scalar_mul (& zz , & zz , & y );
2950
2957
CHECK (!secp256k1_scalar_check_overflow (& zz ));
2951
- CHECK (secp256k1_scalar_eq (& one , & zz ));
2958
+ CHECK (secp256k1_scalar_eq (& secp256k1_scalar_one , & zz ));
2952
2959
}
2953
2960
}
2954
2961
}
@@ -4646,7 +4653,6 @@ static int ecmult_multi_false_callback(secp256k1_scalar *sc, secp256k1_ge *pt, s
4646
4653
4647
4654
static void test_ecmult_multi (secp256k1_scratch * scratch , secp256k1_ecmult_multi_func ecmult_multi ) {
4648
4655
int ncount ;
4649
- secp256k1_scalar szero ;
4650
4656
secp256k1_scalar sc [32 ];
4651
4657
secp256k1_ge pt [32 ];
4652
4658
secp256k1_gej r ;
@@ -4655,7 +4661,6 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4655
4661
4656
4662
data .sc = sc ;
4657
4663
data .pt = pt ;
4658
- secp256k1_scalar_set_int (& szero , 0 );
4659
4664
4660
4665
/* No points to multiply */
4661
4666
CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , NULL , ecmult_multi_callback , & data , 0 ));
@@ -4673,21 +4678,21 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4673
4678
pt [1 ] = secp256k1_ge_const_g ;
4674
4679
4675
4680
/* only G scalar */
4676
- secp256k1_ecmult (& r2 , & ptgj , & szero , & sc [0 ]);
4681
+ secp256k1_ecmult (& r2 , & ptgj , & secp256k1_scalar_zero , & sc [0 ]);
4677
4682
CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & sc [0 ], ecmult_multi_callback , & data , 0 ));
4678
4683
CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4679
4684
4680
4685
/* 1-point */
4681
- secp256k1_ecmult (& r2 , & ptgj , & sc [0 ], & szero );
4682
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 1 ));
4686
+ secp256k1_ecmult (& r2 , & ptgj , & sc [0 ], & secp256k1_scalar_zero );
4687
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 1 ));
4683
4688
CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4684
4689
4685
4690
/* Try to multiply 1 point, but callback returns false */
4686
- CHECK (!ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_false_callback , & data , 1 ));
4691
+ CHECK (!ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_false_callback , & data , 1 ));
4687
4692
4688
4693
/* 2-point */
4689
4694
secp256k1_ecmult (& r2 , & ptgj , & sc [0 ], & sc [1 ]);
4690
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 2 ));
4695
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 2 ));
4691
4696
CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4692
4697
4693
4698
/* 2-point with G scalar */
@@ -4707,7 +4712,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4707
4712
random_scalar_order (& sc [i ]);
4708
4713
secp256k1_ge_set_infinity (& pt [i ]);
4709
4714
}
4710
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , sizes [j ]));
4715
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , sizes [j ]));
4711
4716
CHECK (secp256k1_gej_is_infinity (& r ));
4712
4717
}
4713
4718
@@ -4717,7 +4722,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4717
4722
pt [i ] = ptg ;
4718
4723
secp256k1_scalar_set_int (& sc [i ], 0 );
4719
4724
}
4720
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , sizes [j ]));
4725
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , sizes [j ]));
4721
4726
CHECK (secp256k1_gej_is_infinity (& r ));
4722
4727
}
4723
4728
@@ -4730,7 +4735,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4730
4735
pt [2 * i + 1 ] = ptg ;
4731
4736
}
4732
4737
4733
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , sizes [j ]));
4738
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , sizes [j ]));
4734
4739
CHECK (secp256k1_gej_is_infinity (& r ));
4735
4740
4736
4741
random_scalar_order (& sc [0 ]);
@@ -4743,7 +4748,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4743
4748
secp256k1_ge_neg (& pt [2 * i + 1 ], & pt [2 * i ]);
4744
4749
}
4745
4750
4746
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , sizes [j ]));
4751
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , sizes [j ]));
4747
4752
CHECK (secp256k1_gej_is_infinity (& r ));
4748
4753
}
4749
4754
@@ -4758,7 +4763,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4758
4763
secp256k1_scalar_negate (& sc [i ], & sc [i ]);
4759
4764
}
4760
4765
4761
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 32 ));
4766
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 32 ));
4762
4767
CHECK (secp256k1_gej_is_infinity (& r ));
4763
4768
}
4764
4769
@@ -4776,8 +4781,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4776
4781
secp256k1_gej_add_ge_var (& r , & r , & pt [i ], NULL );
4777
4782
}
4778
4783
4779
- secp256k1_ecmult (& r2 , & r , & sc [0 ], & szero );
4780
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 20 ));
4784
+ secp256k1_ecmult (& r2 , & r , & sc [0 ], & secp256k1_scalar_zero );
4785
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 20 ));
4781
4786
CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4782
4787
}
4783
4788
@@ -4797,8 +4802,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4797
4802
}
4798
4803
4799
4804
secp256k1_gej_set_ge (& p0j , & pt [0 ]);
4800
- secp256k1_ecmult (& r2 , & p0j , & rs , & szero );
4801
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 20 ));
4805
+ secp256k1_ecmult (& r2 , & p0j , & rs , & secp256k1_scalar_zero );
4806
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 20 ));
4802
4807
CHECK (secp256k1_gej_eq_var (& r , & r2 ));
4803
4808
}
4804
4809
@@ -4809,13 +4814,13 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4809
4814
}
4810
4815
4811
4816
secp256k1_scalar_clear (& sc [0 ]);
4812
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 20 ));
4817
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 20 ));
4813
4818
secp256k1_scalar_clear (& sc [1 ]);
4814
4819
secp256k1_scalar_clear (& sc [2 ]);
4815
4820
secp256k1_scalar_clear (& sc [3 ]);
4816
4821
secp256k1_scalar_clear (& sc [4 ]);
4817
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 6 ));
4818
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & szero , ecmult_multi_callback , & data , 5 ));
4822
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 6 ));
4823
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 5 ));
4819
4824
CHECK (secp256k1_gej_is_infinity (& r ));
4820
4825
4821
4826
/* Run through s0*(t0*P) + s1*(t1*P) exhaustively for many small values of s0, s1, t0, t1 */
@@ -4839,8 +4844,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4839
4844
secp256k1_scalar_set_int (& t1 , (t1i + 1 ) / 2 );
4840
4845
secp256k1_scalar_cond_negate (& t1 , t1i & 1 );
4841
4846
4842
- secp256k1_ecmult (& t0p , & ptgj , & t0 , & szero );
4843
- secp256k1_ecmult (& t1p , & ptgj , & t1 , & szero );
4847
+ secp256k1_ecmult (& t0p , & ptgj , & t0 , & secp256k1_scalar_zero );
4848
+ secp256k1_ecmult (& t1p , & ptgj , & t1 , & secp256k1_scalar_zero );
4844
4849
4845
4850
for (s0i = 0 ; s0i < TOP ; s0i ++ ) {
4846
4851
for (s1i = 0 ; s1i < TOP ; s1i ++ ) {
@@ -4859,8 +4864,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
4859
4864
secp256k1_scalar_mul (& tmp2 , & t1 , & sc [1 ]);
4860
4865
secp256k1_scalar_add (& tmp1 , & tmp1 , & tmp2 );
4861
4866
4862
- secp256k1_ecmult (& expected , & ptgj , & tmp1 , & szero );
4863
- CHECK (ecmult_multi (& CTX -> error_callback , scratch , & actual , & szero , ecmult_multi_callback , & data , 2 ));
4867
+ secp256k1_ecmult (& expected , & ptgj , & tmp1 , & secp256k1_scalar_zero );
4868
+ CHECK (ecmult_multi (& CTX -> error_callback , scratch , & actual , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 2 ));
4864
4869
CHECK (secp256k1_gej_eq_var (& actual , & expected ));
4865
4870
}
4866
4871
}
@@ -5036,7 +5041,6 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
5036
5041
}
5037
5042
5038
5043
static void test_ecmult_multi_batch_single (secp256k1_ecmult_multi_func ecmult_multi ) {
5039
- secp256k1_scalar szero ;
5040
5044
secp256k1_scalar sc ;
5041
5045
secp256k1_ge pt ;
5042
5046
secp256k1_gej r ;
@@ -5047,11 +5051,10 @@ static void test_ecmult_multi_batch_single(secp256k1_ecmult_multi_func ecmult_mu
5047
5051
random_scalar_order (& sc );
5048
5052
data .sc = & sc ;
5049
5053
data .pt = & pt ;
5050
- secp256k1_scalar_set_int (& szero , 0 );
5051
5054
5052
5055
/* Try to multiply 1 point, but scratch space is empty.*/
5053
5056
scratch_empty = secp256k1_scratch_create (& CTX -> error_callback , 0 );
5054
- CHECK (!ecmult_multi (& CTX -> error_callback , scratch_empty , & r , & szero , ecmult_multi_callback , & data , 1 ));
5057
+ CHECK (!ecmult_multi (& CTX -> error_callback , scratch_empty , & r , & secp256k1_scalar_zero , ecmult_multi_callback , & data , 1 ));
5055
5058
secp256k1_scratch_destroy (& CTX -> error_callback , scratch_empty );
5056
5059
}
5057
5060
@@ -5159,7 +5162,6 @@ static void test_ecmult_multi_batch_size_helper(void) {
5159
5162
static void test_ecmult_multi_batching (void ) {
5160
5163
static const int n_points = 2 * ECMULT_PIPPENGER_THRESHOLD ;
5161
5164
secp256k1_scalar scG ;
5162
- secp256k1_scalar szero ;
5163
5165
secp256k1_scalar * sc = (secp256k1_scalar * )checked_malloc (& CTX -> error_callback , sizeof (secp256k1_scalar ) * n_points );
5164
5166
secp256k1_ge * pt = (secp256k1_ge * )checked_malloc (& CTX -> error_callback , sizeof (secp256k1_ge ) * n_points );
5165
5167
secp256k1_gej r ;
@@ -5169,11 +5171,10 @@ static void test_ecmult_multi_batching(void) {
5169
5171
secp256k1_scratch * scratch ;
5170
5172
5171
5173
secp256k1_gej_set_infinity (& r2 );
5172
- secp256k1_scalar_set_int (& szero , 0 );
5173
5174
5174
5175
/* Get random scalars and group elements and compute result */
5175
5176
random_scalar_order (& scG );
5176
- secp256k1_ecmult (& r2 , & r2 , & szero , & scG );
5177
+ secp256k1_ecmult (& r2 , & r2 , & secp256k1_scalar_zero , & scG );
5177
5178
for (i = 0 ; i < n_points ; i ++ ) {
5178
5179
secp256k1_ge ptg ;
5179
5180
secp256k1_gej ptgj ;
0 commit comments