@@ -2307,26 +2307,23 @@ static void scalar_test(void) {
23072307
23082308 {
23092309 /* 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 );
23132312 CHECK (secp256k1_scalar_eq (& r1 , & s1 ));
23142313 }
23152314
23162315 {
23172316 /* 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 );
23212319 CHECK (secp256k1_scalar_eq (& r1 , & s1 ));
23222320 }
23232321
23242322 {
23252323 /* 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 ));
23302327 }
23312328
23322329}
@@ -2357,13 +2354,25 @@ static void run_scalar_tests(void) {
23572354 run_scalar_set_b32_seckey_tests ();
23582355 }
23592356
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+
23602371 {
23612372 /* (-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 );
23672376 CHECK (secp256k1_scalar_is_zero (& o ));
23682377 secp256k1_scalar_negate (& o , & o );
23692378 CHECK (secp256k1_scalar_is_zero (& o ));
@@ -2388,7 +2397,6 @@ static void run_scalar_tests(void) {
23882397 secp256k1_scalar y ;
23892398 secp256k1_scalar z ;
23902399 secp256k1_scalar zz ;
2391- secp256k1_scalar one ;
23922400 secp256k1_scalar r1 ;
23932401 secp256k1_scalar r2 ;
23942402 secp256k1_scalar zzv ;
@@ -2925,7 +2933,6 @@ static void run_scalar_tests(void) {
29252933 0x1e , 0x86 , 0x5d , 0x89 , 0x63 , 0xe6 , 0x0a , 0x46 ,
29262934 0x5c , 0x02 , 0x97 , 0x1b , 0x62 , 0x43 , 0x86 , 0xf5 }}
29272935 };
2928- secp256k1_scalar_set_int (& one , 1 );
29292936 for (i = 0 ; i < 33 ; i ++ ) {
29302937 secp256k1_scalar_set_b32 (& x , chal [i ][0 ], & overflow );
29312938 CHECK (!overflow );
@@ -2948,7 +2955,7 @@ static void run_scalar_tests(void) {
29482955 CHECK (secp256k1_scalar_eq (& x , & z ));
29492956 secp256k1_scalar_mul (& zz , & zz , & y );
29502957 CHECK (!secp256k1_scalar_check_overflow (& zz ));
2951- CHECK (secp256k1_scalar_eq (& one , & zz ));
2958+ CHECK (secp256k1_scalar_eq (& secp256k1_scalar_one , & zz ));
29522959 }
29532960 }
29542961 }
@@ -4646,7 +4653,6 @@ static int ecmult_multi_false_callback(secp256k1_scalar *sc, secp256k1_ge *pt, s
46464653
46474654static void test_ecmult_multi (secp256k1_scratch * scratch , secp256k1_ecmult_multi_func ecmult_multi ) {
46484655 int ncount ;
4649- secp256k1_scalar szero ;
46504656 secp256k1_scalar sc [32 ];
46514657 secp256k1_ge pt [32 ];
46524658 secp256k1_gej r ;
@@ -4655,7 +4661,6 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
46554661
46564662 data .sc = sc ;
46574663 data .pt = pt ;
4658- secp256k1_scalar_set_int (& szero , 0 );
46594664
46604665 /* No points to multiply */
46614666 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
46734678 pt [1 ] = secp256k1_ge_const_g ;
46744679
46754680 /* only G scalar */
4676- secp256k1_ecmult (& r2 , & ptgj , & szero , & sc [0 ]);
4681+ secp256k1_ecmult (& r2 , & ptgj , & secp256k1_scalar_zero , & sc [0 ]);
46774682 CHECK (ecmult_multi (& CTX -> error_callback , scratch , & r , & sc [0 ], ecmult_multi_callback , & data , 0 ));
46784683 CHECK (secp256k1_gej_eq_var (& r , & r2 ));
46794684
46804685 /* 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 ));
46834688 CHECK (secp256k1_gej_eq_var (& r , & r2 ));
46844689
46854690 /* 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 ));
46874692
46884693 /* 2-point */
46894694 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 ));
46914696 CHECK (secp256k1_gej_eq_var (& r , & r2 ));
46924697
46934698 /* 2-point with G scalar */
@@ -4707,7 +4712,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
47074712 random_scalar_order (& sc [i ]);
47084713 secp256k1_ge_set_infinity (& pt [i ]);
47094714 }
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 ]));
47114716 CHECK (secp256k1_gej_is_infinity (& r ));
47124717 }
47134718
@@ -4717,7 +4722,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
47174722 pt [i ] = ptg ;
47184723 secp256k1_scalar_set_int (& sc [i ], 0 );
47194724 }
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 ]));
47214726 CHECK (secp256k1_gej_is_infinity (& r ));
47224727 }
47234728
@@ -4730,7 +4735,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
47304735 pt [2 * i + 1 ] = ptg ;
47314736 }
47324737
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 ]));
47344739 CHECK (secp256k1_gej_is_infinity (& r ));
47354740
47364741 random_scalar_order (& sc [0 ]);
@@ -4743,7 +4748,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
47434748 secp256k1_ge_neg (& pt [2 * i + 1 ], & pt [2 * i ]);
47444749 }
47454750
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 ]));
47474752 CHECK (secp256k1_gej_is_infinity (& r ));
47484753 }
47494754
@@ -4758,7 +4763,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
47584763 secp256k1_scalar_negate (& sc [i ], & sc [i ]);
47594764 }
47604765
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 ));
47624767 CHECK (secp256k1_gej_is_infinity (& r ));
47634768 }
47644769
@@ -4776,8 +4781,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
47764781 secp256k1_gej_add_ge_var (& r , & r , & pt [i ], NULL );
47774782 }
47784783
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 ));
47814786 CHECK (secp256k1_gej_eq_var (& r , & r2 ));
47824787 }
47834788
@@ -4797,8 +4802,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
47974802 }
47984803
47994804 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 ));
48024807 CHECK (secp256k1_gej_eq_var (& r , & r2 ));
48034808 }
48044809
@@ -4809,13 +4814,13 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
48094814 }
48104815
48114816 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 ));
48134818 secp256k1_scalar_clear (& sc [1 ]);
48144819 secp256k1_scalar_clear (& sc [2 ]);
48154820 secp256k1_scalar_clear (& sc [3 ]);
48164821 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 ));
48194824 CHECK (secp256k1_gej_is_infinity (& r ));
48204825
48214826 /* 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
48394844 secp256k1_scalar_set_int (& t1 , (t1i + 1 ) / 2 );
48404845 secp256k1_scalar_cond_negate (& t1 , t1i & 1 );
48414846
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 );
48444849
48454850 for (s0i = 0 ; s0i < TOP ; s0i ++ ) {
48464851 for (s1i = 0 ; s1i < TOP ; s1i ++ ) {
@@ -4859,8 +4864,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
48594864 secp256k1_scalar_mul (& tmp2 , & t1 , & sc [1 ]);
48604865 secp256k1_scalar_add (& tmp1 , & tmp1 , & tmp2 );
48614866
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 ));
48644869 CHECK (secp256k1_gej_eq_var (& actual , & expected ));
48654870 }
48664871 }
@@ -5036,7 +5041,6 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
50365041}
50375042
50385043static void test_ecmult_multi_batch_single (secp256k1_ecmult_multi_func ecmult_multi ) {
5039- secp256k1_scalar szero ;
50405044 secp256k1_scalar sc ;
50415045 secp256k1_ge pt ;
50425046 secp256k1_gej r ;
@@ -5047,11 +5051,10 @@ static void test_ecmult_multi_batch_single(secp256k1_ecmult_multi_func ecmult_mu
50475051 random_scalar_order (& sc );
50485052 data .sc = & sc ;
50495053 data .pt = & pt ;
5050- secp256k1_scalar_set_int (& szero , 0 );
50515054
50525055 /* Try to multiply 1 point, but scratch space is empty.*/
50535056 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 ));
50555058 secp256k1_scratch_destroy (& CTX -> error_callback , scratch_empty );
50565059}
50575060
@@ -5159,7 +5162,6 @@ static void test_ecmult_multi_batch_size_helper(void) {
51595162static void test_ecmult_multi_batching (void ) {
51605163 static const int n_points = 2 * ECMULT_PIPPENGER_THRESHOLD ;
51615164 secp256k1_scalar scG ;
5162- secp256k1_scalar szero ;
51635165 secp256k1_scalar * sc = (secp256k1_scalar * )checked_malloc (& CTX -> error_callback , sizeof (secp256k1_scalar ) * n_points );
51645166 secp256k1_ge * pt = (secp256k1_ge * )checked_malloc (& CTX -> error_callback , sizeof (secp256k1_ge ) * n_points );
51655167 secp256k1_gej r ;
@@ -5169,11 +5171,10 @@ static void test_ecmult_multi_batching(void) {
51695171 secp256k1_scratch * scratch ;
51705172
51715173 secp256k1_gej_set_infinity (& r2 );
5172- secp256k1_scalar_set_int (& szero , 0 );
51735174
51745175 /* Get random scalars and group elements and compute result */
51755176 random_scalar_order (& scG );
5176- secp256k1_ecmult (& r2 , & r2 , & szero , & scG );
5177+ secp256k1_ecmult (& r2 , & r2 , & secp256k1_scalar_zero , & scG );
51775178 for (i = 0 ; i < n_points ; i ++ ) {
51785179 secp256k1_ge ptg ;
51795180 secp256k1_gej ptgj ;
0 commit comments