@@ -3154,11 +3154,10 @@ void test_ecmult_multi_batching(void) {
31543154
31553155 for (i = 1 ; i <= n_points ; i ++ ) {
31563156 if (i >= ECMULT_PIPPENGER_THRESHOLD ) {
3157- int bucket_window = secp256k1_pippenger_bucket_window (i );
3158- size_t scratch_size = secp256k1_pippenger_scratch_size (i , bucket_window );
3157+ size_t scratch_size = secp256k1_ecmult_multi_scratch_size (i );
31593158 scratch = secp256k1_scratch_create (& ctx -> error_callback , scratch_size );
31603159 } else {
3161- size_t scratch_size = secp256k1_strauss_scratch_size (i );
3160+ size_t scratch_size = secp256k1_ecmult_multi_scratch_size (i );
31623161 scratch = secp256k1_scratch_create (& ctx -> error_callback , scratch_size );
31633162 }
31643163 CHECK (secp256k1_ecmult_multi_var (& ctx -> error_callback , & ctx -> ecmult_ctx , scratch , & r , & scG , ecmult_multi_callback , & data , n_points ));
@@ -3170,6 +3169,15 @@ void test_ecmult_multi_batching(void) {
31703169 free (pt );
31713170}
31723171
3172+ void test_ecmult_multi_scratch_size (void ) {
3173+ /* test ECMULT_MAX_POINTS_PER_BATCH limit */
3174+ size_t n_points = ECMULT_MAX_POINTS_PER_BATCH + 1 ;
3175+ size_t scratch_size = secp256k1_ecmult_multi_scratch_size (n_points );
3176+ int expected_bucket_window = secp256k1_pippenger_bucket_window (n_points - 1 );
3177+ size_t expected_scratch_size = secp256k1_pippenger_scratch_size (n_points - 1 , expected_bucket_window );
3178+ CHECK (expected_scratch_size == scratch_size );
3179+ }
3180+
31733181void run_ecmult_multi_tests (void ) {
31743182 secp256k1_scratch * scratch ;
31753183
@@ -3193,6 +3201,7 @@ void run_ecmult_multi_tests(void) {
31933201
31943202 test_ecmult_multi_batch_size_helper ();
31953203 test_ecmult_multi_batching ();
3204+ test_ecmult_multi_scratch_size ();
31963205}
31973206
31983207void test_wnaf (const secp256k1_scalar * number , int w ) {
0 commit comments