@@ -491,12 +491,12 @@ static void secp256k1_gej_add_ge_var(secp256k1_gej *r, const secp256k1_gej *a, c
491
491
r -> infinity = 0 ;
492
492
493
493
secp256k1_fe_sqr (& z12 , & a -> z );
494
- u1 = a -> x ; secp256k1_fe_normalize_weak ( & u1 );
494
+ u1 = a -> x ;
495
495
secp256k1_fe_mul (& u2 , & b -> x , & z12 );
496
- s1 = a -> y ; secp256k1_fe_normalize_weak ( & s1 );
496
+ s1 = a -> y ;
497
497
secp256k1_fe_mul (& s2 , & b -> y , & z12 ); secp256k1_fe_mul (& s2 , & s2 , & a -> z );
498
- secp256k1_fe_negate (& h , & u1 , 1 ); secp256k1_fe_add (& h , & u2 );
499
- secp256k1_fe_negate (& i , & s1 , 1 ); secp256k1_fe_add (& i , & s2 );
498
+ secp256k1_fe_negate (& h , & u1 , 6 ); secp256k1_fe_add (& h , & u2 );
499
+ secp256k1_fe_negate (& i , & s1 , 4 ); secp256k1_fe_add (& i , & s2 );
500
500
if (secp256k1_fe_normalizes_to_zero_var (& h )) {
501
501
if (secp256k1_fe_normalizes_to_zero_var (& i )) {
502
502
secp256k1_gej_double_var (r , a , rzr );
@@ -559,12 +559,12 @@ static void secp256k1_gej_add_zinv_var(secp256k1_gej *r, const secp256k1_gej *a,
559
559
secp256k1_fe_mul (& az , & a -> z , bzinv );
560
560
561
561
secp256k1_fe_sqr (& z12 , & az );
562
- u1 = a -> x ; secp256k1_fe_normalize_weak ( & u1 );
562
+ u1 = a -> x ;
563
563
secp256k1_fe_mul (& u2 , & b -> x , & z12 );
564
- s1 = a -> y ; secp256k1_fe_normalize_weak ( & s1 );
564
+ s1 = a -> y ;
565
565
secp256k1_fe_mul (& s2 , & b -> y , & z12 ); secp256k1_fe_mul (& s2 , & s2 , & az );
566
- secp256k1_fe_negate (& h , & u1 , 1 ); secp256k1_fe_add (& h , & u2 );
567
- secp256k1_fe_negate (& i , & s1 , 1 ); secp256k1_fe_add (& i , & s2 );
566
+ secp256k1_fe_negate (& h , & u1 , 6 ); secp256k1_fe_add (& h , & u2 );
567
+ secp256k1_fe_negate (& i , & s1 , 4 ); secp256k1_fe_add (& i , & s2 );
568
568
if (secp256k1_fe_normalizes_to_zero_var (& h )) {
569
569
if (secp256k1_fe_normalizes_to_zero_var (& i )) {
570
570
secp256k1_gej_double_var (r , a , NULL );
@@ -649,17 +649,17 @@ static void secp256k1_gej_add_ge(secp256k1_gej *r, const secp256k1_gej *a, const
649
649
*/
650
650
651
651
secp256k1_fe_sqr (& zz , & a -> z ); /* z = Z1^2 */
652
- u1 = a -> x ; secp256k1_fe_normalize_weak ( & u1 ); /* u1 = U1 = X1*Z2^2 (1 ) */
652
+ u1 = a -> x ; /* u1 = U1 = X1*Z2^2 (6 ) */
653
653
secp256k1_fe_mul (& u2 , & b -> x , & zz ); /* u2 = U2 = X2*Z1^2 (1) */
654
- s1 = a -> y ; secp256k1_fe_normalize_weak ( & s1 ); /* s1 = S1 = Y1*Z2^3 (1 ) */
654
+ s1 = a -> y ; /* s1 = S1 = Y1*Z2^3 (4 ) */
655
655
secp256k1_fe_mul (& s2 , & b -> y , & zz ); /* s2 = Y2*Z1^2 (1) */
656
656
secp256k1_fe_mul (& s2 , & s2 , & a -> z ); /* s2 = S2 = Y2*Z1^3 (1) */
657
- t = u1 ; secp256k1_fe_add (& t , & u2 ); /* t = T = U1+U2 (2 ) */
658
- m = s1 ; secp256k1_fe_add (& m , & s2 ); /* m = M = S1+S2 (2 ) */
657
+ t = u1 ; secp256k1_fe_add (& t , & u2 ); /* t = T = U1+U2 (7 ) */
658
+ m = s1 ; secp256k1_fe_add (& m , & s2 ); /* m = M = S1+S2 (5 ) */
659
659
secp256k1_fe_sqr (& rr , & t ); /* rr = T^2 (1) */
660
- secp256k1_fe_negate (& m_alt , & u2 , 1 ); /* Malt = -X2*Z1^2 */
661
- secp256k1_fe_mul (& tt , & u1 , & m_alt ); /* tt = -U1*U2 (2 ) */
662
- secp256k1_fe_add (& rr , & tt ); /* rr = R = T^2-U1*U2 (3 ) */
660
+ secp256k1_fe_negate (& m_alt , & u2 , 1 ); /* Malt = -X2*Z1^2 (2) */
661
+ secp256k1_fe_mul (& tt , & u1 , & m_alt ); /* tt = -U1*U2 (1 ) */
662
+ secp256k1_fe_add (& rr , & tt ); /* rr = R = T^2-U1*U2 (2 ) */
663
663
/** If lambda = R/M = 0/0 we have a problem (except in the "trivial"
664
664
* case that Z = z1z2 = 0, and this is special-cased later on). */
665
665
degenerate = secp256k1_fe_normalizes_to_zero (& m ) &
@@ -670,8 +670,8 @@ static void secp256k1_gej_add_ge(secp256k1_gej *r, const secp256k1_gej *a, const
670
670
* non-indeterminate expression for lambda is (y1 - y2)/(x1 - x2),
671
671
* so we set R/M equal to this. */
672
672
rr_alt = s1 ;
673
- secp256k1_fe_mul_int (& rr_alt , 2 ); /* rr = Y1*Z2^3 - Y2*Z1^3 (2 ) */
674
- secp256k1_fe_add (& m_alt , & u1 ); /* Malt = X1*Z2^2 - X2*Z1^2 */
673
+ secp256k1_fe_mul_int (& rr_alt , 2 ); /* rr = Y1*Z2^3 - Y2*Z1^3 (8 ) */
674
+ secp256k1_fe_add (& m_alt , & u1 ); /* Malt = X1*Z2^2 - X2*Z1^2 (8) */
675
675
676
676
secp256k1_fe_cmov (& rr_alt , & rr , !degenerate );
677
677
secp256k1_fe_cmov (& m_alt , & m , !degenerate );
@@ -686,7 +686,7 @@ static void secp256k1_gej_add_ge(secp256k1_gej *r, const secp256k1_gej *a, const
686
686
* zero (which is "computed" by cmov). So the cost is one squaring
687
687
* versus two multiplications. */
688
688
secp256k1_fe_sqr (& n , & n );
689
- secp256k1_fe_cmov (& n , & m , degenerate ); /* n = M^3 * Malt (2 ) */
689
+ secp256k1_fe_cmov (& n , & m , degenerate ); /* n = M^3 * Malt (5 ) */
690
690
secp256k1_fe_sqr (& t , & rr_alt ); /* t = Ralt^2 (1) */
691
691
secp256k1_fe_mul (& r -> z , & a -> z , & m_alt ); /* r->z = Malt*Z (1) */
692
692
infinity = secp256k1_fe_normalizes_to_zero (& r -> z ) & ~a -> infinity ;
@@ -698,8 +698,8 @@ static void secp256k1_gej_add_ge(secp256k1_gej *r, const secp256k1_gej *a, const
698
698
secp256k1_fe_mul_int (& t , 2 ); /* t = 2*x3 (2) */
699
699
secp256k1_fe_add (& t , & q ); /* t = 2*x3 - Q: (4) */
700
700
secp256k1_fe_mul (& t , & t , & rr_alt ); /* t = Ralt*(2*x3 - Q) (1) */
701
- secp256k1_fe_add (& t , & n ); /* t = Ralt*(2*x3 - Q) + M^3*Malt (3 ) */
702
- secp256k1_fe_negate (& r -> y , & t , 3 ); /* r->y = Ralt*(Q - 2x3) - M^3*Malt (4 ) */
701
+ secp256k1_fe_add (& t , & n ); /* t = Ralt*(2*x3 - Q) + M^3*Malt (6 ) */
702
+ secp256k1_fe_negate (& r -> y , & t , 6 ); /* r->y = Ralt*(Q - 2x3) - M^3*Malt (7 ) */
703
703
secp256k1_fe_normalize_weak (& r -> y );
704
704
secp256k1_fe_mul_int (& r -> x , 4 ); /* r->x = X3 = 4*(Ralt^2-Q) */
705
705
secp256k1_fe_mul_int (& r -> y , 4 ); /* r->y = Y3 = 4*Ralt*(Q - 2x3) - 4*M^3*Malt (4) */
0 commit comments