@@ -89,9 +89,9 @@ static void uncounting_illegal_callback_fn(const char* str, void* data) {
89
89
(* p )-- ;
90
90
}
91
91
92
- static void random_field_element_magnitude (secp256k1_fe * fe ) {
92
+ static void random_field_element_magnitude (secp256k1_fe * fe , int m ) {
93
93
secp256k1_fe zero ;
94
- int n = secp256k1_testrand_int (9 );
94
+ int n = secp256k1_testrand_int (m + 1 );
95
95
secp256k1_fe_normalize (fe );
96
96
if (n == 0 ) {
97
97
return ;
@@ -121,6 +121,30 @@ static void random_fe_non_zero_test(secp256k1_fe *fe) {
121
121
} while (secp256k1_fe_is_zero (fe ));
122
122
}
123
123
124
+ static void random_fe_magnitude (secp256k1_fe * fe ) {
125
+ random_field_element_magnitude (fe , 8 );
126
+ }
127
+
128
+ static void random_ge_x_magnitude (secp256k1_ge * ge ) {
129
+ random_field_element_magnitude (& ge -> x , 6 );
130
+ }
131
+
132
+ static void random_ge_y_magnitude (secp256k1_ge * ge ) {
133
+ random_field_element_magnitude (& ge -> y , 4 );
134
+ }
135
+
136
+ static void random_gej_x_magnitude (secp256k1_gej * gej ) {
137
+ random_field_element_magnitude (& gej -> x , 6 );
138
+ }
139
+
140
+ static void random_gej_y_magnitude (secp256k1_gej * gej ) {
141
+ random_field_element_magnitude (& gej -> y , 4 );
142
+ }
143
+
144
+ static void random_gej_z_magnitude (secp256k1_gej * gej ) {
145
+ random_field_element_magnitude (& gej -> z , 2 );
146
+ }
147
+
124
148
static void random_group_element_test (secp256k1_ge * ge ) {
125
149
secp256k1_fe fe ;
126
150
do {
@@ -3322,13 +3346,13 @@ static void run_fe_mul(void) {
3322
3346
for (i = 0 ; i < 100 * COUNT ; ++ i ) {
3323
3347
secp256k1_fe a , b , c , d ;
3324
3348
random_fe (& a );
3325
- random_field_element_magnitude (& a );
3349
+ random_fe_magnitude (& a );
3326
3350
random_fe (& b );
3327
- random_field_element_magnitude (& b );
3351
+ random_fe_magnitude (& b );
3328
3352
random_fe_test (& c );
3329
- random_field_element_magnitude (& c );
3353
+ random_fe_magnitude (& c );
3330
3354
random_fe_test (& d );
3331
- random_field_element_magnitude (& d );
3355
+ random_fe_magnitude (& d );
3332
3356
test_fe_mul (& a , & a , 1 );
3333
3357
test_fe_mul (& c , & c , 1 );
3334
3358
test_fe_mul (& a , & b , 0 );
@@ -3802,17 +3826,17 @@ static void test_ge(void) {
3802
3826
secp256k1_gej_set_ge (& gej [3 + 4 * i ], & ge [3 + 4 * i ]);
3803
3827
random_group_element_jacobian_test (& gej [4 + 4 * i ], & ge [4 + 4 * i ]);
3804
3828
for (j = 0 ; j < 4 ; j ++ ) {
3805
- random_field_element_magnitude (& ge [1 + j + 4 * i ]. x );
3806
- random_field_element_magnitude (& ge [1 + j + 4 * i ]. y );
3807
- random_field_element_magnitude (& gej [1 + j + 4 * i ]. x );
3808
- random_field_element_magnitude (& gej [1 + j + 4 * i ]. y );
3809
- random_field_element_magnitude (& gej [1 + j + 4 * i ]. z );
3829
+ random_ge_x_magnitude (& ge [1 + j + 4 * i ]);
3830
+ random_ge_y_magnitude (& ge [1 + j + 4 * i ]);
3831
+ random_gej_x_magnitude (& gej [1 + j + 4 * i ]);
3832
+ random_gej_y_magnitude (& gej [1 + j + 4 * i ]);
3833
+ random_gej_z_magnitude (& gej [1 + j + 4 * i ]);
3810
3834
}
3811
3835
}
3812
3836
3813
3837
/* Generate random zf, and zfi2 = 1/zf^2, zfi3 = 1/zf^3 */
3814
3838
random_fe_non_zero_test (& zf );
3815
- random_field_element_magnitude (& zf );
3839
+ random_fe_magnitude (& zf );
3816
3840
secp256k1_fe_inv_var (& zfi3 , & zf );
3817
3841
secp256k1_fe_sqr (& zfi2 , & zfi3 );
3818
3842
secp256k1_fe_mul (& zfi3 , & zfi3 , & zfi2 );
@@ -3848,8 +3872,8 @@ static void test_ge(void) {
3848
3872
secp256k1_ge ge2_zfi = ge [i2 ]; /* the second term with x and y rescaled for z = 1/zf */
3849
3873
secp256k1_fe_mul (& ge2_zfi .x , & ge2_zfi .x , & zfi2 );
3850
3874
secp256k1_fe_mul (& ge2_zfi .y , & ge2_zfi .y , & zfi3 );
3851
- random_field_element_magnitude (& ge2_zfi . x );
3852
- random_field_element_magnitude (& ge2_zfi . y );
3875
+ random_ge_x_magnitude (& ge2_zfi );
3876
+ random_ge_y_magnitude (& ge2_zfi );
3853
3877
secp256k1_gej_add_zinv_var (& resj , & gej [i1 ], & ge2_zfi , & zf );
3854
3878
ge_equals_gej (& ref , & resj );
3855
3879
}
0 commit comments