Skip to content

Commit 0c6bc76

Browse files
committed
tests: refactor: move random_ helpers from tests.c to testutil.h
Can be reviewed via `--color-moved=dimmed-zebra`.
1 parent 0fef847 commit 0c6bc76

File tree

2 files changed

+113
-112
lines changed

2 files changed

+113
-112
lines changed

src/tests.c

Lines changed: 0 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -96,118 +96,6 @@ static void uncounting_illegal_callback_fn(const char* str, void* data) {
9696
(*p)--;
9797
}
9898

99-
static void random_fe_magnitude(secp256k1_fe *fe, int m) {
100-
secp256k1_fe zero;
101-
int n = secp256k1_testrand_int(m + 1);
102-
secp256k1_fe_normalize(fe);
103-
if (n == 0) {
104-
return;
105-
}
106-
secp256k1_fe_clear(&zero);
107-
secp256k1_fe_negate(&zero, &zero, 0);
108-
secp256k1_fe_mul_int_unchecked(&zero, n - 1);
109-
secp256k1_fe_add(fe, &zero);
110-
#ifdef VERIFY
111-
CHECK(fe->magnitude == n);
112-
#endif
113-
}
114-
115-
static void random_fe_test(secp256k1_fe *x) {
116-
unsigned char bin[32];
117-
do {
118-
secp256k1_testrand256_test(bin);
119-
if (secp256k1_fe_set_b32_limit(x, bin)) {
120-
return;
121-
}
122-
} while(1);
123-
}
124-
125-
static void random_fe_non_zero_test(secp256k1_fe *fe) {
126-
do {
127-
random_fe_test(fe);
128-
} while(secp256k1_fe_is_zero(fe));
129-
}
130-
131-
static void random_ge_x_magnitude(secp256k1_ge *ge) {
132-
random_fe_magnitude(&ge->x, SECP256K1_GE_X_MAGNITUDE_MAX);
133-
}
134-
135-
static void random_ge_y_magnitude(secp256k1_ge *ge) {
136-
random_fe_magnitude(&ge->y, SECP256K1_GE_Y_MAGNITUDE_MAX);
137-
}
138-
139-
static void random_gej_x_magnitude(secp256k1_gej *gej) {
140-
random_fe_magnitude(&gej->x, SECP256K1_GEJ_X_MAGNITUDE_MAX);
141-
}
142-
143-
static void random_gej_y_magnitude(secp256k1_gej *gej) {
144-
random_fe_magnitude(&gej->y, SECP256K1_GEJ_Y_MAGNITUDE_MAX);
145-
}
146-
147-
static void random_gej_z_magnitude(secp256k1_gej *gej) {
148-
random_fe_magnitude(&gej->z, SECP256K1_GEJ_Z_MAGNITUDE_MAX);
149-
}
150-
151-
static void random_ge_test(secp256k1_ge *ge) {
152-
secp256k1_fe fe;
153-
do {
154-
random_fe_test(&fe);
155-
if (secp256k1_ge_set_xo_var(ge, &fe, secp256k1_testrand_bits(1))) {
156-
secp256k1_fe_normalize(&ge->y);
157-
break;
158-
}
159-
} while(1);
160-
ge->infinity = 0;
161-
}
162-
163-
static void random_ge_jacobian_test(secp256k1_gej *gej, const secp256k1_ge *ge) {
164-
secp256k1_fe z2, z3;
165-
random_fe_non_zero_test(&gej->z);
166-
secp256k1_fe_sqr(&z2, &gej->z);
167-
secp256k1_fe_mul(&z3, &z2, &gej->z);
168-
secp256k1_fe_mul(&gej->x, &ge->x, &z2);
169-
secp256k1_fe_mul(&gej->y, &ge->y, &z3);
170-
gej->infinity = ge->infinity;
171-
}
172-
173-
static void random_gej_test(secp256k1_gej *gej) {
174-
secp256k1_ge ge;
175-
random_ge_test(&ge);
176-
random_ge_jacobian_test(gej, &ge);
177-
}
178-
179-
static void random_scalar_order_test(secp256k1_scalar *num) {
180-
do {
181-
unsigned char b32[32];
182-
int overflow = 0;
183-
secp256k1_testrand256_test(b32);
184-
secp256k1_scalar_set_b32(num, b32, &overflow);
185-
if (overflow || secp256k1_scalar_is_zero(num)) {
186-
continue;
187-
}
188-
break;
189-
} while(1);
190-
}
191-
192-
static void random_scalar_order(secp256k1_scalar *num) {
193-
do {
194-
unsigned char b32[32];
195-
int overflow = 0;
196-
secp256k1_testrand256(b32);
197-
secp256k1_scalar_set_b32(num, b32, &overflow);
198-
if (overflow || secp256k1_scalar_is_zero(num)) {
199-
continue;
200-
}
201-
break;
202-
} while(1);
203-
}
204-
205-
static void random_scalar_order_b32(unsigned char *b32) {
206-
secp256k1_scalar num;
207-
random_scalar_order(&num);
208-
secp256k1_scalar_get_b32(b32, &num);
209-
}
210-
21199
static void run_xoshiro256pp_tests(void) {
212100
{
213101
size_t i;

src/testutil.h

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#define SECP256K1_TESTUTIL_H
88

99
#include "field.h"
10+
#include "group.h"
1011
#include "testrand.h"
1112
#include "util.h"
1213

@@ -26,4 +27,116 @@ static void random_fe_non_zero(secp256k1_fe *nz) {
2627
} while (secp256k1_fe_is_zero(nz));
2728
}
2829

30+
static void random_fe_magnitude(secp256k1_fe *fe, int m) {
31+
secp256k1_fe zero;
32+
int n = secp256k1_testrand_int(m + 1);
33+
secp256k1_fe_normalize(fe);
34+
if (n == 0) {
35+
return;
36+
}
37+
secp256k1_fe_clear(&zero);
38+
secp256k1_fe_negate(&zero, &zero, 0);
39+
secp256k1_fe_mul_int_unchecked(&zero, n - 1);
40+
secp256k1_fe_add(fe, &zero);
41+
#ifdef VERIFY
42+
CHECK(fe->magnitude == n);
43+
#endif
44+
}
45+
46+
static void random_fe_test(secp256k1_fe *x) {
47+
unsigned char bin[32];
48+
do {
49+
secp256k1_testrand256_test(bin);
50+
if (secp256k1_fe_set_b32_limit(x, bin)) {
51+
return;
52+
}
53+
} while(1);
54+
}
55+
56+
static void random_fe_non_zero_test(secp256k1_fe *fe) {
57+
do {
58+
random_fe_test(fe);
59+
} while(secp256k1_fe_is_zero(fe));
60+
}
61+
62+
static void random_ge_x_magnitude(secp256k1_ge *ge) {
63+
random_fe_magnitude(&ge->x, SECP256K1_GE_X_MAGNITUDE_MAX);
64+
}
65+
66+
static void random_ge_y_magnitude(secp256k1_ge *ge) {
67+
random_fe_magnitude(&ge->y, SECP256K1_GE_Y_MAGNITUDE_MAX);
68+
}
69+
70+
static void random_gej_x_magnitude(secp256k1_gej *gej) {
71+
random_fe_magnitude(&gej->x, SECP256K1_GEJ_X_MAGNITUDE_MAX);
72+
}
73+
74+
static void random_gej_y_magnitude(secp256k1_gej *gej) {
75+
random_fe_magnitude(&gej->y, SECP256K1_GEJ_Y_MAGNITUDE_MAX);
76+
}
77+
78+
static void random_gej_z_magnitude(secp256k1_gej *gej) {
79+
random_fe_magnitude(&gej->z, SECP256K1_GEJ_Z_MAGNITUDE_MAX);
80+
}
81+
82+
static void random_ge_test(secp256k1_ge *ge) {
83+
secp256k1_fe fe;
84+
do {
85+
random_fe_test(&fe);
86+
if (secp256k1_ge_set_xo_var(ge, &fe, secp256k1_testrand_bits(1))) {
87+
secp256k1_fe_normalize(&ge->y);
88+
break;
89+
}
90+
} while(1);
91+
ge->infinity = 0;
92+
}
93+
94+
static void random_ge_jacobian_test(secp256k1_gej *gej, const secp256k1_ge *ge) {
95+
secp256k1_fe z2, z3;
96+
random_fe_non_zero_test(&gej->z);
97+
secp256k1_fe_sqr(&z2, &gej->z);
98+
secp256k1_fe_mul(&z3, &z2, &gej->z);
99+
secp256k1_fe_mul(&gej->x, &ge->x, &z2);
100+
secp256k1_fe_mul(&gej->y, &ge->y, &z3);
101+
gej->infinity = ge->infinity;
102+
}
103+
104+
static void random_gej_test(secp256k1_gej *gej) {
105+
secp256k1_ge ge;
106+
random_ge_test(&ge);
107+
random_ge_jacobian_test(gej, &ge);
108+
}
109+
110+
static void random_scalar_order_test(secp256k1_scalar *num) {
111+
do {
112+
unsigned char b32[32];
113+
int overflow = 0;
114+
secp256k1_testrand256_test(b32);
115+
secp256k1_scalar_set_b32(num, b32, &overflow);
116+
if (overflow || secp256k1_scalar_is_zero(num)) {
117+
continue;
118+
}
119+
break;
120+
} while(1);
121+
}
122+
123+
static void random_scalar_order(secp256k1_scalar *num) {
124+
do {
125+
unsigned char b32[32];
126+
int overflow = 0;
127+
secp256k1_testrand256(b32);
128+
secp256k1_scalar_set_b32(num, b32, &overflow);
129+
if (overflow || secp256k1_scalar_is_zero(num)) {
130+
continue;
131+
}
132+
break;
133+
} while(1);
134+
}
135+
136+
static void random_scalar_order_b32(unsigned char *b32) {
137+
secp256k1_scalar num;
138+
random_scalar_order(&num);
139+
secp256k1_scalar_get_b32(b32, &num);
140+
}
141+
29142
#endif /* SECP256K1_TESTUTIL_H */

0 commit comments

Comments
 (0)