@@ -593,23 +593,6 @@ void scalar_test(void) {
593
593
CHECK (secp256k1_num_eq (& rnum , & r2num ));
594
594
}
595
595
596
- {
597
- /* Test that multiplying the scalars is equal to multiplying their numbers modulo the order. */
598
- secp256k1_scalar r ;
599
- secp256k1_num r2num ;
600
- secp256k1_num rnum ;
601
- secp256k1_num_mul (& rnum , & snum , & s2num );
602
- secp256k1_num_mod (& rnum , & order );
603
- secp256k1_scalar_mul (& r , & s , & s2 );
604
- secp256k1_scalar_get_num (& r2num , & r );
605
- CHECK (secp256k1_num_eq (& rnum , & r2num ));
606
- /* The result can only be zero if at least one of the factors was zero. */
607
- CHECK (secp256k1_scalar_is_zero (& r ) == (secp256k1_scalar_is_zero (& s ) || secp256k1_scalar_is_zero (& s2 )));
608
- /* The results can only be equal to one of the factors if that factor was zero, or the other factor was one. */
609
- CHECK (secp256k1_num_eq (& rnum , & snum ) == (secp256k1_scalar_is_zero (& s ) || secp256k1_scalar_is_one (& s2 )));
610
- CHECK (secp256k1_num_eq (& rnum , & s2num ) == (secp256k1_scalar_is_zero (& s2 ) || secp256k1_scalar_is_one (& s )));
611
- }
612
-
613
596
{
614
597
secp256k1_scalar neg ;
615
598
secp256k1_num negnum ;
@@ -636,24 +619,6 @@ void scalar_test(void) {
636
619
CHECK (secp256k1_scalar_is_zero (& neg ));
637
620
}
638
621
639
- {
640
- /* Test secp256k1_scalar_mul_shift_var. */
641
- secp256k1_scalar r ;
642
- secp256k1_num one ;
643
- secp256k1_num rnum ;
644
- secp256k1_num rnum2 ;
645
- unsigned char cone [1 ] = {0x01 };
646
- unsigned int shift = 256 + secp256k1_rand_int (257 );
647
- secp256k1_scalar_mul_shift_var (& r , & s1 , & s2 , shift );
648
- secp256k1_num_mul (& rnum , & s1num , & s2num );
649
- secp256k1_num_shift (& rnum , shift - 1 );
650
- secp256k1_num_set_bin (& one , cone , 1 );
651
- secp256k1_num_add (& rnum , & rnum , & one );
652
- secp256k1_num_shift (& rnum , 1 );
653
- secp256k1_scalar_get_num (& rnum2 , & r );
654
- CHECK (secp256k1_num_eq (& rnum , & rnum2 ));
655
- }
656
-
657
622
{
658
623
/* test secp256k1_scalar_shr_int */
659
624
secp256k1_scalar r ;
@@ -2532,13 +2497,22 @@ void run_ecmult_gen_blind(void) {
2532
2497
/***** ENDOMORPHISH TESTS *****/
2533
2498
void test_scalar_split (void ) {
2534
2499
secp256k1_scalar full ;
2535
- secp256k1_scalar s1 , slam ;
2500
+ secp256k1_scalar s1 , slam , stmp ;
2536
2501
const unsigned char zero [32 ] = {0 };
2537
2502
unsigned char tmp [32 ];
2503
+ secp256k1_scalar lambda = SECP256K1_SCALAR_CONST (
2504
+ 0x5363ad4c , 0xc05c30e0 , 0xa5261c02 , 0x8812645a ,
2505
+ 0x122e22ea , 0x20816678 , 0xdf02967c , 0x1b23bd72
2506
+ );
2538
2507
2539
2508
random_scalar_order_test (& full );
2540
2509
secp256k1_scalar_split_lambda (& s1 , & slam , & full );
2541
2510
2511
+ /* check that they are a lambda decomposition */
2512
+ secp256k1_scalar_mul (& stmp , & lambda , & slam );
2513
+ secp256k1_scalar_add (& stmp , & stmp , & s1 );
2514
+ CHECK (secp256k1_scalar_eq (& stmp , & full ));
2515
+
2542
2516
/* check that both are <= 128 bits in size */
2543
2517
if (secp256k1_scalar_is_high (& s1 )) {
2544
2518
secp256k1_scalar_negate (& s1 , & s1 );
0 commit comments