@@ -234,36 +234,21 @@ static void secp256k1_ecmult_const(secp256k1_gej *r, const secp256k1_ge *a, cons
234234
235235    {
236236        /* Correct for wNAF skew */ 
237-         secp256k1_ge  correction  =  * a ;
238-         secp256k1_ge_storage  correction_1_stor ;
239-         secp256k1_ge_storage  correction_lam_stor ;
240-         secp256k1_ge_storage  a2_stor ;
241-         secp256k1_gej  tmpj ;
242-         secp256k1_gej_set_ge (& tmpj , & correction );
243-         secp256k1_gej_double_var (& tmpj , & tmpj , NULL );
244-         secp256k1_ge_set_gej (& correction , & tmpj );
245-         secp256k1_ge_to_storage (& correction_1_stor , a );
246-         if  (size  >  128 ) {
247-             secp256k1_ge_to_storage (& correction_lam_stor , a );
248-         }
249-         secp256k1_ge_to_storage (& a2_stor , & correction );
250- 
251-         /* For odd numbers this is 2a (so replace it), for even ones a (so no-op) */ 
252-         secp256k1_ge_storage_cmov (& correction_1_stor , & a2_stor , skew_1  ==  2 );
253-         if  (size  >  128 ) {
254-             secp256k1_ge_storage_cmov (& correction_lam_stor , & a2_stor , skew_lam  ==  2 );
255-         }
237+         secp256k1_gej  tmp ;
238+         secp256k1_ge  a_1 ;
256239
257-         /* Apply the correction */ 
258-         secp256k1_ge_from_storage ( & correction ,  & correction_1_stor );
259-         secp256k1_ge_neg ( & correction ,  & correction );
260-         secp256k1_gej_add_ge (r , r ,  & correction );
240+         secp256k1_ge_neg ( & a_1 ,  a ); 
241+         secp256k1_gej_add_ge ( r ,  r ,  & a_1 );
242+         secp256k1_gej_add_ge ( & tmp ,  r ,  & a_1 );
243+         secp256k1_gej_cmov (r , & tmp ,  skew_1   ==   2 );
261244
262245        if  (size  >  128 ) {
263-             secp256k1_ge_from_storage (& correction , & correction_lam_stor );
264-             secp256k1_ge_neg (& correction , & correction );
265-             secp256k1_ge_mul_lambda (& correction , & correction );
266-             secp256k1_gej_add_ge (r , r , & correction );
246+             secp256k1_ge  a_lam ;
247+             secp256k1_ge_mul_lambda (& a_lam , & a_1 );
248+ 
249+             secp256k1_gej_add_ge (r , r , & a_lam );
250+             secp256k1_gej_add_ge (& tmp , r , & a_lam );
251+             secp256k1_gej_cmov (r , & tmp , skew_lam  ==  2 );
267252        }
268253    }
269254}
0 commit comments