@@ -591,23 +591,6 @@ void scalar_test(void) {
591
591
CHECK (secp256k1_num_eq (& rnum , & r2num ));
592
592
}
593
593
594
- {
595
- /* Test that multipying the scalars is equal to multiplying their numbers modulo the order. */
596
- secp256k1_scalar r ;
597
- secp256k1_num r2num ;
598
- secp256k1_num rnum ;
599
- secp256k1_num_mul (& rnum , & snum , & s2num );
600
- secp256k1_num_mod (& rnum , & order );
601
- secp256k1_scalar_mul (& r , & s , & s2 );
602
- secp256k1_scalar_get_num (& r2num , & r );
603
- CHECK (secp256k1_num_eq (& rnum , & r2num ));
604
- /* The result can only be zero if at least one of the factors was zero. */
605
- CHECK (secp256k1_scalar_is_zero (& r ) == (secp256k1_scalar_is_zero (& s ) || secp256k1_scalar_is_zero (& s2 )));
606
- /* The results can only be equal to one of the factors if that factor was zero, or the other factor was one. */
607
- CHECK (secp256k1_num_eq (& rnum , & snum ) == (secp256k1_scalar_is_zero (& s ) || secp256k1_scalar_is_one (& s2 )));
608
- CHECK (secp256k1_num_eq (& rnum , & s2num ) == (secp256k1_scalar_is_zero (& s2 ) || secp256k1_scalar_is_one (& s )));
609
- }
610
-
611
594
{
612
595
secp256k1_scalar neg ;
613
596
secp256k1_num negnum ;
@@ -634,24 +617,6 @@ void scalar_test(void) {
634
617
CHECK (secp256k1_scalar_is_zero (& neg ));
635
618
}
636
619
637
- {
638
- /* Test secp256k1_scalar_mul_shift_var. */
639
- secp256k1_scalar r ;
640
- secp256k1_num one ;
641
- secp256k1_num rnum ;
642
- secp256k1_num rnum2 ;
643
- unsigned char cone [1 ] = {0x01 };
644
- unsigned int shift = 256 + secp256k1_rand_int (257 );
645
- secp256k1_scalar_mul_shift_var (& r , & s1 , & s2 , shift );
646
- secp256k1_num_mul (& rnum , & s1num , & s2num );
647
- secp256k1_num_shift (& rnum , shift - 1 );
648
- secp256k1_num_set_bin (& one , cone , 1 );
649
- secp256k1_num_add (& rnum , & rnum , & one );
650
- secp256k1_num_shift (& rnum , 1 );
651
- secp256k1_scalar_get_num (& rnum2 , & r );
652
- CHECK (secp256k1_num_eq (& rnum , & rnum2 ));
653
- }
654
-
655
620
{
656
621
/* test secp256k1_scalar_shr_int */
657
622
secp256k1_scalar r ;
@@ -1886,13 +1851,22 @@ void run_ecmult_gen_blind(void) {
1886
1851
/***** ENDOMORPHISH TESTS *****/
1887
1852
void test_scalar_split (void ) {
1888
1853
secp256k1_scalar full ;
1889
- secp256k1_scalar s1 , slam ;
1854
+ secp256k1_scalar s1 , slam , stmp ;
1890
1855
const unsigned char zero [32 ] = {0 };
1891
1856
unsigned char tmp [32 ];
1857
+ secp256k1_scalar lambda = SECP256K1_SCALAR_CONST (
1858
+ 0x5363ad4c , 0xc05c30e0 , 0xa5261c02 , 0x8812645a ,
1859
+ 0x122e22ea , 0x20816678 , 0xdf02967c , 0x1b23bd72
1860
+ );
1892
1861
1893
1862
random_scalar_order_test (& full );
1894
1863
secp256k1_scalar_split_lambda (& s1 , & slam , & full );
1895
1864
1865
+ /* check that they are a lambda decomposition */
1866
+ secp256k1_scalar_mul (& stmp , & lambda , & slam );
1867
+ secp256k1_scalar_add (& stmp , & stmp , & s1 );
1868
+ CHECK (secp256k1_scalar_eq (& stmp , & full ));
1869
+
1896
1870
/* check that both are <= 128 bits in size */
1897
1871
if (secp256k1_scalar_is_high (& s1 )) {
1898
1872
secp256k1_scalar_negate (& s1 , & s1 );
0 commit comments