@@ -3101,10 +3101,6 @@ static void run_field_be32_overflow(void) {
3101
3101
/* Returns true if two field elements have the same representation. */
3102
3102
static int fe_identical (const secp256k1_fe * a , const secp256k1_fe * b ) {
3103
3103
int ret = 1 ;
3104
- #ifdef VERIFY
3105
- ret &= (a -> magnitude == b -> magnitude );
3106
- ret &= (a -> normalized == b -> normalized );
3107
- #endif
3108
3104
/* Compare the struct member that holds the limbs. */
3109
3105
ret &= (secp256k1_memcmp_var (a -> n , b -> n , sizeof (a -> n )) == 0 );
3110
3106
return ret ;
@@ -3192,16 +3188,22 @@ static void run_field_misc(void) {
3192
3188
q = x ;
3193
3189
secp256k1_fe_cmov (& x , & z , 0 );
3194
3190
#ifdef VERIFY
3195
- CHECK (x .normalized && x .magnitude == 1 );
3191
+ CHECK (!x .normalized );
3192
+ CHECK ((x .magnitude == q .magnitude ) || (x .magnitude == z .magnitude ));
3193
+ CHECK ((x .magnitude >= q .magnitude ) && (x .magnitude >= z .magnitude ));
3196
3194
#endif
3195
+ x = q ;
3197
3196
secp256k1_fe_cmov (& x , & x , 1 );
3198
3197
CHECK (!fe_identical (& x , & z ));
3199
3198
CHECK (fe_identical (& x , & q ));
3200
3199
secp256k1_fe_cmov (& q , & z , 1 );
3201
3200
#ifdef VERIFY
3202
- CHECK (!q .normalized && q .magnitude == z .magnitude );
3201
+ CHECK (!q .normalized );
3202
+ CHECK ((q .magnitude == x .magnitude ) || (q .magnitude == z .magnitude ));
3203
+ CHECK ((q .magnitude >= x .magnitude ) && (q .magnitude >= z .magnitude ));
3203
3204
#endif
3204
3205
CHECK (fe_identical (& q , & z ));
3206
+ q = z ;
3205
3207
secp256k1_fe_normalize_var (& x );
3206
3208
secp256k1_fe_normalize_var (& z );
3207
3209
CHECK (!secp256k1_fe_equal_var (& x , & z ));
@@ -3215,7 +3217,7 @@ static void run_field_misc(void) {
3215
3217
secp256k1_fe_normalize_var (& q );
3216
3218
secp256k1_fe_cmov (& q , & z , (j & 1 ));
3217
3219
#ifdef VERIFY
3218
- CHECK (( q .normalized != ( j & 1 )) && q .magnitude == (( j & 1 ) ? z .magnitude : 1 ) );
3220
+ CHECK (! q .normalized && q .magnitude == z .magnitude );
3219
3221
#endif
3220
3222
}
3221
3223
secp256k1_fe_normalize_var (& z );
@@ -7558,23 +7560,23 @@ static void fe_cmov_test(void) {
7558
7560
secp256k1_fe a = zero ;
7559
7561
7560
7562
secp256k1_fe_cmov (& r , & a , 0 );
7561
- CHECK (secp256k1_memcmp_var (& r , & max , sizeof ( r )) == 0 );
7563
+ CHECK (fe_identical (& r , & max ) );
7562
7564
7563
7565
r = zero ; a = max ;
7564
7566
secp256k1_fe_cmov (& r , & a , 1 );
7565
- CHECK (secp256k1_memcmp_var (& r , & max , sizeof ( r )) == 0 );
7567
+ CHECK (fe_identical (& r , & max ) );
7566
7568
7567
7569
a = zero ;
7568
7570
secp256k1_fe_cmov (& r , & a , 1 );
7569
- CHECK (secp256k1_memcmp_var (& r , & zero , sizeof ( r )) == 0 );
7571
+ CHECK (fe_identical (& r , & zero ) );
7570
7572
7571
7573
a = one ;
7572
7574
secp256k1_fe_cmov (& r , & a , 1 );
7573
- CHECK (secp256k1_memcmp_var (& r , & one , sizeof ( r )) == 0 );
7575
+ CHECK (fe_identical (& r , & one ) );
7574
7576
7575
7577
r = one ; a = zero ;
7576
7578
secp256k1_fe_cmov (& r , & a , 0 );
7577
- CHECK (secp256k1_memcmp_var (& r , & one , sizeof ( r )) == 0 );
7579
+ CHECK (fe_identical (& r , & one ) );
7578
7580
}
7579
7581
7580
7582
static void fe_storage_cmov_test (void ) {
0 commit comments