Skip to content

Commit d31d8c0

Browse files
committed
test: deduplicate scalar and field constants for n-1 and p-1
1 parent 1d146ac commit d31d8c0

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

src/tests.c

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,21 @@
4242
static secp256k1_context *CTX = NULL;
4343
static secp256k1_context *STATIC_CTX = NULL;
4444

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+
4560
static int all_bytes_equal(const void* s, unsigned char value, size_t n) {
4661
const unsigned char *p = s;
4762
size_t i;
@@ -2195,10 +2210,7 @@ static void run_scalar_set_b32_seckey_tests(void) {
21952210

21962211
static void test_scalar_check_overflow(void) {
21972212
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;
22022214
const secp256k1_scalar n = SECP256K1_SCALAR_CONST(
22032215
0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL,
22042216
0xBAAEDCE6UL, 0xAF48A03BUL, 0xBFD25E8CUL, 0xD0364141UL
@@ -2284,7 +2296,7 @@ static void run_scalar_tests(void) {
22842296
/* 1 */
22852297
SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1),
22862298
/* -1 */
2287-
SECP256K1_SCALAR_CONST(0xfffffffful, 0xfffffffful, 0xfffffffful, 0xfffffffeul, 0xbaaedce6ul, 0xaf48a03bul, 0xbfd25e8cul, 0xd0364140ul),
2299+
scalar_n_m1,
22882300
/* -2 (largest odd value) */
22892301
SECP256K1_SCALAR_CONST(0xfffffffful, 0xfffffffful, 0xfffffffful, 0xfffffffeul, 0xbaaedce6ul, 0xaf48a03bul, 0xbfd25e8cul, 0xd036413Ful),
22902302
/* Half the secp256k1 order */
@@ -3302,15 +3314,9 @@ static void run_sqrt(void) {
33023314

33033315
/***** FIELD/SCALAR INVERSE TESTS *****/
33043316

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;
33093318

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;
33143320

33153321
/* These tests test the following identities:
33163322
*
@@ -3377,8 +3383,7 @@ static void run_inverse_tests(void)
33773383
{SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1),
33783384
SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1)},
33793385
/* -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},
33823387
/* 2 */
33833388
{SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 2),
33843389
SECP256K1_FE_CONST(0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffe18)},
@@ -3482,8 +3487,7 @@ static void run_inverse_tests(void)
34823487
{SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1),
34833488
SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1)},
34843489
/* -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},
34873491
/* 2 */
34883492
{SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 2),
34893493
SECP256K1_SCALAR_CONST(0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5d576e73, 0x57a4501d, 0xdfe92f46, 0x681b20a1)},
@@ -7649,10 +7653,7 @@ static void fe_storage_cmov_test(void) {
76497653
}
76507654

76517655
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;
76567657
secp256k1_scalar r = max;
76577658
secp256k1_scalar a = secp256k1_scalar_zero;
76587659

0 commit comments

Comments
 (0)