|
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 7 |
51 | 51 |
|
52 | 52 | #define PIPPENGER_MAX_BUCKET_WINDOW 12 |
53 | 53 |
|
@@ -365,6 +365,9 @@ static int secp256k1_ecmult_strauss_batch(const secp256k1_callback* error_callba |
365 | 365 | return 1; |
366 | 366 | } |
367 | 367 |
|
| 368 | + /* We allocate STRAUSS_SCRATCH_OBJECTS objects on the scratch space. If these |
| 369 | + * allocations change, make sure to update the STRAUSS_SCRATCH_OBJECTS |
| 370 | + * constant and strauss_scratch_size accordingly. */ |
368 | 371 | points = (secp256k1_gej*)secp256k1_scratch_alloc(error_callback, scratch, n_points * sizeof(secp256k1_gej)); |
369 | 372 | scalars = (secp256k1_scalar*)secp256k1_scratch_alloc(error_callback, scratch, n_points * sizeof(secp256k1_scalar)); |
370 | 373 | state.prej = (secp256k1_gej*)secp256k1_scratch_alloc(error_callback, scratch, n_points * ECMULT_TABLE_SIZE(WINDOW_A) * sizeof(secp256k1_gej)); |
@@ -659,16 +662,19 @@ static int secp256k1_ecmult_pippenger_batch(const secp256k1_callback* error_call |
659 | 662 | if (inp_g_sc == NULL && n_points == 0) { |
660 | 663 | return 1; |
661 | 664 | } |
662 | | - |
663 | 665 | bucket_window = secp256k1_pippenger_bucket_window(n_points); |
| 666 | + |
| 667 | + /* We allocate PIPPENGER_SCRATCH_OBJECTS objects on the scratch space. If |
| 668 | + * these allocations change, make sure to update the |
| 669 | + * PIPPENGER_SCRATCH_OBJECTS constant and pippenger_scratch_size |
| 670 | + * accordingly. */ |
664 | 671 | points = (secp256k1_ge *) secp256k1_scratch_alloc(error_callback, scratch, entries * sizeof(*points)); |
665 | 672 | scalars = (secp256k1_scalar *) secp256k1_scratch_alloc(error_callback, scratch, entries * sizeof(*scalars)); |
666 | 673 | state_space = (struct secp256k1_pippenger_state *) secp256k1_scratch_alloc(error_callback, scratch, sizeof(*state_space)); |
667 | 674 | if (points == NULL || scalars == NULL || state_space == NULL) { |
668 | 675 | secp256k1_scratch_apply_checkpoint(error_callback, scratch, scratch_checkpoint); |
669 | 676 | return 0; |
670 | 677 | } |
671 | | - |
672 | 678 | state_space->ps = (struct secp256k1_pippenger_point_state *) secp256k1_scratch_alloc(error_callback, scratch, entries * sizeof(*state_space->ps)); |
673 | 679 | state_space->wnaf_na = (int *) secp256k1_scratch_alloc(error_callback, scratch, entries*(WNAF_SIZE(bucket_window+1)) * sizeof(int)); |
674 | 680 | buckets = (secp256k1_gej *) secp256k1_scratch_alloc(error_callback, scratch, (1<<bucket_window) * sizeof(*buckets)); |
|
0 commit comments