Skip to content

Commit 5a95a26

Browse files
committed
tests: introduce helper for non-zero random_fe_test results
There are several instances in the tests where random non-zero field elements are generated by calling `random_fe_test` in a do/while-loop. This commit deduplicates all these by introducing a `random_fe_non_zero_test` helper. Note that some instances checked the is-zero condition via `secp256k1_fe_normalizes_to_zero_var`, which is unnecessary, as the result of `random_fe_test` is already normalized (so strictly speaking, this is not a pure refactor).
1 parent 304421d commit 5a95a26

File tree

1 file changed

+12
-22
lines changed

1 file changed

+12
-22
lines changed

src/tests.c

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,12 @@ static void random_fe_test(secp256k1_fe *x) {
115115
} while(1);
116116
}
117117

118+
static void random_fe_non_zero_test(secp256k1_fe *fe) {
119+
do {
120+
random_fe_test(fe);
121+
} while(secp256k1_fe_is_zero(fe));
122+
}
123+
118124
static void random_group_element_test(secp256k1_ge *ge) {
119125
secp256k1_fe fe;
120126
do {
@@ -129,12 +135,7 @@ static void random_group_element_test(secp256k1_ge *ge) {
129135

130136
static void random_group_element_jacobian_test(secp256k1_gej *gej, const secp256k1_ge *ge) {
131137
secp256k1_fe z2, z3;
132-
do {
133-
random_fe_test(&gej->z);
134-
if (!secp256k1_fe_is_zero(&gej->z)) {
135-
break;
136-
}
137-
} while(1);
138+
random_fe_non_zero_test(&gej->z);
138139
secp256k1_fe_sqr(&z2, &gej->z);
139140
secp256k1_fe_mul(&z3, &z2, &gej->z);
140141
secp256k1_fe_mul(&gej->x, &ge->x, &z2);
@@ -3810,18 +3811,14 @@ static void test_ge(void) {
38103811
}
38113812

38123813
/* Generate random zf, and zfi2 = 1/zf^2, zfi3 = 1/zf^3 */
3813-
do {
3814-
random_fe_test(&zf);
3815-
} while(secp256k1_fe_is_zero(&zf));
3814+
random_fe_non_zero_test(&zf);
38163815
random_field_element_magnitude(&zf);
38173816
secp256k1_fe_inv_var(&zfi3, &zf);
38183817
secp256k1_fe_sqr(&zfi2, &zfi3);
38193818
secp256k1_fe_mul(&zfi3, &zfi3, &zfi2);
38203819

38213820
/* Generate random r */
3822-
do {
3823-
random_fe_test(&r);
3824-
} while(secp256k1_fe_is_zero(&r));
3821+
random_fe_non_zero_test(&r);
38253822

38263823
for (i1 = 0; i1 < 1 + 4 * runs; i1++) {
38273824
int i2;
@@ -4138,10 +4135,7 @@ static void run_gej(void) {
41384135
CHECK(!secp256k1_gej_eq_var(&a, &b));
41394136

41404137
b = a;
4141-
random_fe_test(&fe);
4142-
if (secp256k1_fe_is_zero(&fe)) {
4143-
continue;
4144-
}
4138+
random_fe_non_zero_test(&fe);
41454139
secp256k1_gej_rescale(&a, &fe);
41464140
CHECK(secp256k1_gej_eq_var(&a, &b));
41474141
}
@@ -4580,9 +4574,7 @@ static void ecmult_const_mult_xonly(void) {
45804574
random_scalar_order_test(&q);
45814575
/* If i is odd, n=d*base.x for random non-zero d */
45824576
if (i & 1) {
4583-
do {
4584-
random_fe_test(&d);
4585-
} while (secp256k1_fe_normalizes_to_zero_var(&d));
4577+
random_fe_non_zero_test(&d);
45864578
secp256k1_fe_mul(&n, &base.x, &d);
45874579
} else {
45884580
n = base.x;
@@ -4611,9 +4603,7 @@ static void ecmult_const_mult_xonly(void) {
46114603
} while (secp256k1_ge_x_on_curve_var(&x));
46124604
/* If i is odd, n=d*x for random non-zero d. */
46134605
if (i & 1) {
4614-
do {
4615-
random_fe_test(&d);
4616-
} while (secp256k1_fe_normalizes_to_zero_var(&d));
4606+
random_fe_non_zero_test(&d);
46174607
secp256k1_fe_mul(&n, &x, &d);
46184608
} else {
46194609
n = x;

0 commit comments

Comments
 (0)