@@ -234,36 +234,21 @@ static void secp256k1_ecmult_const(secp256k1_gej *r, const secp256k1_ge *a, cons
234
234
235
235
{
236
236
/* 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 ;
256
239
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 );
261
244
262
245
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 );
267
252
}
268
253
}
269
254
}
0 commit comments