47
47
48
48
/* The number of objects allocated on the scratch space for ecmult_multi algorithms */
49
49
#define PIPPENGER_SCRATCH_OBJECTS 6
50
- #define STRAUSS_SCRATCH_OBJECTS 6
50
+ #define STRAUSS_SCRATCH_OBJECTS 5
51
51
52
52
#define PIPPENGER_MAX_BUCKET_WINDOW 12
53
53
@@ -227,7 +227,6 @@ struct secp256k1_strauss_state {
227
227
/* aux is used to hold z-ratios, and then used to hold pre_a[i].x * BETA values. */
228
228
secp256k1_fe * aux ;
229
229
secp256k1_ge * pre_a ;
230
- secp256k1_ge * pre_a_lam ;
231
230
struct secp256k1_strauss_point_state * ps ;
232
231
};
233
232
@@ -350,18 +349,16 @@ static void secp256k1_ecmult(secp256k1_gej *r, const secp256k1_gej *a, const sec
350
349
secp256k1_fe aux [ECMULT_TABLE_SIZE (WINDOW_A )];
351
350
secp256k1_ge pre_a [ECMULT_TABLE_SIZE (WINDOW_A )];
352
351
struct secp256k1_strauss_point_state ps [1 ];
353
- secp256k1_ge pre_a_lam [ECMULT_TABLE_SIZE (WINDOW_A )];
354
352
struct secp256k1_strauss_state state ;
355
353
356
354
state .aux = aux ;
357
355
state .pre_a = pre_a ;
358
- state .pre_a_lam = pre_a_lam ;
359
356
state .ps = ps ;
360
357
secp256k1_ecmult_strauss_wnaf (& state , r , 1 , a , na , ng );
361
358
}
362
359
363
360
static size_t secp256k1_strauss_scratch_size (size_t n_points ) {
364
- static const size_t point_size = (2 * sizeof (secp256k1_ge ) + sizeof (secp256k1_fe )) * ECMULT_TABLE_SIZE (WINDOW_A ) + sizeof (struct secp256k1_strauss_point_state ) + sizeof (secp256k1_gej ) + sizeof (secp256k1_scalar );
361
+ static const size_t point_size = (sizeof (secp256k1_ge ) + sizeof (secp256k1_fe )) * ECMULT_TABLE_SIZE (WINDOW_A ) + sizeof (struct secp256k1_strauss_point_state ) + sizeof (secp256k1_gej ) + sizeof (secp256k1_scalar );
365
362
return n_points * point_size ;
366
363
}
367
364
@@ -384,10 +381,9 @@ static int secp256k1_ecmult_strauss_batch(const secp256k1_callback* error_callba
384
381
scalars = (secp256k1_scalar * )secp256k1_scratch_alloc (error_callback , scratch , n_points * sizeof (secp256k1_scalar ));
385
382
state .aux = (secp256k1_fe * )secp256k1_scratch_alloc (error_callback , scratch , n_points * ECMULT_TABLE_SIZE (WINDOW_A ) * sizeof (secp256k1_fe ));
386
383
state .pre_a = (secp256k1_ge * )secp256k1_scratch_alloc (error_callback , scratch , n_points * ECMULT_TABLE_SIZE (WINDOW_A ) * sizeof (secp256k1_ge ));
387
- state .pre_a_lam = (secp256k1_ge * )secp256k1_scratch_alloc (error_callback , scratch , n_points * ECMULT_TABLE_SIZE (WINDOW_A ) * sizeof (secp256k1_ge ));
388
384
state .ps = (struct secp256k1_strauss_point_state * )secp256k1_scratch_alloc (error_callback , scratch , n_points * sizeof (struct secp256k1_strauss_point_state ));
389
385
390
- if (points == NULL || scalars == NULL || state .aux == NULL || state .pre_a == NULL || state .pre_a_lam == NULL || state . ps == NULL ) {
386
+ if (points == NULL || scalars == NULL || state .aux == NULL || state .pre_a == NULL || state .ps == NULL ) {
391
387
secp256k1_scratch_apply_checkpoint (error_callback , scratch , scratch_checkpoint );
392
388
return 0 ;
393
389
}
0 commit comments