@@ -225,6 +225,11 @@ static void test_rangeproof_api(const secp256k1_context *none, const secp256k1_c
225
225
CHECK (secp256k1_rangeproof_rewind (both , blind_out , & value_out , NULL , 0 , commit .data , & min_value , & max_value , & commit , proof , len , NULL , 0 , NULL ) == 0 );
226
226
CHECK (* ecount == 29 );
227
227
}
228
+
229
+ /* This constant is hardcoded in these tests and elsewhere, so we
230
+ * consider it to be part of the API and test it here. */
231
+ CHECK (secp256k1_rangeproof_max_size (none , 0 , 64 ) == 5134 );
232
+ CHECK (secp256k1_rangeproof_max_size (none , UINT64_MAX , 0 ) == 5134 );
228
233
}
229
234
230
235
static void test_api (void ) {
@@ -431,6 +436,7 @@ static void test_rangeproof(void) {
431
436
len = 5134 ;
432
437
CHECK (secp256k1_rangeproof_sign (ctx , proof , & len , vmin , & commit , blind , commit .data , 0 , 0 , v , input_message , input_message_len , NULL , 0 , secp256k1_generator_h ));
433
438
CHECK (len <= 5134 );
439
+ CHECK (len <= secp256k1_rangeproof_max_size (ctx , v , 0 ));
434
440
mlen = 4096 ;
435
441
CHECK (secp256k1_rangeproof_rewind (ctx , blindout , & vout , message , & mlen , commit .data , & minv , & maxv , & commit , proof , len , NULL , 0 , secp256k1_generator_h ));
436
442
if (input_message != NULL ) {
@@ -447,6 +453,7 @@ static void test_rangeproof(void) {
447
453
len = 5134 ;
448
454
CHECK (secp256k1_rangeproof_sign (ctx , proof , & len , v , & commit , blind , commit .data , -1 , 64 , v , NULL , 0 , NULL , 0 , secp256k1_generator_h ));
449
455
CHECK (len <= 73 );
456
+ CHECK (len <= secp256k1_rangeproof_max_size (ctx , v , 0 ));
450
457
CHECK (secp256k1_rangeproof_rewind (ctx , blindout , & vout , NULL , NULL , commit .data , & minv , & maxv , & commit , proof , len , NULL , 0 , secp256k1_generator_h ));
451
458
CHECK (secp256k1_memcmp_var (blindout , blind , 32 ) == 0 );
452
459
CHECK (vout == v );
@@ -457,6 +464,7 @@ static void test_rangeproof(void) {
457
464
len = 5134 ;
458
465
CHECK (secp256k1_rangeproof_sign (ctx , proof , & len , v , & commit , blind , commit .data , -1 , 64 , v , NULL , 0 , message_short , sizeof (message_short ), secp256k1_generator_h ));
459
466
CHECK (len <= 73 );
467
+ CHECK (len <= secp256k1_rangeproof_max_size (ctx , v , 0 ));
460
468
CHECK (!secp256k1_rangeproof_rewind (ctx , blindout , & vout , NULL , NULL , commit .data , & minv , & maxv , & commit , proof , len , NULL , 0 , secp256k1_generator_h ));
461
469
CHECK (!secp256k1_rangeproof_rewind (ctx , blindout , & vout , NULL , NULL , commit .data , & minv , & maxv , & commit , proof , len , message_long , sizeof (message_long ), secp256k1_generator_h ));
462
470
CHECK (secp256k1_rangeproof_rewind (ctx , blindout , & vout , NULL , NULL , commit .data , & minv , & maxv , & commit , proof , len , message_short , sizeof (message_short ), secp256k1_generator_h ));
@@ -472,6 +480,7 @@ static void test_rangeproof(void) {
472
480
for (i = 0 ; i < 19 ; i ++ ) {
473
481
len = 5134 ;
474
482
CHECK (secp256k1_rangeproof_sign (ctx , proof , & len , 0 , & commit , blind , commit .data , i , 0 , v , NULL , 0 , NULL , 0 , secp256k1_generator_h ));
483
+ CHECK (len <= secp256k1_rangeproof_max_size (ctx , v , 0 ));
475
484
CHECK (secp256k1_rangeproof_verify (ctx , & minv , & maxv , & commit , proof , len , NULL , 0 , secp256k1_generator_h ));
476
485
CHECK (len <= 5134 );
477
486
CHECK (minv <= v );
@@ -487,6 +496,7 @@ static void test_rangeproof(void) {
487
496
len = 5134 ;
488
497
CHECK (secp256k1_rangeproof_sign (ctx , proof , & len , 0 , & commit , blind , commit .data , 0 , 3 , v , NULL , 0 , NULL , 0 , secp256k1_generator_h ));
489
498
CHECK (len <= 5134 );
499
+ CHECK (len <= secp256k1_rangeproof_max_size (ctx , v , 3 ));
490
500
/* Test if trailing bytes are rejected. */
491
501
proof [len ] = v ;
492
502
CHECK (!secp256k1_rangeproof_verify (ctx , & minv , & maxv , & commit , proof , len + 1 , NULL , 0 , secp256k1_generator_h ));
@@ -521,6 +531,7 @@ static void test_rangeproof(void) {
521
531
}
522
532
CHECK (secp256k1_rangeproof_sign (ctx , proof , & len , vmin , & commit , blind , commit .data , exp , min_bits , v , NULL , 0 , NULL , 0 , secp256k1_generator_h ));
523
533
CHECK (len <= 5134 );
534
+ CHECK (len <= secp256k1_rangeproof_max_size (ctx , v , min_bits ));
524
535
mlen = 4096 ;
525
536
CHECK (secp256k1_rangeproof_rewind (ctx , blindout , & vout , message , & mlen , commit .data , & minv , & maxv , & commit , proof , len , NULL , 0 , secp256k1_generator_h ));
526
537
for (j = 0 ; j < mlen ; j ++ ) {
0 commit comments