@@ -218,36 +218,21 @@ static void secp256k1_ecmult_const(secp256k1_gej *r, const secp256k1_ge *a, cons
218218
219219 {
220220 /* Correct for wNAF skew */
221- secp256k1_ge correction = * a ;
222- secp256k1_ge_storage correction_1_stor ;
223- secp256k1_ge_storage correction_lam_stor ;
224- secp256k1_ge_storage a2_stor ;
225- secp256k1_gej tmpj ;
226- secp256k1_gej_set_ge (& tmpj , & correction );
227- secp256k1_gej_double_var (& tmpj , & tmpj , NULL );
228- secp256k1_ge_set_gej (& correction , & tmpj );
229- secp256k1_ge_to_storage (& correction_1_stor , a );
230- if (size > 128 ) {
231- secp256k1_ge_to_storage (& correction_lam_stor , a );
232- }
233- secp256k1_ge_to_storage (& a2_stor , & correction );
234-
235- /* For odd numbers this is 2a (so replace it), for even ones a (so no-op) */
236- secp256k1_ge_storage_cmov (& correction_1_stor , & a2_stor , skew_1 == 2 );
237- if (size > 128 ) {
238- secp256k1_ge_storage_cmov (& correction_lam_stor , & a2_stor , skew_lam == 2 );
239- }
221+ secp256k1_gej tmp ;
222+ secp256k1_ge a_1 ;
240223
241- /* Apply the correction */
242- secp256k1_ge_from_storage ( & correction , & correction_1_stor );
243- secp256k1_ge_neg ( & correction , & correction );
244- secp256k1_gej_add_ge (r , r , & correction );
224+ secp256k1_ge_neg ( & a_1 , a );
225+ secp256k1_gej_add_ge ( r , r , & a_1 );
226+ secp256k1_gej_add_ge ( & tmp , r , & a_1 );
227+ secp256k1_gej_cmov (r , & tmp , skew_1 == 2 );
245228
246229 if (size > 128 ) {
247- secp256k1_ge_from_storage (& correction , & correction_lam_stor );
248- secp256k1_ge_neg (& correction , & correction );
249- secp256k1_ge_mul_lambda (& correction , & correction );
250- secp256k1_gej_add_ge (r , r , & correction );
230+ secp256k1_ge a_lam ;
231+ secp256k1_ge_mul_lambda (& a_lam , & a_1 );
232+
233+ secp256k1_gej_add_ge (r , r , & a_lam );
234+ secp256k1_gej_add_ge (& tmp , r , & a_lam );
235+ secp256k1_gej_cmov (r , & tmp , skew_lam == 2 );
251236 }
252237 }
253238}
0 commit comments