Skip to content

Commit 6bf08df

Browse files
jonasnickapoelstra
authored andcommitted
rangeproof: add more max_size tests
1 parent 2a3e311 commit 6bf08df

File tree

1 file changed

+44
-31
lines changed

1 file changed

+44
-31
lines changed

src/modules/rangeproof/tests_impl.h

+44-31
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,7 @@ static void test_single_value_proof(uint64_t val) {
655655
NULL, 0,
656656
secp256k1_generator_h
657657
) == 1);
658+
CHECK(plen <= secp256k1_rangeproof_max_size(ctx, val, 0));
658659

659660
/* Different proof sizes are unfortunate but is caused by `min_value` of
660661
* zero being special-cased and encoded more efficiently. */
@@ -1068,16 +1069,11 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
10681069
uint64_t min_value = 0;
10691070
size_t m_len = sizeof(message); /* maximum message length */
10701071

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;
10811077

10821078
unsigned char vector_0[] = {
10831079
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) {
14081404
0xef,
14091405
};
14101406

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+
14111416
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);
14121417
CHECK(value_r == value);
14131418
CHECK(m_len_r == m_len);
@@ -1422,17 +1427,12 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
14221427
uint64_t value = 13;
14231428
size_t m_len = 128; /* maximum message length with min_bits = 3 */
14241429

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;
14361436

14371437
unsigned char vector_1[] = {
14381438
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) {
14581458
0x66, 0x16, 0x2e, 0x44, 0xc8, 0x65, 0x8e, 0xe6, 0x3a, 0x1a, 0x57, 0x2c, 0xb9, 0x6c, 0x07, 0x85,
14591459
0xf0,
14601460
};
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);
14611469

14621470
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);
14631471
CHECK(value_r == value);
@@ -1474,16 +1482,12 @@ void test_rangeproof_fixed_vectors_reproducible(void) {
14741482
size_t m_len = 0; /* maximum message length with min_bits = 3 */
14751483

14761484
/* 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;
14871491

14881492
unsigned char vector_2[] = {
14891493
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) {
15001504
0x70,
15011505
};
15021506

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+
15031516
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);
15041517
CHECK(value_r == value);
15051518
CHECK(m_len_r == m_len);

0 commit comments

Comments
 (0)