|
42 | 42 | static secp256k1_context *CTX = NULL; |
43 | 43 | static secp256k1_context *STATIC_CTX = NULL; |
44 | 44 |
|
| 45 | +/* The group order n minus 1. This is the maximum valid scalar value. */ |
| 46 | +#define EX_SCALAR_N_M1 SECP256K1_SCALAR_CONST( \ |
| 47 | + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, \ |
| 48 | + 0xBAAEDCE6UL, 0xAF48A03BUL, 0xBFD25E8CUL, 0xD0364140UL \ |
| 49 | +) |
| 50 | + |
| 51 | +/* The field order p minus 1. */ |
| 52 | +#define EX_FE_P_M1 SECP256K1_FE_CONST( \ |
| 53 | + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, \ |
| 54 | + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, 0xFFFFFC2EUL \ |
| 55 | +) |
| 56 | + |
| 57 | +static const secp256k1_scalar scalar_n_m1 = EX_SCALAR_N_M1; |
| 58 | +static const secp256k1_fe fe_p_m1 = EX_FE_P_M1; |
| 59 | + |
45 | 60 | static int all_bytes_equal(const void* s, unsigned char value, size_t n) { |
46 | 61 | const unsigned char *p = s; |
47 | 62 | size_t i; |
@@ -2195,10 +2210,7 @@ static void run_scalar_set_b32_seckey_tests(void) { |
2195 | 2210 |
|
2196 | 2211 | static void test_scalar_check_overflow(void) { |
2197 | 2212 | secp256k1_scalar s; |
2198 | | - const secp256k1_scalar n_minus_1 = SECP256K1_SCALAR_CONST( |
2199 | | - 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, |
2200 | | - 0xBAAEDCE6UL, 0xAF48A03BUL, 0xBFD25E8CUL, 0xD0364140UL |
2201 | | - ); |
| 2213 | + const secp256k1_scalar n_minus_1 = scalar_n_m1; |
2202 | 2214 | const secp256k1_scalar n = SECP256K1_SCALAR_CONST( |
2203 | 2215 | 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, |
2204 | 2216 | 0xBAAEDCE6UL, 0xAF48A03BUL, 0xBFD25E8CUL, 0xD0364141UL |
@@ -2284,7 +2296,7 @@ static void run_scalar_tests(void) { |
2284 | 2296 | /* 1 */ |
2285 | 2297 | SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1), |
2286 | 2298 | /* -1 */ |
2287 | | - SECP256K1_SCALAR_CONST(0xfffffffful, 0xfffffffful, 0xfffffffful, 0xfffffffeul, 0xbaaedce6ul, 0xaf48a03bul, 0xbfd25e8cul, 0xd0364140ul), |
| 2299 | + scalar_n_m1, |
2288 | 2300 | /* -2 (largest odd value) */ |
2289 | 2301 | SECP256K1_SCALAR_CONST(0xfffffffful, 0xfffffffful, 0xfffffffful, 0xfffffffeul, 0xbaaedce6ul, 0xaf48a03bul, 0xbfd25e8cul, 0xd036413Ful), |
2290 | 2302 | /* Half the secp256k1 order */ |
@@ -3302,15 +3314,9 @@ static void run_sqrt(void) { |
3302 | 3314 |
|
3303 | 3315 | /***** FIELD/SCALAR INVERSE TESTS *****/ |
3304 | 3316 |
|
3305 | | -static const secp256k1_scalar scalar_minus_one = SECP256K1_SCALAR_CONST( |
3306 | | - 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, |
3307 | | - 0xBAAEDCE6, 0xAF48A03B, 0xBFD25E8C, 0xD0364140 |
3308 | | -); |
| 3317 | +static const secp256k1_scalar scalar_minus_one = scalar_n_m1; |
3309 | 3318 |
|
3310 | | -static const secp256k1_fe fe_minus_one = SECP256K1_FE_CONST( |
3311 | | - 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, |
3312 | | - 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFC2E |
3313 | | -); |
| 3319 | +static const secp256k1_fe fe_minus_one = fe_p_m1; |
3314 | 3320 |
|
3315 | 3321 | /* These tests test the following identities: |
3316 | 3322 | * |
@@ -3377,8 +3383,7 @@ static void run_inverse_tests(void) |
3377 | 3383 | {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1), |
3378 | 3384 | SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1)}, |
3379 | 3385 | /* -1 */ |
3380 | | - {SECP256K1_FE_CONST(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffe, 0xfffffc2e), |
3381 | | - SECP256K1_FE_CONST(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffe, 0xfffffc2e)}, |
| 3386 | + {EX_FE_P_M1, EX_FE_P_M1}, |
3382 | 3387 | /* 2 */ |
3383 | 3388 | {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 2), |
3384 | 3389 | SECP256K1_FE_CONST(0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffe18)}, |
@@ -3482,8 +3487,7 @@ static void run_inverse_tests(void) |
3482 | 3487 | {SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1), |
3483 | 3488 | SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1)}, |
3484 | 3489 | /* -1 */ |
3485 | | - {SECP256K1_SCALAR_CONST(0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffe, 0xbaaedce6, 0xaf48a03b, 0xbfd25e8c, 0xd0364140), |
3486 | | - SECP256K1_SCALAR_CONST(0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffe, 0xbaaedce6, 0xaf48a03b, 0xbfd25e8c, 0xd0364140)}, |
| 3490 | + {EX_SCALAR_N_M1, EX_SCALAR_N_M1}, |
3487 | 3491 | /* 2 */ |
3488 | 3492 | {SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 2), |
3489 | 3493 | SECP256K1_SCALAR_CONST(0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5d576e73, 0x57a4501d, 0xdfe92f46, 0x681b20a1)}, |
@@ -7649,10 +7653,7 @@ static void fe_storage_cmov_test(void) { |
7649 | 7653 | } |
7650 | 7654 |
|
7651 | 7655 | static void scalar_cmov_test(void) { |
7652 | | - static const secp256k1_scalar max = SECP256K1_SCALAR_CONST( |
7653 | | - 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, |
7654 | | - 0xBAAEDCE6UL, 0xAF48A03BUL, 0xBFD25E8CUL, 0xD0364140UL |
7655 | | - ); |
| 7656 | + const secp256k1_scalar max = scalar_n_m1; |
7656 | 7657 | secp256k1_scalar r = max; |
7657 | 7658 | secp256k1_scalar a = secp256k1_scalar_zero; |
7658 | 7659 |
|
|
0 commit comments