aboutsummaryrefslogtreecommitdiff
path: root/src/tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests.c')
-rw-r--r--src/tests.c458
1 files changed, 171 insertions, 287 deletions
diff --git a/src/tests.c b/src/tests.c
index dab47608c2..6b401e52c0 100644
--- a/src/tests.c
+++ b/src/tests.c
@@ -96,122 +96,6 @@ static void uncounting_illegal_callback_fn(const char* str, void* data) {
(*p)--;
}
-static void random_field_element_magnitude(secp256k1_fe *fe, int m) {
- secp256k1_fe zero;
- int n = secp256k1_testrand_int(m + 1);
- secp256k1_fe_normalize(fe);
- if (n == 0) {
- return;
- }
- secp256k1_fe_clear(&zero);
- secp256k1_fe_negate(&zero, &zero, 0);
- secp256k1_fe_mul_int_unchecked(&zero, n - 1);
- secp256k1_fe_add(fe, &zero);
-#ifdef VERIFY
- CHECK(fe->magnitude == n);
-#endif
-}
-
-static void random_fe_test(secp256k1_fe *x) {
- unsigned char bin[32];
- do {
- secp256k1_testrand256_test(bin);
- if (secp256k1_fe_set_b32_limit(x, bin)) {
- return;
- }
- } while(1);
-}
-
-static void random_fe_non_zero_test(secp256k1_fe *fe) {
- do {
- random_fe_test(fe);
- } while(secp256k1_fe_is_zero(fe));
-}
-
-static void random_fe_magnitude(secp256k1_fe *fe) {
- random_field_element_magnitude(fe, 8);
-}
-
-static void random_ge_x_magnitude(secp256k1_ge *ge) {
- random_field_element_magnitude(&ge->x, SECP256K1_GE_X_MAGNITUDE_MAX);
-}
-
-static void random_ge_y_magnitude(secp256k1_ge *ge) {
- random_field_element_magnitude(&ge->y, SECP256K1_GE_Y_MAGNITUDE_MAX);
-}
-
-static void random_gej_x_magnitude(secp256k1_gej *gej) {
- random_field_element_magnitude(&gej->x, SECP256K1_GEJ_X_MAGNITUDE_MAX);
-}
-
-static void random_gej_y_magnitude(secp256k1_gej *gej) {
- random_field_element_magnitude(&gej->y, SECP256K1_GEJ_Y_MAGNITUDE_MAX);
-}
-
-static void random_gej_z_magnitude(secp256k1_gej *gej) {
- random_field_element_magnitude(&gej->z, SECP256K1_GEJ_Z_MAGNITUDE_MAX);
-}
-
-static void random_group_element_test(secp256k1_ge *ge) {
- secp256k1_fe fe;
- do {
- random_fe_test(&fe);
- if (secp256k1_ge_set_xo_var(ge, &fe, secp256k1_testrand_bits(1))) {
- secp256k1_fe_normalize(&ge->y);
- break;
- }
- } while(1);
- ge->infinity = 0;
-}
-
-static void random_group_element_jacobian_test(secp256k1_gej *gej, const secp256k1_ge *ge) {
- secp256k1_fe z2, z3;
- random_fe_non_zero_test(&gej->z);
- secp256k1_fe_sqr(&z2, &gej->z);
- secp256k1_fe_mul(&z3, &z2, &gej->z);
- secp256k1_fe_mul(&gej->x, &ge->x, &z2);
- secp256k1_fe_mul(&gej->y, &ge->y, &z3);
- gej->infinity = ge->infinity;
-}
-
-static void random_gej_test(secp256k1_gej *gej) {
- secp256k1_ge ge;
- random_group_element_test(&ge);
- random_group_element_jacobian_test(gej, &ge);
-}
-
-static void random_scalar_order_test(secp256k1_scalar *num) {
- do {
- unsigned char b32[32];
- int overflow = 0;
- secp256k1_testrand256_test(b32);
- secp256k1_scalar_set_b32(num, b32, &overflow);
- if (overflow || secp256k1_scalar_is_zero(num)) {
- continue;
- }
- break;
- } while(1);
-}
-
-static void random_scalar_order(secp256k1_scalar *num) {
- do {
- unsigned char b32[32];
- int overflow = 0;
- secp256k1_testrand256(b32);
- secp256k1_scalar_set_b32(num, b32, &overflow);
- if (overflow || secp256k1_scalar_is_zero(num)) {
- continue;
- }
- break;
- } while(1);
-}
-
-static void random_scalar_order_b32(unsigned char *b32) {
- secp256k1_scalar num;
- random_scalar_order(&num);
- secp256k1_scalar_get_b32(b32, &num);
-}
-
static void run_xoshiro256pp_tests(void) {
{
size_t i;
@@ -233,9 +117,9 @@ static void run_xoshiro256pp_tests(void) {
0x4C, 0xCC, 0xC1, 0x18, 0xB2, 0xD8, 0x8F, 0xEF,
0x43, 0x26, 0x15, 0x57, 0x37, 0x00, 0xEF, 0x30,
};
- secp256k1_testrand_seed(seed16);
+ testrand_seed(seed16);
for (i = 0; i < 17; i++) {
- secp256k1_testrand256(buf32);
+ testrand256(buf32);
}
CHECK(secp256k1_memcmp_var(buf32, buf32_expected, sizeof(buf32)) == 0);
}
@@ -444,14 +328,14 @@ static void run_proper_context_tests(int use_prealloc) {
CHECK(context_eq(my_ctx, my_ctx_fresh));
/*** attempt to use them ***/
- random_scalar_order_test(&msg);
- random_scalar_order_test(&key);
+ testutil_random_scalar_order_test(&msg);
+ testutil_random_scalar_order_test(&key);
secp256k1_ecmult_gen(&my_ctx->ecmult_gen_ctx, &pubj, &key);
secp256k1_ge_set_gej(&pub, &pubj);
/* obtain a working nonce */
do {
- random_scalar_order_test(&nonce);
+ testutil_random_scalar_order_test(&nonce);
} while(!secp256k1_ecdsa_sig_sign(&my_ctx->ecmult_gen_ctx, &sigr, &sigs, &key, &msg, &nonce, NULL));
/* try signing */
@@ -608,7 +492,7 @@ static void run_sha256_known_output_tests(void) {
CHECK(secp256k1_memcmp_var(out, outputs[i], 32) == 0);
/* 2. Run: split the input bytestrings randomly before writing */
if (strlen(inputs[i]) > 0) {
- int split = secp256k1_testrand_int(strlen(inputs[i]));
+ int split = testrand_int(strlen(inputs[i]));
secp256k1_sha256_initialize(&hasher);
j = repeat[i];
while (j > 0) {
@@ -769,7 +653,7 @@ static void run_hmac_sha256_tests(void) {
secp256k1_hmac_sha256_finalize(&hasher, out);
CHECK(secp256k1_memcmp_var(out, outputs[i], 32) == 0);
if (strlen(inputs[i]) > 0) {
- int split = secp256k1_testrand_int(strlen(inputs[i]));
+ int split = testrand_int(strlen(inputs[i]));
secp256k1_hmac_sha256_initialize(&hasher, (const unsigned char*)(keys[i]), strlen(keys[i]));
secp256k1_hmac_sha256_write(&hasher, (const unsigned char*)(inputs[i]), split);
secp256k1_hmac_sha256_write(&hasher, (const unsigned char*)(inputs[i] + split), strlen(inputs[i]) - split);
@@ -969,7 +853,7 @@ static void signed30_to_uint16(uint16_t* out, const secp256k1_modinv32_signed30*
static void mutate_sign_signed30(secp256k1_modinv32_signed30* x) {
int i;
for (i = 0; i < 16; ++i) {
- int pos = secp256k1_testrand_bits(3);
+ int pos = testrand_bits(3);
if (x->v[pos] > 0 && x->v[pos + 1] <= 0x3fffffff) {
x->v[pos] -= 0x40000000;
x->v[pos + 1] += 1;
@@ -1061,7 +945,7 @@ static void mutate_sign_signed62(secp256k1_modinv64_signed62* x) {
static const int64_t M62 = (int64_t)(UINT64_MAX >> 2);
int i;
for (i = 0; i < 8; ++i) {
- int pos = secp256k1_testrand_bits(2);
+ int pos = testrand_bits(2);
if (x->v[pos] > 0 && x->v[pos + 1] <= M62) {
x->v[pos] -= (M62 + 1);
x->v[pos + 1] += 1;
@@ -1774,8 +1658,8 @@ static void run_modinv_tests(void) {
/* generate random xd and md, so that md is odd, md>1, xd<md, and gcd(xd,md)=1 */
do {
/* generate random xd and md (with many subsequent 0s and 1s) */
- secp256k1_testrand256_test((unsigned char*)xd);
- secp256k1_testrand256_test((unsigned char*)md);
+ testrand256_test((unsigned char*)xd);
+ testrand256_test((unsigned char*)md);
md[0] |= 1; /* modulus must be odd */
/* If modulus is 1, find another one. */
ok = md[0] != 1;
@@ -1907,7 +1791,7 @@ static void run_int128_test_case(void) {
int i;
/* Generate 32-byte random value. */
- secp256k1_testrand256_test(buf);
+ testrand256_test(buf);
/* Convert into 4 64-bit integers. */
for (i = 0; i < 4; ++i) {
uint64_t vi = 0;
@@ -2133,13 +2017,13 @@ static void scalar_test(void) {
unsigned char c[32];
/* Set 's' to a random scalar, with value 'snum'. */
- random_scalar_order_test(&s);
+ testutil_random_scalar_order_test(&s);
/* Set 's1' to a random scalar, with value 's1num'. */
- random_scalar_order_test(&s1);
+ testutil_random_scalar_order_test(&s1);
/* Set 's2' to a random scalar, with value 'snum2', and byte array representation 'c'. */
- random_scalar_order_test(&s2);
+ testutil_random_scalar_order_test(&s2);
secp256k1_scalar_get_b32(c, &s2);
{
@@ -2167,7 +2051,7 @@ static void scalar_test(void) {
while (i < 256) {
secp256k1_scalar t;
int j;
- int now = secp256k1_testrand_int(15) + 1;
+ int now = testrand_int(15) + 1;
if (now + i > 256) {
now = 256 - i;
}
@@ -2194,7 +2078,7 @@ static void scalar_test(void) {
secp256k1_scalar b;
int i;
/* Test add_bit. */
- int bit = secp256k1_testrand_bits(8);
+ int bit = testrand_bits(8);
secp256k1_scalar_set_int(&b, 1);
CHECK(secp256k1_scalar_is_one(&b));
for (i = 0; i < bit; i++) {
@@ -2287,7 +2171,7 @@ static void run_scalar_set_b32_seckey_tests(void) {
secp256k1_scalar s2;
/* Usually set_b32 and set_b32_seckey give the same result */
- random_scalar_order_b32(b32);
+ testutil_random_scalar_order_b32(b32);
secp256k1_scalar_set_b32(&s1, b32, NULL);
CHECK(secp256k1_scalar_set_b32_seckey(&s2, b32) == 1);
CHECK(secp256k1_scalar_eq(&s1, &s2) == 1);
@@ -2948,7 +2832,7 @@ static void run_scalar_tests(void) {
static void random_fe_non_square(secp256k1_fe *ns) {
secp256k1_fe r;
- random_fe_non_zero(ns);
+ testutil_random_fe_non_zero(ns);
if (secp256k1_fe_sqrt(&r, ns)) {
secp256k1_fe_negate(ns, ns, 1);
}
@@ -3125,12 +3009,12 @@ static void run_field_misc(void) {
for (i = 0; i < 1000 * COUNT; i++) {
secp256k1_fe_storage xs, ys, zs;
if (i & 1) {
- random_fe(&x);
+ testutil_random_fe(&x);
} else {
- random_fe_test(&x);
+ testutil_random_fe_test(&x);
}
- random_fe_non_zero(&y);
- v = secp256k1_testrand_bits(15);
+ testutil_random_fe_non_zero(&y);
+ v = testrand_bits(15);
/* Test that fe_add_int is equivalent to fe_set_int + fe_add. */
secp256k1_fe_set_int(&q, v); /* q = v */
z = x; /* z = x */
@@ -3268,14 +3152,14 @@ static void run_fe_mul(void) {
int i;
for (i = 0; i < 100 * COUNT; ++i) {
secp256k1_fe a, b, c, d;
- random_fe(&a);
- random_fe_magnitude(&a);
- random_fe(&b);
- random_fe_magnitude(&b);
- random_fe_test(&c);
- random_fe_magnitude(&c);
- random_fe_test(&d);
- random_fe_magnitude(&d);
+ testutil_random_fe(&a);
+ testutil_random_fe_magnitude(&a, 8);
+ testutil_random_fe(&b);
+ testutil_random_fe_magnitude(&b, 8);
+ testutil_random_fe_test(&c);
+ testutil_random_fe_magnitude(&c, 8);
+ testutil_random_fe_test(&d);
+ testutil_random_fe_magnitude(&d, 8);
test_fe_mul(&a, &a, 1);
test_fe_mul(&c, &c, 1);
test_fe_mul(&a, &b, 0);
@@ -3297,7 +3181,7 @@ static void run_sqr(void) {
secp256k1_fe_normalize(&x);
/* Check that (x+y)*(x-y) = x^2 - y*2 for some random values y */
- random_fe_test(&y);
+ testutil_random_fe_test(&y);
lhs = x;
secp256k1_fe_add(&lhs, &y); /* lhs = x+y */
@@ -3351,7 +3235,7 @@ static void run_sqrt(void) {
int j;
random_fe_non_square(&ns);
for (j = 0; j < COUNT; j++) {
- random_fe(&x);
+ testutil_random_fe(&x);
secp256k1_fe_sqr(&s, &x);
CHECK(secp256k1_fe_is_square_var(&s));
test_sqrt(&s, &x);
@@ -3665,7 +3549,7 @@ static void run_inverse_tests(void)
/* test 128*count random inputs; half with testrand256_test, half with testrand256 */
for (testrand = 0; testrand <= 1; ++testrand) {
for (i = 0; i < 64 * COUNT; ++i) {
- (testrand ? secp256k1_testrand256_test : secp256k1_testrand256)(b32);
+ (testrand ? testrand256_test : testrand256)(b32);
secp256k1_scalar_set_b32(&x_scalar, b32, NULL);
secp256k1_fe_set_b32_mod(&x_fe, b32);
for (var = 0; var <= 1; ++var) {
@@ -3731,8 +3615,8 @@ static void test_hsort(size_t element_len) {
/* Test hsort with array of random length n */
for (i = 0; i < COUNT; i++) {
- int n = secp256k1_testrand_int(NUM);
- secp256k1_testrand_bytes_test(elements, n*element_len);
+ int n = testrand_int(NUM);
+ testrand_bytes_test(elements, n*element_len);
secp256k1_hsort(elements, n, element_len, test_hsort_cmp, &data);
test_hsort_is_sorted(elements, n, element_len);
}
@@ -3792,7 +3676,7 @@ static void test_ge(void) {
for (i = 0; i < runs; i++) {
int j, k;
secp256k1_ge g;
- random_group_element_test(&g);
+ testutil_random_ge_test(&g);
if (i >= runs - 2) {
secp256k1_ge_mul_lambda(&g, &ge[1]);
CHECK(!secp256k1_ge_eq_var(&g, &ge[1]));
@@ -3805,15 +3689,15 @@ static void test_ge(void) {
secp256k1_ge_neg(&ge[3 + 4 * i], &g);
secp256k1_ge_neg(&ge[4 + 4 * i], &g);
secp256k1_gej_set_ge(&gej[1 + 4 * i], &ge[1 + 4 * i]);
- random_group_element_jacobian_test(&gej[2 + 4 * i], &ge[2 + 4 * i]);
+ testutil_random_ge_jacobian_test(&gej[2 + 4 * i], &ge[2 + 4 * i]);
secp256k1_gej_set_ge(&gej[3 + 4 * i], &ge[3 + 4 * i]);
- random_group_element_jacobian_test(&gej[4 + 4 * i], &ge[4 + 4 * i]);
+ testutil_random_ge_jacobian_test(&gej[4 + 4 * i], &ge[4 + 4 * i]);
for (j = 0; j < 4; j++) {
- random_ge_x_magnitude(&ge[1 + j + 4 * i]);
- random_ge_y_magnitude(&ge[1 + j + 4 * i]);
- random_gej_x_magnitude(&gej[1 + j + 4 * i]);
- random_gej_y_magnitude(&gej[1 + j + 4 * i]);
- random_gej_z_magnitude(&gej[1 + j + 4 * i]);
+ testutil_random_ge_x_magnitude(&ge[1 + j + 4 * i]);
+ testutil_random_ge_y_magnitude(&ge[1 + j + 4 * i]);
+ testutil_random_gej_x_magnitude(&gej[1 + j + 4 * i]);
+ testutil_random_gej_y_magnitude(&gej[1 + j + 4 * i]);
+ testutil_random_gej_z_magnitude(&gej[1 + j + 4 * i]);
}
for (j = 0; j < 4; ++j) {
@@ -3828,14 +3712,14 @@ static void test_ge(void) {
}
/* Generate random zf, and zfi2 = 1/zf^2, zfi3 = 1/zf^3 */
- random_fe_non_zero_test(&zf);
- random_fe_magnitude(&zf);
+ testutil_random_fe_non_zero_test(&zf);
+ testutil_random_fe_magnitude(&zf, 8);
secp256k1_fe_inv_var(&zfi3, &zf);
secp256k1_fe_sqr(&zfi2, &zfi3);
secp256k1_fe_mul(&zfi3, &zfi3, &zfi2);
/* Generate random r */
- random_fe_non_zero_test(&r);
+ testutil_random_fe_non_zero_test(&r);
for (i1 = 0; i1 < 1 + 4 * runs; i1++) {
int i2;
@@ -3865,8 +3749,8 @@ static void test_ge(void) {
secp256k1_ge ge2_zfi = ge[i2]; /* the second term with x and y rescaled for z = 1/zf */
secp256k1_fe_mul(&ge2_zfi.x, &ge2_zfi.x, &zfi2);
secp256k1_fe_mul(&ge2_zfi.y, &ge2_zfi.y, &zfi3);
- random_ge_x_magnitude(&ge2_zfi);
- random_ge_y_magnitude(&ge2_zfi);
+ testutil_random_ge_x_magnitude(&ge2_zfi);
+ testutil_random_ge_y_magnitude(&ge2_zfi);
secp256k1_gej_add_zinv_var(&resj, &gej[i1], &ge2_zfi, &zf);
CHECK(secp256k1_gej_eq_ge_var(&resj, &ref));
}
@@ -3922,7 +3806,7 @@ static void test_ge(void) {
gej_shuffled[i] = gej[i];
}
for (i = 0; i < 4 * runs + 1; i++) {
- int swap = i + secp256k1_testrand_int(4 * runs + 1 - i);
+ int swap = i + testrand_int(4 * runs + 1 - i);
if (swap != i) {
secp256k1_gej t = gej_shuffled[i];
gej_shuffled[i] = gej_shuffled[swap];
@@ -3942,7 +3826,7 @@ static void test_ge(void) {
secp256k1_ge_set_all_gej_var(ge_set_all, gej, 4 * runs + 1);
for (i = 0; i < 4 * runs + 1; i++) {
secp256k1_fe s;
- random_fe_non_zero(&s);
+ testutil_random_fe_non_zero(&s);
secp256k1_gej_rescale(&gej[i], &s);
CHECK(secp256k1_gej_eq_ge_var(&gej[i], &ge_set_all[i]));
}
@@ -3975,7 +3859,7 @@ static void test_ge(void) {
/* Test batch gej -> ge conversion with many infinities. */
for (i = 0; i < 4 * runs + 1; i++) {
int odd;
- random_group_element_test(&ge[i]);
+ testutil_random_ge_test(&ge[i]);
odd = secp256k1_fe_is_odd(&ge[i].x);
CHECK(odd == 0 || odd == 1);
/* randomly set half the points to infinity */
@@ -4012,7 +3896,7 @@ static void test_intialized_inf(void) {
secp256k1_fe zinv;
/* Test that adding P+(-P) results in a fully initialized infinity*/
- random_group_element_test(&p);
+ testutil_random_ge_test(&p);
secp256k1_gej_set_ge(&pj, &p);
secp256k1_gej_neg(&npj, &pj);
@@ -4125,14 +4009,14 @@ static void run_gej(void) {
secp256k1_gej_set_infinity(&b);
test_gej_cmov(&a, &b);
- random_gej_test(&a);
+ testutil_random_gej_test(&a);
test_gej_cmov(&a, &b);
test_gej_cmov(&b, &a);
b = a;
test_gej_cmov(&a, &b);
- random_gej_test(&b);
+ testutil_random_gej_test(&b);
test_gej_cmov(&a, &b);
test_gej_cmov(&b, &a);
}
@@ -4140,12 +4024,12 @@ static void run_gej(void) {
/* Tests for secp256k1_gej_eq_var */
for (i = 0; i < COUNT; i++) {
secp256k1_fe fe;
- random_gej_test(&a);
- random_gej_test(&b);
+ testutil_random_gej_test(&a);
+ testutil_random_gej_test(&b);
CHECK(!secp256k1_gej_eq_var(&a, &b));
b = a;
- random_fe_non_zero_test(&fe);
+ testutil_random_fe_non_zero_test(&fe);
secp256k1_gej_rescale(&a, &fe);
CHECK(secp256k1_gej_eq_var(&a, &b));
}
@@ -4162,7 +4046,7 @@ static void test_ec_combine(void) {
int i;
for (i = 1; i <= 6; i++) {
secp256k1_scalar s;
- random_scalar_order_test(&s);
+ testutil_random_scalar_order_test(&s);
secp256k1_scalar_add(&sum, &sum, &s);
secp256k1_ecmult_gen(&CTX->ecmult_gen_ctx, &Qj, &s);
secp256k1_ge_set_gej(&Q, &Qj);
@@ -4222,7 +4106,7 @@ static void run_group_decompress(void) {
int i;
for (i = 0; i < COUNT * 4; i++) {
secp256k1_fe fe;
- random_fe_test(&fe);
+ testutil_random_fe_test(&fe);
test_group_decompress(&fe);
}
}
@@ -4370,7 +4254,7 @@ static void test_point_times_order(const secp256k1_gej *point) {
secp256k1_ge res3;
unsigned char pub[65];
size_t psize = 65;
- random_scalar_order_test(&x);
+ testutil_random_scalar_order_test(&x);
secp256k1_scalar_negate(&nx, &x);
secp256k1_ecmult(&res1, point, &x, &x); /* calc res1 = x * point + x * G; */
secp256k1_ecmult(&res2, point, &nx, &nx); /* calc res2 = (order - x) * point + (order - x) * G; */
@@ -4431,13 +4315,13 @@ static void test_ecmult_target(const secp256k1_scalar* target, int mode) {
secp256k1_gej pj, p1j, p2j, ptj;
/* Generate random n1,n2 such that n1+n2 = -target. */
- random_scalar_order_test(&n1);
+ testutil_random_scalar_order_test(&n1);
secp256k1_scalar_add(&n2, &n1, target);
secp256k1_scalar_negate(&n2, &n2);
/* Generate a random input point. */
if (mode != 0) {
- random_group_element_test(&p);
+ testutil_random_ge_test(&p);
secp256k1_gej_set_ge(&pj, &p);
}
@@ -4529,8 +4413,8 @@ static void ecmult_const_commutativity(void) {
secp256k1_gej res2;
secp256k1_ge mid1;
secp256k1_ge mid2;
- random_scalar_order_test(&a);
- random_scalar_order_test(&b);
+ testutil_random_scalar_order_test(&a);
+ testutil_random_scalar_order_test(&b);
secp256k1_ecmult_const(&res1, &secp256k1_ge_const_g, &a);
secp256k1_ecmult_const(&res2, &secp256k1_ge_const_g, &b);
@@ -4551,9 +4435,9 @@ static void ecmult_const_mult_zero_one(void) {
secp256k1_ge point;
secp256k1_ge inf;
- random_scalar_order_test(&s);
+ testutil_random_scalar_order_test(&s);
secp256k1_scalar_negate(&negone, &secp256k1_scalar_one);
- random_group_element_test(&point);
+ testutil_random_ge_test(&point);
secp256k1_ge_set_infinity(&inf);
/* 0*point */
@@ -4606,7 +4490,7 @@ static void ecmult_const_edges(void) {
secp256k1_scalar_add(&q, &q, &scalars_near_split_bounds[i - 1]);
secp256k1_scalar_add(&q, &q, &scalars_near_split_bounds[i - 1]);
}
- random_group_element_test(&point);
+ testutil_random_ge_test(&point);
secp256k1_ecmult_const(&res, &point, &q);
ecmult_const_check_result(&point, &q, &res);
}
@@ -4623,12 +4507,12 @@ static void ecmult_const_mult_xonly(void) {
secp256k1_scalar q;
int res;
/* Random base point. */
- random_group_element_test(&base);
+ testutil_random_ge_test(&base);
/* Random scalar to multiply it with. */
- random_scalar_order_test(&q);
+ testutil_random_scalar_order_test(&q);
/* If i is odd, n=d*base.x for random non-zero d */
if (i & 1) {
- random_fe_non_zero_test(&d);
+ testutil_random_fe_non_zero_test(&d);
secp256k1_fe_mul(&n, &base.x, &d);
} else {
n = base.x;
@@ -4650,14 +4534,14 @@ static void ecmult_const_mult_xonly(void) {
secp256k1_fe x, n, d, r;
int res;
secp256k1_scalar q;
- random_scalar_order_test(&q);
+ testutil_random_scalar_order_test(&q);
/* Generate random X coordinate not on the curve. */
do {
- random_fe_test(&x);
+ testutil_random_fe_test(&x);
} while (secp256k1_ge_x_on_curve_var(&x));
/* If i is odd, n=d*x for random non-zero d. */
if (i & 1) {
- random_fe_non_zero_test(&d);
+ testutil_random_fe_non_zero_test(&d);
secp256k1_fe_mul(&n, &x, &d);
} else {
n = x;
@@ -4740,10 +4624,10 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
for (ncount = 0; ncount < COUNT; ncount++) {
secp256k1_ge ptg;
secp256k1_gej ptgj;
- random_scalar_order(&sc[0]);
- random_scalar_order(&sc[1]);
+ testutil_random_scalar_order(&sc[0]);
+ testutil_random_scalar_order(&sc[1]);
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
secp256k1_gej_set_ge(&ptgj, &ptg);
pt[0] = ptg;
pt[1] = secp256k1_ge_const_g;
@@ -4780,7 +4664,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
for (j = 0; j < 3; j++) {
for (i = 0; i < 32; i++) {
- random_scalar_order(&sc[i]);
+ testutil_random_scalar_order(&sc[i]);
secp256k1_ge_set_infinity(&pt[i]);
}
CHECK(ecmult_multi(&CTX->error_callback, scratch, &r, &secp256k1_scalar_zero, ecmult_multi_callback, &data, sizes[j]));
@@ -4789,7 +4673,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
for (j = 0; j < 3; j++) {
for (i = 0; i < 32; i++) {
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
pt[i] = ptg;
secp256k1_scalar_set_int(&sc[i], 0);
}
@@ -4798,9 +4682,9 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
}
for (j = 0; j < 3; j++) {
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
for (i = 0; i < 16; i++) {
- random_scalar_order(&sc[2*i]);
+ testutil_random_scalar_order(&sc[2*i]);
secp256k1_scalar_negate(&sc[2*i + 1], &sc[2*i]);
pt[2 * i] = ptg;
pt[2 * i + 1] = ptg;
@@ -4809,9 +4693,9 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
CHECK(ecmult_multi(&CTX->error_callback, scratch, &r, &secp256k1_scalar_zero, ecmult_multi_callback, &data, sizes[j]));
CHECK(secp256k1_gej_is_infinity(&r));
- random_scalar_order(&sc[0]);
+ testutil_random_scalar_order(&sc[0]);
for (i = 0; i < 16; i++) {
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
sc[2*i] = sc[0];
sc[2*i+1] = sc[0];
@@ -4823,13 +4707,13 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
CHECK(secp256k1_gej_is_infinity(&r));
}
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
secp256k1_scalar_set_int(&sc[0], 0);
pt[0] = ptg;
for (i = 1; i < 32; i++) {
pt[i] = ptg;
- random_scalar_order(&sc[i]);
+ testutil_random_scalar_order(&sc[i]);
secp256k1_scalar_add(&sc[0], &sc[0], &sc[i]);
secp256k1_scalar_negate(&sc[i], &sc[i]);
}
@@ -4843,11 +4727,11 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
size_t i;
secp256k1_gej_set_infinity(&r);
- random_scalar_order(&sc[0]);
+ testutil_random_scalar_order(&sc[0]);
for (i = 0; i < 20; i++) {
secp256k1_ge ptg;
sc[i] = sc[0];
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
pt[i] = ptg;
secp256k1_gej_add_ge_var(&r, &r, &pt[i], NULL);
}
@@ -4865,9 +4749,9 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
secp256k1_scalar rs;
secp256k1_scalar_set_int(&rs, 0);
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
for (i = 0; i < 20; i++) {
- random_scalar_order(&sc[i]);
+ testutil_random_scalar_order(&sc[i]);
pt[i] = ptg;
secp256k1_scalar_add(&rs, &rs, &sc[i]);
}
@@ -4880,8 +4764,8 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
/* Sanity check that zero scalars don't cause problems */
for (ncount = 0; ncount < 20; ncount++) {
- random_scalar_order(&sc[ncount]);
- random_group_element_test(&pt[ncount]);
+ testutil_random_scalar_order(&sc[ncount]);
+ testutil_random_ge_test(&pt[ncount]);
}
secp256k1_scalar_clear(&sc[0]);
@@ -4902,7 +4786,7 @@ static void test_ecmult_multi(secp256k1_scratch *scratch, secp256k1_ecmult_multi
secp256k1_ge ptg;
secp256k1_gej ptgj;
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
secp256k1_gej_set_ge(&ptgj, &ptg);
for(t0i = 0; t0i < TOP; t0i++) {
@@ -4973,29 +4857,29 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
int i;
/* Which multiplication function to use */
- int fn = secp256k1_testrand_int(3);
+ int fn = testrand_int(3);
secp256k1_ecmult_multi_func ecmult_multi = fn == 0 ? secp256k1_ecmult_multi_var :
fn == 1 ? secp256k1_ecmult_strauss_batch_single :
secp256k1_ecmult_pippenger_batch_single;
/* Simulate exponentially distributed num. */
- int num_bits = 2 + secp256k1_testrand_int(6);
+ int num_bits = 2 + testrand_int(6);
/* Number of (scalar, point) inputs (excluding g). */
- int num = secp256k1_testrand_int((1 << num_bits) + 1);
+ int num = testrand_int((1 << num_bits) + 1);
/* Number of those which are nonzero. */
- int num_nonzero = secp256k1_testrand_int(num + 1);
+ int num_nonzero = testrand_int(num + 1);
/* Whether we're aiming to create an input with nonzero expected result. */
- int nonzero_result = secp256k1_testrand_bits(1);
+ int nonzero_result = testrand_bits(1);
/* Whether we will provide nonzero g multiplicand. In some cases our hand
* is forced here based on num_nonzero and nonzero_result. */
int g_nonzero = num_nonzero == 0 ? nonzero_result :
num_nonzero == 1 && !nonzero_result ? 1 :
- (int)secp256k1_testrand_bits(1);
+ (int)testrand_bits(1);
/* Which g_scalar pointer to pass into ecmult_multi(). */
- const secp256k1_scalar* g_scalar_ptr = (g_nonzero || secp256k1_testrand_bits(1)) ? &g_scalar : NULL;
+ const secp256k1_scalar* g_scalar_ptr = (g_nonzero || testrand_bits(1)) ? &g_scalar : NULL;
/* How many EC multiplications were performed in this function. */
int mults = 0;
/* How many randomization steps to apply to the input list. */
- int rands = (int)secp256k1_testrand_bits(3);
+ int rands = (int)testrand_bits(3);
if (rands > num_nonzero) rands = num_nonzero;
secp256k1_gej_set_infinity(&expected);
@@ -5004,11 +4888,11 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
if (g_nonzero) {
/* If g_nonzero, set g_scalar to nonzero value r. */
- random_scalar_order_test(&g_scalar);
+ testutil_random_scalar_order_test(&g_scalar);
if (!nonzero_result) {
/* If expected=0 is desired, add a (a*r, -(1/a)*g) term to compensate. */
CHECK(num_nonzero > filled);
- random_scalar_order_test(&sc_tmp);
+ testutil_random_scalar_order_test(&sc_tmp);
secp256k1_scalar_mul(&scalars[filled], &sc_tmp, &g_scalar);
secp256k1_scalar_inverse_var(&sc_tmp, &sc_tmp);
secp256k1_scalar_negate(&sc_tmp, &sc_tmp);
@@ -5020,8 +4904,8 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
if (nonzero_result && filled < num_nonzero) {
/* If a nonzero result is desired, and there is space, add a random nonzero term. */
- random_scalar_order_test(&scalars[filled]);
- random_group_element_test(&ge_tmp);
+ testutil_random_scalar_order_test(&scalars[filled]);
+ testutil_random_ge_test(&ge_tmp);
secp256k1_gej_set_ge(&gejs[filled], &ge_tmp);
++filled;
}
@@ -5040,12 +4924,12 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
/* Add entries to scalars,gejs so that there are num of them. All the added entries
* either have scalar=0 or point=infinity, so these do not change the expected result. */
while (filled < num) {
- if (secp256k1_testrand_bits(1)) {
+ if (testrand_bits(1)) {
secp256k1_gej_set_infinity(&gejs[filled]);
- random_scalar_order_test(&scalars[filled]);
+ testutil_random_scalar_order_test(&scalars[filled]);
} else {
secp256k1_scalar_set_int(&scalars[filled], 0);
- random_group_element_test(&ge_tmp);
+ testutil_random_ge_test(&ge_tmp);
secp256k1_gej_set_ge(&gejs[filled], &ge_tmp);
}
++filled;
@@ -5059,7 +4943,7 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
secp256k1_scalar v, iv;
/* Shuffle the entries. */
for (j = 0; j < num_nonzero; ++j) {
- int k = secp256k1_testrand_int(num_nonzero - j);
+ int k = testrand_int(num_nonzero - j);
if (k != 0) {
secp256k1_gej gej = gejs[j];
secp256k1_scalar sc = scalars[j];
@@ -5079,7 +4963,7 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
}
/* Transform the last input: a*P -> (v*a) * ((1/v)*P). */
CHECK(num_nonzero >= 1);
- random_scalar_order_test(&v);
+ testutil_random_scalar_order_test(&v);
secp256k1_scalar_inverse(&iv, &v);
secp256k1_scalar_mul(&scalars[num_nonzero - 1], &scalars[num_nonzero - 1], &v);
secp256k1_ecmult(&gejs[num_nonzero - 1], &gejs[num_nonzero - 1], &iv, NULL);
@@ -5088,7 +4972,7 @@ static int test_ecmult_multi_random(secp256k1_scratch *scratch) {
/* Shuffle all entries (0..num-1). */
for (i = 0; i < num; ++i) {
- int j = secp256k1_testrand_int(num - i);
+ int j = testrand_int(num - i);
if (j != 0) {
secp256k1_gej gej = gejs[i];
secp256k1_scalar sc = scalars[i];
@@ -5118,8 +5002,8 @@ static void test_ecmult_multi_batch_single(secp256k1_ecmult_multi_func ecmult_mu
ecmult_multi_data data;
secp256k1_scratch *scratch_empty;
- random_group_element_test(&pt);
- random_scalar_order(&sc);
+ testutil_random_ge_test(&pt);
+ testutil_random_scalar_order(&sc);
data.sc = &sc;
data.pt = &pt;
@@ -5150,7 +5034,7 @@ static void test_secp256k1_pippenger_bucket_window_inv(void) {
* for a given scratch space.
*/
static void test_ecmult_multi_pippenger_max_points(void) {
- size_t scratch_size = secp256k1_testrand_bits(8);
+ size_t scratch_size = testrand_bits(8);
size_t max_size = secp256k1_pippenger_scratch_size(secp256k1_pippenger_bucket_window_inv(PIPPENGER_MAX_BUCKET_WINDOW-1)+512, 12);
secp256k1_scratch *scratch;
size_t n_points_supported;
@@ -5244,15 +5128,15 @@ static void test_ecmult_multi_batching(void) {
secp256k1_gej_set_infinity(&r2);
/* Get random scalars and group elements and compute result */
- random_scalar_order(&scG);
+ testutil_random_scalar_order(&scG);
secp256k1_ecmult(&r2, &r2, &secp256k1_scalar_zero, &scG);
for(i = 0; i < n_points; i++) {
secp256k1_ge ptg;
secp256k1_gej ptgj;
- random_group_element_test(&ptg);
+ testutil_random_ge_test(&ptg);
secp256k1_gej_set_ge(&ptgj, &ptg);
pt[i] = ptg;
- random_scalar_order(&sc[i]);
+ testutil_random_scalar_order(&sc[i]);
secp256k1_ecmult(&ptgj, &ptgj, &sc[i], NULL);
secp256k1_gej_add_var(&r2, &r2, &ptgj, NULL);
}
@@ -5464,7 +5348,7 @@ static void run_wnaf(void) {
test_fixed_wnaf_small();
/* Random tests */
for (i = 0; i < COUNT; i++) {
- random_scalar_order(&n);
+ testutil_random_scalar_order(&n);
test_wnaf(&n, 4+(i%10));
test_fixed_wnaf(&n, 4 + (i % 10));
}
@@ -5645,9 +5529,9 @@ static void test_ecmult_gen_blind(void) {
secp256k1_gej pgej2;
secp256k1_ge p;
secp256k1_ge pge;
- random_scalar_order_test(&key);
+ testutil_random_scalar_order_test(&key);
secp256k1_ecmult_gen(&CTX->ecmult_gen_ctx, &pgej, &key);
- secp256k1_testrand256(seed32);
+ testrand256(seed32);
b = CTX->ecmult_gen_ctx.scalar_offset;
p = CTX->ecmult_gen_ctx.ge_offset;
secp256k1_ecmult_gen_blind(&CTX->ecmult_gen_ctx, seed32);
@@ -5741,7 +5625,7 @@ static void run_endomorphism_tests(void) {
for (i = 0; i < 100U * COUNT; ++i) {
secp256k1_scalar full;
- random_scalar_order_test(&full);
+ testutil_random_scalar_order_test(&full);
test_scalar_split(&full);
}
for (i = 0; i < sizeof(scalars_near_split_bounds) / sizeof(scalars_near_split_bounds[0]); ++i) {
@@ -6327,7 +6211,7 @@ static void run_eckey_negate_test(void) {
unsigned char seckey[32];
unsigned char seckey_tmp[32];
- random_scalar_order_b32(seckey);
+ testutil_random_scalar_order_b32(seckey);
memcpy(seckey_tmp, seckey, 32);
/* Verify negation changes the key and changes it back */
@@ -6351,7 +6235,7 @@ static void run_eckey_negate_test(void) {
/* Negating an overflowing seckey fails and the seckey is zeroed. In this
* test, the seckey has 16 random bytes to ensure that ec_seckey_negate
* doesn't just set seckey to a constant value in case of failure. */
- random_scalar_order_b32(seckey);
+ testutil_random_scalar_order_b32(seckey);
memset(seckey, 0xFF, 16);
memset(seckey_tmp, 0, 32);
CHECK(secp256k1_ec_seckey_negate(CTX, seckey) == 0);
@@ -6361,7 +6245,7 @@ static void run_eckey_negate_test(void) {
static void random_sign(secp256k1_scalar *sigr, secp256k1_scalar *sigs, const secp256k1_scalar *key, const secp256k1_scalar *msg, int *recid) {
secp256k1_scalar nonce;
do {
- random_scalar_order_test(&nonce);
+ testutil_random_scalar_order_test(&nonce);
} while(!secp256k1_ecdsa_sig_sign(&CTX->ecmult_gen_ctx, sigr, sigs, key, msg, &nonce, recid));
}
@@ -6373,11 +6257,11 @@ static void test_ecdsa_sign_verify(void) {
secp256k1_scalar sigr, sigs;
int getrec;
int recid;
- random_scalar_order_test(&msg);
- random_scalar_order_test(&key);
+ testutil_random_scalar_order_test(&msg);
+ testutil_random_scalar_order_test(&key);
secp256k1_ecmult_gen(&CTX->ecmult_gen_ctx, &pubj, &key);
secp256k1_ge_set_gej(&pub, &pubj);
- getrec = secp256k1_testrand_bits(1);
+ getrec = testrand_bits(1);
/* The specific way in which this conditional is written sidesteps a potential bug in clang.
See the commit messages of the commit that introduced this comment for details. */
if (getrec) {
@@ -6470,8 +6354,8 @@ static void test_ecdsa_end_to_end(void) {
/* Generate a random key and message. */
{
secp256k1_scalar msg, key;
- random_scalar_order_test(&msg);
- random_scalar_order_test(&key);
+ testutil_random_scalar_order_test(&msg);
+ testutil_random_scalar_order_test(&key);
secp256k1_scalar_get_b32(privkey, &key);
secp256k1_scalar_get_b32(message, &msg);
}
@@ -6481,7 +6365,7 @@ static void test_ecdsa_end_to_end(void) {
CHECK(secp256k1_ec_pubkey_create(CTX, &pubkey, privkey) == 1);
/* Verify exporting and importing public key. */
- CHECK(secp256k1_ec_pubkey_serialize(CTX, pubkeyc, &pubkeyclen, &pubkey, secp256k1_testrand_bits(1) == 1 ? SECP256K1_EC_COMPRESSED : SECP256K1_EC_UNCOMPRESSED));
+ CHECK(secp256k1_ec_pubkey_serialize(CTX, pubkeyc, &pubkeyclen, &pubkey, testrand_bits(1) == 1 ? SECP256K1_EC_COMPRESSED : SECP256K1_EC_UNCOMPRESSED));
memset(&pubkey, 0, sizeof(pubkey));
CHECK(secp256k1_ec_pubkey_parse(CTX, &pubkey, pubkeyc, pubkeyclen) == 1);
@@ -6493,19 +6377,19 @@ static void test_ecdsa_end_to_end(void) {
CHECK(secp256k1_memcmp_var(&pubkey_tmp, &pubkey, sizeof(pubkey)) == 0);
/* Verify private key import and export. */
- CHECK(ec_privkey_export_der(CTX, seckey, &seckeylen, privkey, secp256k1_testrand_bits(1) == 1));
+ CHECK(ec_privkey_export_der(CTX, seckey, &seckeylen, privkey, testrand_bits(1) == 1));
CHECK(ec_privkey_import_der(CTX, privkey2, seckey, seckeylen) == 1);
CHECK(secp256k1_memcmp_var(privkey, privkey2, 32) == 0);
/* Optionally tweak the keys using addition. */
- if (secp256k1_testrand_int(3) == 0) {
+ if (testrand_int(3) == 0) {
int ret1;
int ret2;
int ret3;
unsigned char rnd[32];
unsigned char privkey_tmp[32];
secp256k1_pubkey pubkey2;
- secp256k1_testrand256_test(rnd);
+ testrand256_test(rnd);
memcpy(privkey_tmp, privkey, 32);
ret1 = secp256k1_ec_seckey_tweak_add(CTX, privkey, rnd);
ret2 = secp256k1_ec_pubkey_tweak_add(CTX, &pubkey, rnd);
@@ -6522,14 +6406,14 @@ static void test_ecdsa_end_to_end(void) {
}
/* Optionally tweak the keys using multiplication. */
- if (secp256k1_testrand_int(3) == 0) {
+ if (testrand_int(3) == 0) {
int ret1;
int ret2;
int ret3;
unsigned char rnd[32];
unsigned char privkey_tmp[32];
secp256k1_pubkey pubkey2;
- secp256k1_testrand256_test(rnd);
+ testrand256_test(rnd);
memcpy(privkey_tmp, privkey, 32);
ret1 = secp256k1_ec_seckey_tweak_mul(CTX, privkey, rnd);
ret2 = secp256k1_ec_pubkey_tweak_mul(CTX, &pubkey, rnd);
@@ -6591,7 +6475,7 @@ static void test_ecdsa_end_to_end(void) {
/* Serialize/destroy/parse DER and verify again. */
siglen = 74;
CHECK(secp256k1_ecdsa_signature_serialize_der(CTX, sig, &siglen, &signature[0]) == 1);
- sig[secp256k1_testrand_int(siglen)] += 1 + secp256k1_testrand_int(255);
+ sig[testrand_int(siglen)] += 1 + testrand_int(255);
CHECK(secp256k1_ecdsa_signature_parse_der(CTX, &signature[0], sig, siglen) == 0 ||
secp256k1_ecdsa_verify(CTX, &signature[0], message, &pubkey) == 0);
}
@@ -6601,23 +6485,23 @@ static void test_random_pubkeys(void) {
secp256k1_ge elem2;
unsigned char in[65];
/* Generate some randomly sized pubkeys. */
- size_t len = secp256k1_testrand_bits(2) == 0 ? 65 : 33;
- if (secp256k1_testrand_bits(2) == 0) {
- len = secp256k1_testrand_bits(6);
+ size_t len = testrand_bits(2) == 0 ? 65 : 33;
+ if (testrand_bits(2) == 0) {
+ len = testrand_bits(6);
}
if (len == 65) {
- in[0] = secp256k1_testrand_bits(1) ? 4 : (secp256k1_testrand_bits(1) ? 6 : 7);
+ in[0] = testrand_bits(1) ? 4 : (testrand_bits(1) ? 6 : 7);
} else {
- in[0] = secp256k1_testrand_bits(1) ? 2 : 3;
+ in[0] = testrand_bits(1) ? 2 : 3;
}
- if (secp256k1_testrand_bits(3) == 0) {
- in[0] = secp256k1_testrand_bits(8);
+ if (testrand_bits(3) == 0) {
+ in[0] = testrand_bits(8);
}
if (len > 1) {
- secp256k1_testrand256(&in[1]);
+ testrand256(&in[1]);
}
if (len > 33) {
- secp256k1_testrand256(&in[33]);
+ testrand256(&in[33]);
}
if (secp256k1_eckey_pubkey_parse(&elem, in, len)) {
unsigned char out[65];
@@ -6639,7 +6523,7 @@ static void test_random_pubkeys(void) {
CHECK(secp256k1_eckey_pubkey_parse(&elem2, in, size));
CHECK(secp256k1_ge_eq_var(&elem2, &elem));
/* Check that the X9.62 hybrid type is checked. */
- in[0] = secp256k1_testrand_bits(1) ? 6 : 7;
+ in[0] = testrand_bits(1) ? 6 : 7;
res = secp256k1_eckey_pubkey_parse(&elem2, in, size);
if (firstb == 2 || firstb == 3) {
if (in[0] == firstb + 4) {
@@ -6718,7 +6602,7 @@ static void permute(size_t *arr, size_t n) {
size_t i;
for (i = n - 1; i >= 1; i--) {
size_t tmp, j;
- j = secp256k1_testrand_int(i + 1);
+ j = testrand_int(i + 1);
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
@@ -6728,7 +6612,7 @@ static void permute(size_t *arr, size_t n) {
static void rand_pk(secp256k1_pubkey *pk) {
unsigned char seckey[32];
secp256k1_keypair keypair;
- secp256k1_testrand256(seckey);
+ testrand256(seckey);
CHECK(secp256k1_keypair_create(CTX, &keypair, seckey) == 1);
CHECK(secp256k1_keypair_pub(CTX, pk, &keypair) == 1);
}
@@ -6944,27 +6828,27 @@ static void assign_big_endian(unsigned char *ptr, size_t ptrlen, uint32_t val) {
static void damage_array(unsigned char *sig, size_t *len) {
int pos;
- int action = secp256k1_testrand_bits(3);
+ int action = testrand_bits(3);
if (action < 1 && *len > 3) {
/* Delete a byte. */
- pos = secp256k1_testrand_int(*len);
+ pos = testrand_int(*len);
memmove(sig + pos, sig + pos + 1, *len - pos - 1);
(*len)--;
return;
} else if (action < 2 && *len < 2048) {
/* Insert a byte. */
- pos = secp256k1_testrand_int(1 + *len);
+ pos = testrand_int(1 + *len);
memmove(sig + pos + 1, sig + pos, *len - pos);
- sig[pos] = secp256k1_testrand_bits(8);
+ sig[pos] = testrand_bits(8);
(*len)++;
return;
} else if (action < 4) {
/* Modify a byte. */
- sig[secp256k1_testrand_int(*len)] += 1 + secp256k1_testrand_int(255);
+ sig[testrand_int(*len)] += 1 + testrand_int(255);
return;
} else { /* action < 8 */
/* Modify a bit. */
- sig[secp256k1_testrand_int(*len)] ^= 1 << secp256k1_testrand_bits(3);
+ sig[testrand_int(*len)] ^= 1 << testrand_bits(3);
return;
}
}
@@ -6977,23 +6861,23 @@ static void random_ber_signature(unsigned char *sig, size_t *len, int* certainly
int n;
*len = 0;
- der = secp256k1_testrand_bits(2) == 0;
+ der = testrand_bits(2) == 0;
*certainly_der = der;
*certainly_not_der = 0;
- indet = der ? 0 : secp256k1_testrand_int(10) == 0;
+ indet = der ? 0 : testrand_int(10) == 0;
for (n = 0; n < 2; n++) {
/* We generate two classes of numbers: nlow==1 "low" ones (up to 32 bytes), nlow==0 "high" ones (32 bytes with 129 top bits set, or larger than 32 bytes) */
- nlow[n] = der ? 1 : (secp256k1_testrand_bits(3) != 0);
+ nlow[n] = der ? 1 : (testrand_bits(3) != 0);
/* The length of the number in bytes (the first byte of which will always be nonzero) */
- nlen[n] = nlow[n] ? secp256k1_testrand_int(33) : 32 + secp256k1_testrand_int(200) * secp256k1_testrand_bits(3) / 8;
+ nlen[n] = nlow[n] ? testrand_int(33) : 32 + testrand_int(200) * testrand_bits(3) / 8;
CHECK(nlen[n] <= 232);
/* The top bit of the number. */
- nhbit[n] = (nlow[n] == 0 && nlen[n] == 32) ? 1 : (nlen[n] == 0 ? 0 : secp256k1_testrand_bits(1));
+ nhbit[n] = (nlow[n] == 0 && nlen[n] == 32) ? 1 : (nlen[n] == 0 ? 0 : testrand_bits(1));
/* The top byte of the number (after the potential hardcoded 16 0xFF characters for "high" 32 bytes numbers) */
- nhbyte[n] = nlen[n] == 0 ? 0 : (nhbit[n] ? 128 + secp256k1_testrand_bits(7) : 1 + secp256k1_testrand_int(127));
+ nhbyte[n] = nlen[n] == 0 ? 0 : (nhbit[n] ? 128 + testrand_bits(7) : 1 + testrand_int(127));
/* The number of zero bytes in front of the number (which is 0 or 1 in case of DER, otherwise we extend up to 300 bytes) */
- nzlen[n] = der ? ((nlen[n] == 0 || nhbit[n]) ? 1 : 0) : (nlow[n] ? secp256k1_testrand_int(3) : secp256k1_testrand_int(300 - nlen[n]) * secp256k1_testrand_bits(3) / 8);
+ nzlen[n] = der ? ((nlen[n] == 0 || nhbit[n]) ? 1 : 0) : (nlow[n] ? testrand_int(3) : testrand_int(300 - nlen[n]) * testrand_bits(3) / 8);
if (nzlen[n] > ((nlen[n] == 0 || nhbit[n]) ? 1 : 0)) {
*certainly_not_der = 1;
}
@@ -7002,7 +6886,7 @@ static void random_ber_signature(unsigned char *sig, size_t *len, int* certainly
nlenlen[n] = nlen[n] + nzlen[n] < 128 ? 0 : (nlen[n] + nzlen[n] < 256 ? 1 : 2);
if (!der) {
/* nlenlen[n] max 127 bytes */
- int add = secp256k1_testrand_int(127 - nlenlen[n]) * secp256k1_testrand_bits(4) * secp256k1_testrand_bits(4) / 256;
+ int add = testrand_int(127 - nlenlen[n]) * testrand_bits(4) * testrand_bits(4) / 256;
nlenlen[n] += add;
if (add != 0) {
*certainly_not_der = 1;
@@ -7016,7 +6900,7 @@ static void random_ber_signature(unsigned char *sig, size_t *len, int* certainly
CHECK(tlen <= 856);
/* The length of the garbage inside the tuple. */
- elen = (der || indet) ? 0 : secp256k1_testrand_int(980 - tlen) * secp256k1_testrand_bits(3) / 8;
+ elen = (der || indet) ? 0 : testrand_int(980 - tlen) * testrand_bits(3) / 8;
if (elen != 0) {
*certainly_not_der = 1;
}
@@ -7024,7 +6908,7 @@ static void random_ber_signature(unsigned char *sig, size_t *len, int* certainly
CHECK(tlen <= 980);
/* The length of the garbage after the end of the tuple. */
- glen = der ? 0 : secp256k1_testrand_int(990 - tlen) * secp256k1_testrand_bits(3) / 8;
+ glen = der ? 0 : testrand_int(990 - tlen) * testrand_bits(3) / 8;
if (glen != 0) {
*certainly_not_der = 1;
}
@@ -7039,7 +6923,7 @@ static void random_ber_signature(unsigned char *sig, size_t *len, int* certainly
} else {
int tlenlen = tlen < 128 ? 0 : (tlen < 256 ? 1 : 2);
if (!der) {
- int add = secp256k1_testrand_int(127 - tlenlen) * secp256k1_testrand_bits(4) * secp256k1_testrand_bits(4) / 256;
+ int add = testrand_int(127 - tlenlen) * testrand_bits(4) * testrand_bits(4) / 256;
tlenlen += add;
if (add != 0) {
*certainly_not_der = 1;
@@ -7090,13 +6974,13 @@ static void random_ber_signature(unsigned char *sig, size_t *len, int* certainly
nlen[n]--;
}
/* Generate remaining random bytes of number */
- secp256k1_testrand_bytes_test(sig + *len, nlen[n]);
+ testrand_bytes_test(sig + *len, nlen[n]);
*len += nlen[n];
nlen[n] = 0;
}
/* Generate random garbage inside tuple. */
- secp256k1_testrand_bytes_test(sig + *len, elen);
+ testrand_bytes_test(sig + *len, elen);
*len += elen;
/* Generate end-of-contents bytes. */
@@ -7108,7 +6992,7 @@ static void random_ber_signature(unsigned char *sig, size_t *len, int* certainly
CHECK(tlen + glen <= 1121);
/* Generate random garbage outside tuple. */
- secp256k1_testrand_bytes_test(sig + *len, glen);
+ testrand_bytes_test(sig + *len, glen);
*len += glen;
tlen += glen;
CHECK(tlen <= 1121);
@@ -7771,7 +7655,7 @@ int main(int argc, char **argv) {
run_xoshiro256pp_tests();
/* find random seed */
- secp256k1_testrand_init(argc > 2 ? argv[2] : NULL);
+ testrand_init(argc > 2 ? argv[2] : NULL);
/*** Setup test environment ***/
@@ -7780,9 +7664,9 @@ int main(int argc, char **argv) {
/* Randomize the context only with probability 15/16
to make sure we test without context randomization from time to time.
TODO Reconsider this when recalibrating the tests. */
- if (secp256k1_testrand_bits(4)) {
+ if (testrand_bits(4)) {
unsigned char rand32[32];
- secp256k1_testrand256(rand32);
+ testrand256(rand32);
CHECK(secp256k1_context_randomize(CTX, rand32));
}
/* Make a writable copy of secp256k1_context_static in order to test the effect of API functions
@@ -7909,7 +7793,7 @@ int main(int argc, char **argv) {
free(STATIC_CTX);
secp256k1_context_destroy(CTX);
- secp256k1_testrand_finish();
+ testrand_finish();
printf("no problems found\n");
return 0;