@@ -655,6 +655,7 @@ static void test_single_value_proof(uint64_t val) {
655
655
NULL , 0 ,
656
656
secp256k1_generator_h
657
657
) == 1 );
658
+ CHECK (plen <= secp256k1_rangeproof_max_size (ctx , val , 0 ));
658
659
659
660
/* Different proof sizes are unfortunate but is caused by `min_value` of
660
661
* zero being special-cased and encoded more efficiently. */
@@ -1068,16 +1069,11 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
1068
1069
uint64_t min_value = 0 ;
1069
1070
size_t m_len = sizeof (message ); /* maximum message length */
1070
1071
1071
- /* Uncomment this to recreate test vector */
1072
- /* int min_bits = 64; */
1073
- /* int exp = 18; */
1074
- /* unsigned char proof[5126]; */
1075
- /* size_t p_len = sizeof(proof); */
1076
- /* secp256k1_pedersen_commitment pc; */
1077
- /* CHECK(secp256k1_pedersen_commit(ctx, &pc, vector_blind, value, secp256k1_generator_h)); */
1078
- /* CHECK(secp256k1_rangeproof_sign(ctx, proof, &p_len, min_value, &pc, vector_blind, vector_nonce, exp, min_bits, value, message, m_len, NULL, 0, secp256k1_generator_h)); */
1079
- /* CHECK(p_len == sizeof(proof)); */
1080
- /* print_vector(0, proof, p_len, &pc); */
1072
+ int min_bits = 64 ;
1073
+ int exp = 18 ;
1074
+ unsigned char proof [5126 ];
1075
+ size_t p_len = sizeof (proof );
1076
+ secp256k1_pedersen_commitment pc ;
1081
1077
1082
1078
unsigned char vector_0 [] = {
1083
1079
0x40 , 0x3f , 0xd1 , 0x77 , 0x65 , 0x05 , 0x87 , 0x88 , 0xd0 , 0x3d , 0xb2 , 0x24 , 0x60 , 0x7a , 0x08 , 0x76 ,
@@ -1408,6 +1404,15 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
1408
1404
0xef ,
1409
1405
};
1410
1406
1407
+ CHECK (secp256k1_pedersen_commit (ctx , & pc , vector_blind , value , secp256k1_generator_h ));
1408
+ CHECK (secp256k1_rangeproof_sign (ctx , proof , & p_len , min_value , & pc , vector_blind , vector_nonce , exp , min_bits , value , message , m_len , NULL , 0 , secp256k1_generator_h ));
1409
+ CHECK (p_len <= secp256k1_rangeproof_max_size (ctx , value , min_bits ));
1410
+ CHECK (p_len == sizeof (proof ));
1411
+ /* Uncomment the next line to print the test vector */
1412
+ /* print_vector(0, proof, p_len, &pc); */
1413
+ CHECK (p_len == sizeof (vector_0 ));
1414
+ CHECK (secp256k1_memcmp_var (proof , vector_0 , p_len ) == 0 );
1415
+
1411
1416
test_rangeproof_fixed_vectors_reproducible_helper (vector_0 , sizeof (vector_0 ), commit_0 , & value_r , & min_value_r , & max_value_r , message_r , & m_len_r );
1412
1417
CHECK (value_r == value );
1413
1418
CHECK (m_len_r == m_len );
@@ -1422,17 +1427,12 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
1422
1427
uint64_t value = 13 ;
1423
1428
size_t m_len = 128 ; /* maximum message length with min_bits = 3 */
1424
1429
1425
- /* Uncomment this to recreate test vector */
1426
- /* uint64_t min_value = 1; */
1427
- /* int min_bits = 3; */
1428
- /* int exp = 1; */
1429
- /* unsigned char proof[267]; */
1430
- /* size_t p_len = sizeof(proof); */
1431
- /* secp256k1_pedersen_commitment pc; */
1432
- /* CHECK(secp256k1_pedersen_commit(ctx, &pc, vector_blind, value, secp256k1_generator_h)); */
1433
- /* CHECK(secp256k1_rangeproof_sign(ctx, proof, &p_len, min_value, &pc, vector_blind, vector_nonce, exp, min_bits, value, message, m_len, NULL, 0, secp256k1_generator_h)); */
1434
- /* CHECK(p_len == sizeof(proof)); */
1435
- /* print_vector(1, proof, p_len, &pc); */
1430
+ uint64_t min_value = 1 ;
1431
+ int min_bits = 3 ;
1432
+ int exp = 1 ;
1433
+ unsigned char proof [267 ];
1434
+ size_t p_len = sizeof (proof );
1435
+ secp256k1_pedersen_commitment pc ;
1436
1436
1437
1437
unsigned char vector_1 [] = {
1438
1438
0x61 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x03 , 0x01 , 0xcb , 0xdc , 0xbe , 0x42 , 0xe6 ,
@@ -1458,6 +1458,14 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
1458
1458
0x66 , 0x16 , 0x2e , 0x44 , 0xc8 , 0x65 , 0x8e , 0xe6 , 0x3a , 0x1a , 0x57 , 0x2c , 0xb9 , 0x6c , 0x07 , 0x85 ,
1459
1459
0xf0 ,
1460
1460
};
1461
+ CHECK (secp256k1_pedersen_commit (ctx , & pc , vector_blind , value , secp256k1_generator_h ));
1462
+ CHECK (secp256k1_rangeproof_sign (ctx , proof , & p_len , min_value , & pc , vector_blind , vector_nonce , exp , min_bits , value , message , m_len , NULL , 0 , secp256k1_generator_h ));
1463
+ CHECK (p_len <= secp256k1_rangeproof_max_size (ctx , value , min_bits ));
1464
+ CHECK (p_len == sizeof (proof ));
1465
+ /* Uncomment the next line to print the test vector */
1466
+ /* print_vector(1, proof, p_len, &pc); */
1467
+ CHECK (p_len == sizeof (vector_1 ));
1468
+ CHECK (secp256k1_memcmp_var (proof , vector_1 , p_len ) == 0 );
1461
1469
1462
1470
test_rangeproof_fixed_vectors_reproducible_helper (vector_1 , sizeof (vector_1 ), commit_1 , & value_r , & min_value_r , & max_value_r , message_r , & m_len_r );
1463
1471
CHECK (value_r == value );
@@ -1474,16 +1482,12 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
1474
1482
size_t m_len = 0 ; /* maximum message length with min_bits = 3 */
1475
1483
1476
1484
/* Uncomment this to recreate test vector */
1477
- /* uint64_t min_value = INT64_MAX-1; */
1478
- /* int min_bits = 1; */
1479
- /* int exp = 0; */
1480
- /* unsigned char proof[106]; */
1481
- /* size_t p_len = sizeof(proof); */
1482
- /* secp256k1_pedersen_commitment pc; */
1483
- /* CHECK(secp256k1_pedersen_commit(ctx, &pc, vector_blind, value, secp256k1_generator_h)); */
1484
- /* CHECK(secp256k1_rangeproof_sign(ctx, proof, &p_len, min_value, &pc, vector_blind, vector_nonce, exp, min_bits, value, message, m_len, NULL, 0, secp256k1_generator_h)); */
1485
- /* CHECK(p_len == sizeof(proof)); */
1486
- /* print_vector(2, proof, p_len, &pc); */
1485
+ uint64_t min_value = INT64_MAX - 1 ;
1486
+ int min_bits = 1 ;
1487
+ int exp = 0 ;
1488
+ unsigned char proof [106 ];
1489
+ size_t p_len = sizeof (proof );
1490
+ secp256k1_pedersen_commitment pc ;
1487
1491
1488
1492
unsigned char vector_2 [] = {
1489
1493
0x60 , 0x00 , 0x7f , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xfe , 0x81 , 0xd8 , 0x21 , 0x12 , 0x4d , 0xa4 ,
@@ -1500,6 +1504,15 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
1500
1504
0x70 ,
1501
1505
};
1502
1506
1507
+ CHECK (secp256k1_pedersen_commit (ctx , & pc , vector_blind , value , secp256k1_generator_h ));
1508
+ CHECK (secp256k1_rangeproof_sign (ctx , proof , & p_len , min_value , & pc , vector_blind , vector_nonce , exp , min_bits , value , message , m_len , NULL , 0 , secp256k1_generator_h ));
1509
+ CHECK (p_len <= secp256k1_rangeproof_max_size (ctx , value , min_bits ));
1510
+ CHECK (p_len == sizeof (proof ));
1511
+ /* Uncomment the next line to print the test vector */
1512
+ /* print_vector(2, proof, p_len, &pc); */
1513
+ CHECK (p_len == sizeof (vector_2 ));
1514
+ CHECK (secp256k1_memcmp_var (proof , vector_2 , p_len ) == 0 );
1515
+
1503
1516
test_rangeproof_fixed_vectors_reproducible_helper (vector_2 , sizeof (vector_2 ), commit_2 , & value_r , & min_value_r , & max_value_r , message_r , & m_len_r );
1504
1517
CHECK (value_r == value );
1505
1518
CHECK (m_len_r == m_len );
0 commit comments