@@ -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 , SECP256K1_GE_X_MAGNITUDE_MAX );
130
+ }
131
+
132
+ static void random_ge_y_magnitude (secp256k1_ge * ge ) {
133
+ random_field_element_magnitude (& ge -> y , SECP256K1_GE_Y_MAGNITUDE_MAX );
134
+ }
135
+
136
+ static void random_gej_x_magnitude (secp256k1_gej * gej ) {
137
+ random_field_element_magnitude (& gej -> x , SECP256K1_GEJ_X_MAGNITUDE_MAX );
138
+ }
139
+
140
+ static void random_gej_y_magnitude (secp256k1_gej * gej ) {
141
+ random_field_element_magnitude (& gej -> y , SECP256K1_GEJ_Y_MAGNITUDE_MAX );
142
+ }
143
+
144
+ static void random_gej_z_magnitude (secp256k1_gej * gej ) {
145
+ random_field_element_magnitude (& gej -> z , SECP256K1_GEJ_Z_MAGNITUDE_MAX );
146
+ }
147
+
124
148
static void random_group_element_test (secp256k1_ge * ge ) {
125
149
secp256k1_fe fe ;
126
150
do {
@@ -3279,13 +3303,13 @@ static void run_fe_mul(void) {
3279
3303
for (i = 0 ; i < 100 * COUNT ; ++ i ) {
3280
3304
secp256k1_fe a , b , c , d ;
3281
3305
random_fe (& a );
3282
- random_field_element_magnitude (& a );
3306
+ random_fe_magnitude (& a );
3283
3307
random_fe (& b );
3284
- random_field_element_magnitude (& b );
3308
+ random_fe_magnitude (& b );
3285
3309
random_fe_test (& c );
3286
- random_field_element_magnitude (& c );
3310
+ random_fe_magnitude (& c );
3287
3311
random_fe_test (& d );
3288
- random_field_element_magnitude (& d );
3312
+ random_fe_magnitude (& d );
3289
3313
test_fe_mul (& a , & a , 1 );
3290
3314
test_fe_mul (& c , & c , 1 );
3291
3315
test_fe_mul (& a , & b , 0 );
@@ -3759,17 +3783,17 @@ static void test_ge(void) {
3759
3783
secp256k1_gej_set_ge (& gej [3 + 4 * i ], & ge [3 + 4 * i ]);
3760
3784
random_group_element_jacobian_test (& gej [4 + 4 * i ], & ge [4 + 4 * i ]);
3761
3785
for (j = 0 ; j < 4 ; j ++ ) {
3762
- random_field_element_magnitude (& ge [1 + j + 4 * i ]. x );
3763
- random_field_element_magnitude (& ge [1 + j + 4 * i ]. y );
3764
- random_field_element_magnitude (& gej [1 + j + 4 * i ]. x );
3765
- random_field_element_magnitude (& gej [1 + j + 4 * i ]. y );
3766
- random_field_element_magnitude (& gej [1 + j + 4 * i ]. z );
3786
+ random_ge_x_magnitude (& ge [1 + j + 4 * i ]);
3787
+ random_ge_y_magnitude (& ge [1 + j + 4 * i ]);
3788
+ random_gej_x_magnitude (& gej [1 + j + 4 * i ]);
3789
+ random_gej_y_magnitude (& gej [1 + j + 4 * i ]);
3790
+ random_gej_z_magnitude (& gej [1 + j + 4 * i ]);
3767
3791
}
3768
3792
}
3769
3793
3770
3794
/* Generate random zf, and zfi2 = 1/zf^2, zfi3 = 1/zf^3 */
3771
3795
random_fe_non_zero_test (& zf );
3772
- random_field_element_magnitude (& zf );
3796
+ random_fe_magnitude (& zf );
3773
3797
secp256k1_fe_inv_var (& zfi3 , & zf );
3774
3798
secp256k1_fe_sqr (& zfi2 , & zfi3 );
3775
3799
secp256k1_fe_mul (& zfi3 , & zfi3 , & zfi2 );
@@ -3805,8 +3829,8 @@ static void test_ge(void) {
3805
3829
secp256k1_ge ge2_zfi = ge [i2 ]; /* the second term with x and y rescaled for z = 1/zf */
3806
3830
secp256k1_fe_mul (& ge2_zfi .x , & ge2_zfi .x , & zfi2 );
3807
3831
secp256k1_fe_mul (& ge2_zfi .y , & ge2_zfi .y , & zfi3 );
3808
- random_field_element_magnitude (& ge2_zfi . x );
3809
- random_field_element_magnitude (& ge2_zfi . y );
3832
+ random_ge_x_magnitude (& ge2_zfi );
3833
+ random_ge_y_magnitude (& ge2_zfi );
3810
3834
secp256k1_gej_add_zinv_var (& resj , & gej [i1 ], & ge2_zfi , & zf );
3811
3835
ge_equals_gej (& ref , & resj );
3812
3836
}
0 commit comments