1*b0563631STom Van Eyck /*
2*b0563631STom Van Eyck * Elliptic curves over GF(p): curve-specific data and functions
3*b0563631STom Van Eyck *
4*b0563631STom Van Eyck * Copyright The Mbed TLS Contributors
5*b0563631STom Van Eyck * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6*b0563631STom Van Eyck */
7*b0563631STom Van Eyck
8*b0563631STom Van Eyck #include "common.h"
9*b0563631STom Van Eyck
10*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_WITH_MPI_UINT)
11*b0563631STom Van Eyck
12*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_LIGHT)
13*b0563631STom Van Eyck
14*b0563631STom Van Eyck #include "mbedtls/ecp.h"
15*b0563631STom Van Eyck #include "mbedtls/platform.h"
16*b0563631STom Van Eyck #include "mbedtls/platform_util.h"
17*b0563631STom Van Eyck #include "mbedtls/error.h"
18*b0563631STom Van Eyck
19*b0563631STom Van Eyck #include "mbedtls/platform.h"
20*b0563631STom Van Eyck
21*b0563631STom Van Eyck #include "constant_time_internal.h"
22*b0563631STom Van Eyck
23*b0563631STom Van Eyck #include "bn_mul.h"
24*b0563631STom Van Eyck #include "bignum_core.h"
25*b0563631STom Van Eyck #include "ecp_invasive.h"
26*b0563631STom Van Eyck
27*b0563631STom Van Eyck #include <string.h>
28*b0563631STom Van Eyck
29*b0563631STom Van Eyck #if !defined(MBEDTLS_ECP_ALT)
30*b0563631STom Van Eyck
31*b0563631STom Van Eyck #define ECP_MPI_INIT(_p, _n) { .p = (mbedtls_mpi_uint *) (_p), .s = 1, .n = (_n) }
32*b0563631STom Van Eyck
33*b0563631STom Van Eyck #define ECP_MPI_INIT_ARRAY(x) \
34*b0563631STom Van Eyck ECP_MPI_INIT(x, sizeof(x) / sizeof(mbedtls_mpi_uint))
35*b0563631STom Van Eyck
36*b0563631STom Van Eyck #define ECP_POINT_INIT_XY_Z0(x, y) { \
37*b0563631STom Van Eyck ECP_MPI_INIT_ARRAY(x), ECP_MPI_INIT_ARRAY(y), ECP_MPI_INIT(NULL, 0) }
38*b0563631STom Van Eyck #define ECP_POINT_INIT_XY_Z1(x, y) { \
39*b0563631STom Van Eyck ECP_MPI_INIT_ARRAY(x), ECP_MPI_INIT_ARRAY(y), ECP_MPI_INIT(mpi_one, 1) }
40*b0563631STom Van Eyck
41*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \
42*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \
43*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \
44*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) || \
45*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) || \
46*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) || \
47*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) || \
48*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) || \
49*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) || \
50*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) || \
51*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
52*b0563631STom Van Eyck /* For these curves, we build the group parameters dynamically. */
53*b0563631STom Van Eyck #define ECP_LOAD_GROUP
54*b0563631STom Van Eyck static mbedtls_mpi_uint mpi_one[] = { 1 };
55*b0563631STom Van Eyck #endif
56*b0563631STom Van Eyck
57*b0563631STom Van Eyck /*
58*b0563631STom Van Eyck * Note: the constants are in little-endian order
59*b0563631STom Van Eyck * to be directly usable in MPIs
60*b0563631STom Van Eyck */
61*b0563631STom Van Eyck
62*b0563631STom Van Eyck /*
63*b0563631STom Van Eyck * Domain parameters for secp192r1
64*b0563631STom Van Eyck */
65*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
66*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_p[] = {
67*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
68*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
69*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
70*b0563631STom Van Eyck };
71*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_b[] = {
72*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xB9, 0x46, 0xC1, 0xEC, 0xDE, 0xB8, 0xFE),
73*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0x30, 0x24, 0x72, 0xAB, 0xE9, 0xA7, 0x0F),
74*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x80, 0x9C, 0xE5, 0x19, 0x05, 0x21, 0x64),
75*b0563631STom Van Eyck };
76*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_gx[] = {
77*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x10, 0xFF, 0x82, 0xFD, 0x0A, 0xFF, 0xF4),
78*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x88, 0xA1, 0x43, 0xEB, 0x20, 0xBF, 0x7C),
79*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x90, 0x30, 0xB0, 0x0E, 0xA8, 0x8D, 0x18),
80*b0563631STom Van Eyck };
81*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_gy[] = {
82*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x48, 0x79, 0x1E, 0xA1, 0x77, 0xF9, 0x73),
83*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xCD, 0x24, 0x6B, 0xED, 0x11, 0x10, 0x63),
84*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xDA, 0xC8, 0xFF, 0x95, 0x2B, 0x19, 0x07),
85*b0563631STom Van Eyck };
86*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_n[] = {
87*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x28, 0xD2, 0xB4, 0xB1, 0xC9, 0x6B, 0x14),
88*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xF8, 0xDE, 0x99, 0xFF, 0xFF, 0xFF, 0xFF),
89*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
90*b0563631STom Van Eyck };
91*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
92*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_0_X[] = {
93*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x10, 0xFF, 0x82, 0xFD, 0x0A, 0xFF, 0xF4),
94*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x88, 0xA1, 0x43, 0xEB, 0x20, 0xBF, 0x7C),
95*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x90, 0x30, 0xB0, 0x0E, 0xA8, 0x8D, 0x18),
96*b0563631STom Van Eyck };
97*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_0_Y[] = {
98*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x48, 0x79, 0x1E, 0xA1, 0x77, 0xF9, 0x73),
99*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xCD, 0x24, 0x6B, 0xED, 0x11, 0x10, 0x63),
100*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xDA, 0xC8, 0xFF, 0x95, 0x2B, 0x19, 0x07),
101*b0563631STom Van Eyck };
102*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_1_X[] = {
103*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x9E, 0xE3, 0x60, 0x59, 0xD1, 0xC4, 0xC2),
104*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xBD, 0x22, 0xD7, 0x2D, 0x07, 0xBD, 0xB6),
105*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x2A, 0xCF, 0x33, 0xF0, 0xBE, 0xD1, 0xED),
106*b0563631STom Van Eyck };
107*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_1_Y[] = {
108*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x71, 0x4B, 0xA8, 0xED, 0x7E, 0xC9, 0x1A),
109*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x2A, 0xF6, 0xDF, 0x0E, 0xE8, 0x4C, 0x0F),
110*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x35, 0xF7, 0x8A, 0xC3, 0xEC, 0xDE, 0x1E),
111*b0563631STom Van Eyck };
112*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_2_X[] = {
113*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x67, 0xC2, 0x1D, 0x32, 0x8F, 0x10, 0xFB),
114*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x2D, 0x17, 0xF3, 0xE4, 0xFE, 0xD8, 0x13),
115*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x45, 0x10, 0x70, 0x2C, 0x3E, 0x52, 0x3E),
116*b0563631STom Van Eyck };
117*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_2_Y[] = {
118*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xF1, 0x04, 0x5D, 0xEE, 0xD4, 0x56, 0xE6),
119*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xB7, 0x38, 0x27, 0x61, 0xAA, 0x81, 0x87),
120*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x37, 0xD7, 0x0E, 0x29, 0x0E, 0x11, 0x14),
121*b0563631STom Van Eyck };
122*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_3_X[] = {
123*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x35, 0x52, 0xC6, 0x31, 0xB7, 0x27, 0xF5),
124*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xD4, 0x15, 0x98, 0x0F, 0xE7, 0xF3, 0x6A),
125*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x31, 0x70, 0x35, 0x09, 0xA0, 0x2B, 0xC2),
126*b0563631STom Van Eyck };
127*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_3_Y[] = {
128*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x75, 0xA7, 0x4C, 0x88, 0xCF, 0x5B, 0xE4),
129*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x17, 0x48, 0x8D, 0xF2, 0xF0, 0x86, 0xED),
130*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xCF, 0xFE, 0x6B, 0xB0, 0xA5, 0x06, 0xAB),
131*b0563631STom Van Eyck };
132*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_4_X[] = {
133*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x6A, 0xDC, 0x9A, 0x6D, 0x7B, 0x47, 0x2E),
134*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0xFC, 0x51, 0x12, 0x62, 0x66, 0x0B, 0x59),
135*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x40, 0x93, 0xA0, 0xB5, 0x5A, 0x58, 0xD7),
136*b0563631STom Van Eyck };
137*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_4_Y[] = {
138*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0xCB, 0xAF, 0xDC, 0x0B, 0xA1, 0x26, 0xFB),
139*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x36, 0x9D, 0xA3, 0xD7, 0x3B, 0xAD, 0x39),
140*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x3B, 0x05, 0x9A, 0xA8, 0xAA, 0x69, 0xB2),
141*b0563631STom Van Eyck };
142*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_5_X[] = {
143*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xD9, 0xD1, 0x4D, 0x4A, 0x6E, 0x96, 0x1E),
144*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x66, 0x32, 0x39, 0xC6, 0x57, 0x7D, 0xE6),
145*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xA0, 0x36, 0xC2, 0x45, 0xF9, 0x00, 0x62),
146*b0563631STom Van Eyck };
147*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_5_Y[] = {
148*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xEF, 0x59, 0x46, 0xDC, 0x60, 0xD9, 0x8F),
149*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xB0, 0xE9, 0x41, 0xA4, 0x87, 0x76, 0x89),
150*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0xD4, 0x0E, 0xB2, 0xFA, 0x16, 0x56, 0xDC),
151*b0563631STom Van Eyck };
152*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_6_X[] = {
153*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x62, 0xD2, 0xB1, 0x34, 0xB2, 0xF1, 0x06),
154*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xED, 0x55, 0xC5, 0x47, 0xB5, 0x07, 0x15),
155*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xF6, 0x2F, 0x94, 0xC3, 0xDD, 0x54, 0x2F),
156*b0563631STom Van Eyck };
157*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_6_Y[] = {
158*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xA6, 0xD4, 0x8C, 0xA9, 0xCE, 0x4D, 0x2E),
159*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x4B, 0x46, 0xCC, 0xB2, 0x55, 0xC8, 0xB2),
160*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xAE, 0x31, 0xED, 0x89, 0x65, 0x59, 0x55),
161*b0563631STom Van Eyck };
162*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_7_X[] = {
163*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x0A, 0xD1, 0x1A, 0xC5, 0xF6, 0xEA, 0x43),
164*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xFC, 0x0C, 0x1A, 0xFB, 0xA0, 0xC8, 0x70),
165*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xFD, 0x53, 0x6F, 0x6D, 0xBF, 0xBA, 0xAF),
166*b0563631STom Van Eyck };
167*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_7_Y[] = {
168*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xB0, 0x7D, 0x83, 0x96, 0xE3, 0xCB, 0x9D),
169*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x6E, 0x55, 0x2C, 0x20, 0x53, 0x2F, 0x46),
170*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0x66, 0x00, 0x17, 0x08, 0xFE, 0xAC, 0x31),
171*b0563631STom Van Eyck };
172*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_8_X[] = {
173*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x12, 0x97, 0x3A, 0xC7, 0x57, 0x45, 0xCD),
174*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x25, 0x99, 0x00, 0xF6, 0x97, 0xB4, 0x64),
175*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x74, 0xE6, 0xE6, 0xA3, 0xDF, 0x9C, 0xCC),
176*b0563631STom Van Eyck };
177*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_8_Y[] = {
178*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xF4, 0x76, 0xD5, 0x5F, 0x2A, 0xFD, 0x85),
179*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x80, 0x7E, 0x3E, 0xE5, 0xE8, 0xD6, 0x63),
180*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xAD, 0x1E, 0x70, 0x79, 0x3E, 0x3D, 0x83),
181*b0563631STom Van Eyck };
182*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_9_X[] = {
183*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x15, 0xBB, 0xB3, 0x42, 0x6A, 0xA1, 0x7C),
184*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x58, 0xCB, 0x43, 0x25, 0x00, 0x14, 0x68),
185*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x4E, 0x93, 0x11, 0xE0, 0x32, 0x54, 0x98),
186*b0563631STom Van Eyck };
187*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_9_Y[] = {
188*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x52, 0xA2, 0xB4, 0x57, 0x32, 0xB9, 0x11),
189*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x43, 0xA1, 0xB1, 0xFB, 0x01, 0xE1, 0xE7),
190*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xFB, 0x5A, 0x11, 0xB8, 0xC2, 0x03, 0xE5),
191*b0563631STom Van Eyck };
192*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_10_X[] = {
193*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x2B, 0x71, 0x26, 0x4E, 0x7C, 0xC5, 0x32),
194*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xF5, 0xD3, 0xA8, 0xE4, 0x95, 0x48, 0x65),
195*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xAE, 0xD9, 0x5D, 0x9F, 0x6A, 0x22, 0xAD),
196*b0563631STom Van Eyck };
197*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_10_Y[] = {
198*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0xCC, 0xA3, 0x4D, 0xA0, 0x1C, 0x34, 0xEF),
199*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x3C, 0x62, 0xF8, 0x5E, 0xA6, 0x58, 0x7D),
200*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x6E, 0x66, 0x8A, 0x3D, 0x17, 0xFF, 0x0F),
201*b0563631STom Van Eyck };
202*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_11_X[] = {
203*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xCD, 0xA8, 0xDD, 0xD1, 0x20, 0x5C, 0xEA),
204*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0xFE, 0x17, 0xE2, 0xCF, 0xEA, 0x63, 0xDE),
205*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x51, 0xC9, 0x16, 0xDE, 0xB4, 0xB2, 0xDD),
206*b0563631STom Van Eyck };
207*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_11_Y[] = {
208*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xBE, 0x12, 0xD7, 0xA3, 0x0A, 0x50, 0x33),
209*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0x87, 0xC5, 0x8A, 0x76, 0x57, 0x07, 0x60),
210*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x1F, 0xC6, 0x1B, 0x66, 0xC4, 0x3D, 0x8A),
211*b0563631STom Van Eyck };
212*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_12_X[] = {
213*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xA4, 0x85, 0x13, 0x8F, 0xA7, 0x35, 0x19),
214*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x0D, 0xFD, 0xFF, 0x1B, 0xD1, 0xD6, 0xEF),
215*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x7A, 0xD0, 0xC3, 0xB4, 0xEF, 0x39, 0x66),
216*b0563631STom Van Eyck };
217*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_12_Y[] = {
218*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xFE, 0xA5, 0x9C, 0x34, 0x30, 0x49, 0x40),
219*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0xC5, 0x39, 0x26, 0x06, 0xE3, 0x01, 0x17),
220*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x2B, 0x66, 0xFC, 0x95, 0x5F, 0x35, 0xF7),
221*b0563631STom Van Eyck };
222*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_13_X[] = {
223*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xCF, 0x54, 0x63, 0x99, 0x57, 0x05, 0x45),
224*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x6F, 0x00, 0x5F, 0x65, 0x08, 0x47, 0x98),
225*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x2A, 0x90, 0x6D, 0x67, 0xC6, 0xBC, 0x45),
226*b0563631STom Van Eyck };
227*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_13_Y[] = {
228*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x4D, 0x88, 0x0A, 0x35, 0x9E, 0x33, 0x9C),
229*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x17, 0x0C, 0xF8, 0xE1, 0x7A, 0x49, 0x02),
230*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x44, 0x06, 0x8F, 0x0B, 0x70, 0x2F, 0x71),
231*b0563631STom Van Eyck };
232*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_14_X[] = {
233*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x4B, 0xCB, 0xF9, 0x8E, 0x6A, 0xDA, 0x1B),
234*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x43, 0xA1, 0x3F, 0xCE, 0x17, 0xD2, 0x32),
235*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x0D, 0xD2, 0x6C, 0x82, 0x37, 0xE5, 0xFC),
236*b0563631STom Van Eyck };
237*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_14_Y[] = {
238*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x3C, 0xF4, 0x92, 0xB4, 0x8A, 0x95, 0x85),
239*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x96, 0xF1, 0x0A, 0x34, 0x2F, 0x74, 0x7E),
240*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xA1, 0xAA, 0xBA, 0x86, 0x77, 0x4F, 0xA2),
241*b0563631STom Van Eyck };
242*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_15_X[] = {
243*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x7F, 0xEF, 0x60, 0x50, 0x80, 0xD7, 0xD4),
244*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0xAC, 0xC9, 0xFE, 0xEC, 0x0A, 0x1A, 0x9F),
245*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x2F, 0xBE, 0x91, 0xD7, 0xB7, 0x38, 0x48),
246*b0563631STom Van Eyck };
247*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192r1_T_15_Y[] = {
248*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xAE, 0x85, 0x98, 0xFE, 0x05, 0x7F, 0x9F),
249*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xBE, 0xFD, 0x11, 0x31, 0x3D, 0x14, 0x13),
250*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x75, 0xE8, 0x30, 0x01, 0xCB, 0x9B, 0x1C),
251*b0563631STom Van Eyck };
252*b0563631STom Van Eyck static const mbedtls_ecp_point secp192r1_T[16] = {
253*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp192r1_T_0_X, secp192r1_T_0_Y),
254*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_1_X, secp192r1_T_1_Y),
255*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_2_X, secp192r1_T_2_Y),
256*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_3_X, secp192r1_T_3_Y),
257*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_4_X, secp192r1_T_4_Y),
258*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_5_X, secp192r1_T_5_Y),
259*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_6_X, secp192r1_T_6_Y),
260*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_7_X, secp192r1_T_7_Y),
261*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_8_X, secp192r1_T_8_Y),
262*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_9_X, secp192r1_T_9_Y),
263*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_10_X, secp192r1_T_10_Y),
264*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_11_X, secp192r1_T_11_Y),
265*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_12_X, secp192r1_T_12_Y),
266*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_13_X, secp192r1_T_13_Y),
267*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_14_X, secp192r1_T_14_Y),
268*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192r1_T_15_X, secp192r1_T_15_Y),
269*b0563631STom Van Eyck };
270*b0563631STom Van Eyck #else
271*b0563631STom Van Eyck #define secp192r1_T NULL
272*b0563631STom Van Eyck #endif
273*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
274*b0563631STom Van Eyck
275*b0563631STom Van Eyck /*
276*b0563631STom Van Eyck * Domain parameters for secp224r1
277*b0563631STom Van Eyck */
278*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
279*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_p[] = {
280*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
281*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
282*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
283*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00),
284*b0563631STom Van Eyck };
285*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_b[] = {
286*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xFF, 0x55, 0x23, 0x43, 0x39, 0x0B, 0x27),
287*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xD8, 0xBF, 0xD7, 0xB7, 0xB0, 0x44, 0x50),
288*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0x32, 0x41, 0xF5, 0xAB, 0xB3, 0x04, 0x0C),
289*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_4(0x85, 0x0A, 0x05, 0xB4),
290*b0563631STom Van Eyck };
291*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_gx[] = {
292*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x1D, 0x5C, 0x11, 0xD6, 0x80, 0x32, 0x34),
293*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x11, 0xC2, 0x56, 0xD3, 0xC1, 0x03, 0x4A),
294*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x90, 0x13, 0x32, 0x7F, 0xBF, 0xB4, 0x6B),
295*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_4(0xBD, 0x0C, 0x0E, 0xB7),
296*b0563631STom Van Eyck };
297*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_gy[] = {
298*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x7E, 0x00, 0x85, 0x99, 0x81, 0xD5, 0x44),
299*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x47, 0x07, 0x5A, 0xA0, 0x75, 0x43, 0xCD),
300*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xDF, 0x22, 0x4C, 0xFB, 0x23, 0xF7, 0xB5),
301*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_4(0x88, 0x63, 0x37, 0xBD),
302*b0563631STom Van Eyck };
303*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_n[] = {
304*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x2A, 0x5C, 0x5C, 0x45, 0x29, 0xDD, 0x13),
305*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xF0, 0xB8, 0xE0, 0xA2, 0x16, 0xFF, 0xFF),
306*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
307*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_4(0xFF, 0xFF, 0xFF, 0xFF),
308*b0563631STom Van Eyck };
309*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
310*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_0_X[] = {
311*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x1D, 0x5C, 0x11, 0xD6, 0x80, 0x32, 0x34),
312*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x11, 0xC2, 0x56, 0xD3, 0xC1, 0x03, 0x4A),
313*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x90, 0x13, 0x32, 0x7F, 0xBF, 0xB4, 0x6B),
314*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x0C, 0x0E, 0xB7, 0x00, 0x00, 0x00, 0x00),
315*b0563631STom Van Eyck };
316*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_0_Y[] = {
317*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x7E, 0x00, 0x85, 0x99, 0x81, 0xD5, 0x44),
318*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x47, 0x07, 0x5A, 0xA0, 0x75, 0x43, 0xCD),
319*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xDF, 0x22, 0x4C, 0xFB, 0x23, 0xF7, 0xB5),
320*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x63, 0x37, 0xBD, 0x00, 0x00, 0x00, 0x00),
321*b0563631STom Van Eyck };
322*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_1_X[] = {
323*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xF9, 0xB8, 0xD0, 0x3D, 0xD2, 0xD3, 0xFA),
324*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xFD, 0x99, 0x26, 0x19, 0xFE, 0x13, 0x6E),
325*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x0E, 0x4C, 0x48, 0x7C, 0xA2, 0x17, 0x01),
326*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xA3, 0x13, 0x57, 0x00, 0x00, 0x00, 0x00),
327*b0563631STom Van Eyck };
328*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_1_Y[] = {
329*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x16, 0x5C, 0x8F, 0xAA, 0xED, 0x0F, 0x58),
330*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0xC5, 0x43, 0x34, 0x93, 0x05, 0x2A, 0x4C),
331*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0xE3, 0x6C, 0xCA, 0xC6, 0x14, 0xC2, 0x25),
332*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x43, 0x6C, 0xD7, 0x00, 0x00, 0x00, 0x00),
333*b0563631STom Van Eyck };
334*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_2_X[] = {
335*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x5A, 0x98, 0x1E, 0xC8, 0xA5, 0x42, 0xA3),
336*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x49, 0x56, 0x78, 0xF8, 0xEF, 0xED, 0x65),
337*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0xBB, 0x64, 0xB6, 0x4C, 0x54, 0x5F, 0xD1),
338*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x0C, 0x33, 0xCC, 0x00, 0x00, 0x00, 0x00),
339*b0563631STom Van Eyck };
340*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_2_Y[] = {
341*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x79, 0xCB, 0x2E, 0x08, 0xFF, 0xD8, 0xE6),
342*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0x1F, 0xD4, 0xD7, 0x57, 0xE9, 0x39, 0x45),
343*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xD6, 0x3B, 0x0A, 0x1C, 0x87, 0xB7, 0x6A),
344*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x30, 0xD8, 0x05, 0x00, 0x00, 0x00, 0x00),
345*b0563631STom Van Eyck };
346*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_3_X[] = {
347*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x79, 0x74, 0x9A, 0xE6, 0xBB, 0xC2, 0xC2),
348*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x5B, 0xA6, 0x67, 0xC1, 0x91, 0xE7, 0x64),
349*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xDF, 0x38, 0x82, 0x19, 0x2C, 0x4C, 0xCA),
350*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x2E, 0x39, 0xC5, 0x00, 0x00, 0x00, 0x00),
351*b0563631STom Van Eyck };
352*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_3_Y[] = {
353*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x36, 0x78, 0x4E, 0xAE, 0x5B, 0x02, 0x76),
354*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xF6, 0x8B, 0xF8, 0xF4, 0x92, 0x6B, 0x42),
355*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x4D, 0x71, 0x35, 0xE7, 0x0C, 0x2C, 0x98),
356*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xA5, 0x1F, 0xAE, 0x00, 0x00, 0x00, 0x00),
357*b0563631STom Van Eyck };
358*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_4_X[] = {
359*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x1C, 0x4B, 0xDF, 0x5B, 0xF2, 0x51, 0xB7),
360*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x74, 0xB1, 0x5A, 0xC6, 0x0F, 0x0E, 0x61),
361*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x24, 0x09, 0x62, 0xAF, 0xFC, 0xDB, 0x45),
362*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0xE1, 0x80, 0x55, 0x00, 0x00, 0x00, 0x00),
363*b0563631STom Van Eyck };
364*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_4_Y[] = {
365*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x82, 0xFE, 0xAD, 0xC3, 0xE5, 0xCF, 0xD8),
366*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xA2, 0x62, 0x17, 0x76, 0xF0, 0x5A, 0xFA),
367*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xB8, 0xE5, 0xAC, 0xB7, 0x66, 0x38, 0xAA),
368*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0xFD, 0x86, 0x05, 0x00, 0x00, 0x00, 0x00),
369*b0563631STom Van Eyck };
370*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_5_X[] = {
371*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xD3, 0x0C, 0x3C, 0xD1, 0x66, 0xB0, 0xF1),
372*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x59, 0xB4, 0x8D, 0x90, 0x10, 0xB7, 0xA2),
373*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x47, 0x9B, 0xE6, 0x55, 0x8A, 0xE4, 0xEE),
374*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x49, 0xDB, 0x78, 0x00, 0x00, 0x00, 0x00),
375*b0563631STom Van Eyck };
376*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_5_Y[] = {
377*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x97, 0xED, 0xDE, 0xFF, 0xB3, 0xDF, 0x48),
378*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xB9, 0x83, 0xB7, 0xEB, 0xBE, 0x40, 0x8D),
379*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xD3, 0xD3, 0xCD, 0x0E, 0x82, 0x79, 0x3D),
380*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x83, 0x1B, 0xF0, 0x00, 0x00, 0x00, 0x00),
381*b0563631STom Van Eyck };
382*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_6_X[] = {
383*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x22, 0xBB, 0x54, 0xD3, 0x31, 0x56, 0xFC),
384*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x36, 0xE5, 0xE0, 0x89, 0x96, 0x8E, 0x71),
385*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0xEF, 0x0A, 0xED, 0xD0, 0x11, 0x4A, 0xFF),
386*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x00, 0x57, 0x27, 0x00, 0x00, 0x00, 0x00),
387*b0563631STom Van Eyck };
388*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_6_Y[] = {
389*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0xCA, 0x3D, 0xF7, 0x64, 0x9B, 0x6E, 0x85),
390*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xE3, 0x70, 0x6B, 0x41, 0xD7, 0xED, 0x8F),
391*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x44, 0x44, 0x80, 0xCE, 0x13, 0x37, 0x92),
392*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x73, 0x80, 0x79, 0x00, 0x00, 0x00, 0x00),
393*b0563631STom Van Eyck };
394*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_7_X[] = {
395*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x4D, 0x70, 0x7D, 0x31, 0x0F, 0x1C, 0x58),
396*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x35, 0x88, 0x47, 0xC4, 0x24, 0x78, 0x3F),
397*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xF0, 0xCD, 0x91, 0x81, 0xB3, 0xDE, 0xB6),
398*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xCE, 0xC6, 0xF7, 0x00, 0x00, 0x00, 0x00),
399*b0563631STom Van Eyck };
400*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_7_Y[] = {
401*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x9C, 0x2D, 0xE8, 0xD2, 0x00, 0x8F, 0x10),
402*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x5E, 0x7C, 0x0E, 0x0C, 0x6E, 0x58, 0x02),
403*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x81, 0x21, 0xCE, 0x43, 0xF4, 0x24, 0x3D),
404*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0xBC, 0xF0, 0xF4, 0x00, 0x00, 0x00, 0x00),
405*b0563631STom Van Eyck };
406*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_8_X[] = {
407*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x10, 0xC2, 0x74, 0x4A, 0x8F, 0x8A, 0xCF),
408*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x67, 0xF4, 0x2B, 0x38, 0x2B, 0x35, 0x17),
409*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xE7, 0x0C, 0xA9, 0xFA, 0x77, 0x5C, 0xBD),
410*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x33, 0x19, 0x2B, 0x00, 0x00, 0x00, 0x00),
411*b0563631STom Van Eyck };
412*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_8_Y[] = {
413*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x3E, 0x96, 0x22, 0x53, 0xE1, 0xE9, 0xBE),
414*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x13, 0xBC, 0xA1, 0x16, 0xEC, 0x01, 0x1A),
415*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x00, 0xC9, 0x7A, 0xC3, 0x73, 0xA5, 0x45),
416*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0xF4, 0x5E, 0xC1, 0x00, 0x00, 0x00, 0x00),
417*b0563631STom Van Eyck };
418*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_9_X[] = {
419*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x95, 0xD6, 0xD9, 0x32, 0x30, 0x2B, 0xD0),
420*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x42, 0x09, 0x05, 0x61, 0x2A, 0x7E, 0x82),
421*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x84, 0xA2, 0x05, 0x88, 0x64, 0x65, 0xF9),
422*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x2D, 0x90, 0xB3, 0x00, 0x00, 0x00, 0x00),
423*b0563631STom Van Eyck };
424*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_9_Y[] = {
425*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xE7, 0x2E, 0x85, 0x55, 0x80, 0x7C, 0x79),
426*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xC1, 0xAC, 0x78, 0xB4, 0xAF, 0xFB, 0x6E),
427*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0xC3, 0x28, 0x8E, 0x79, 0x18, 0x1F, 0x58),
428*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x46, 0xCF, 0x49, 0x00, 0x00, 0x00, 0x00),
429*b0563631STom Van Eyck };
430*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_10_X[] = {
431*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x5F, 0xA8, 0x6C, 0x46, 0x83, 0x43, 0xFA),
432*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xA9, 0x93, 0x11, 0xB6, 0x07, 0x57, 0x74),
433*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x2A, 0x9D, 0x03, 0x89, 0x7E, 0xD7, 0x3C),
434*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x8C, 0x62, 0xCF, 0x00, 0x00, 0x00, 0x00),
435*b0563631STom Van Eyck };
436*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_10_Y[] = {
437*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0x2C, 0x13, 0x59, 0xCC, 0xFA, 0x84, 0x9E),
438*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xB9, 0x48, 0xBC, 0x57, 0xC7, 0xB3, 0x7C),
439*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x0A, 0x38, 0x24, 0x2E, 0x3A, 0x28, 0x25),
440*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x0A, 0x43, 0xB8, 0x00, 0x00, 0x00, 0x00),
441*b0563631STom Van Eyck };
442*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_11_X[] = {
443*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x25, 0xAB, 0xC1, 0xEE, 0x70, 0x3C, 0xE1),
444*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0xDB, 0x45, 0x1D, 0x4A, 0x80, 0x75, 0x35),
445*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x1F, 0x4D, 0x2D, 0x9A, 0x05, 0xF4, 0xCB),
446*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x10, 0xF0, 0x5A, 0x00, 0x00, 0x00, 0x00),
447*b0563631STom Van Eyck };
448*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_11_Y[] = {
449*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x95, 0xE1, 0xDC, 0x15, 0x86, 0xC3, 0x7B),
450*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0xDC, 0x27, 0xD1, 0x56, 0xA1, 0x14, 0x0D),
451*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x0B, 0xD6, 0x77, 0x4E, 0x44, 0xA2, 0xF8),
452*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x42, 0x71, 0x1F, 0x00, 0x00, 0x00, 0x00),
453*b0563631STom Van Eyck };
454*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_12_X[] = {
455*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x86, 0xB2, 0xB0, 0xC8, 0x2F, 0x7B, 0xFE),
456*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xEF, 0xCB, 0xDB, 0xBC, 0x9E, 0x3B, 0xC5),
457*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x03, 0x86, 0xDD, 0x5B, 0xF5, 0x8D, 0x46),
458*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x95, 0x79, 0xD6, 0x00, 0x00, 0x00, 0x00),
459*b0563631STom Van Eyck };
460*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_12_Y[] = {
461*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x32, 0x14, 0xDA, 0x9B, 0x4F, 0x07, 0x39),
462*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x3E, 0xFB, 0x06, 0xEE, 0xA7, 0x40, 0x40),
463*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x1F, 0xDF, 0x71, 0x61, 0xFD, 0x8B, 0xBE),
464*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x8B, 0xAB, 0x8B, 0x00, 0x00, 0x00, 0x00),
465*b0563631STom Van Eyck };
466*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_13_X[] = {
467*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x34, 0xB3, 0xB4, 0xBC, 0x9F, 0xB0, 0x5E),
468*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x58, 0x48, 0xA8, 0x77, 0xBB, 0x13, 0x2F),
469*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xC6, 0xF7, 0x34, 0xCC, 0x89, 0x21, 0x0A),
470*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x33, 0xDD, 0x1F, 0x00, 0x00, 0x00, 0x00),
471*b0563631STom Van Eyck };
472*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_13_Y[] = {
473*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x81, 0xEF, 0xA4, 0xF2, 0x10, 0x0B, 0xCD),
474*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xF7, 0x6E, 0x72, 0x4A, 0xDF, 0xDD, 0xE8),
475*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x23, 0x0A, 0x53, 0x03, 0x16, 0x62, 0xD2),
476*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x76, 0xFD, 0x3C, 0x00, 0x00, 0x00, 0x00),
477*b0563631STom Van Eyck };
478*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_14_X[] = {
479*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x14, 0xA1, 0xFA, 0xA0, 0x18, 0xBE, 0x07),
480*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x2A, 0xE1, 0xD7, 0xB0, 0x6C, 0xA0, 0xDE),
481*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xC0, 0xB0, 0xC6, 0x63, 0x24, 0xCD, 0x4E),
482*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x38, 0x2C, 0xB1, 0x00, 0x00, 0x00, 0x00),
483*b0563631STom Van Eyck };
484*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_14_Y[] = {
485*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xCD, 0x7D, 0x20, 0x0C, 0xFE, 0xAC, 0xC3),
486*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x97, 0x9F, 0xA2, 0xB6, 0x45, 0xF7, 0x7B),
487*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x99, 0xF3, 0xD2, 0x20, 0x02, 0xEB, 0x04),
488*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x18, 0x5B, 0x7B, 0x00, 0x00, 0x00, 0x00),
489*b0563631STom Van Eyck };
490*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_15_X[] = {
491*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xDD, 0x77, 0x91, 0x60, 0xEA, 0xFD, 0xD3),
492*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xD3, 0xB5, 0xD6, 0x90, 0x17, 0x0E, 0x1A),
493*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0xF4, 0x28, 0xC1, 0xF2, 0x53, 0xF6, 0x63),
494*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0x58, 0xDC, 0x61, 0x00, 0x00, 0x00, 0x00),
495*b0563631STom Van Eyck };
496*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224r1_T_15_Y[] = {
497*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x20, 0x01, 0xFB, 0xF1, 0xBD, 0x5F, 0x45),
498*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x7F, 0x06, 0xDA, 0x11, 0xCB, 0xBA, 0xA6),
499*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x41, 0x00, 0xA4, 0x1B, 0x30, 0x33, 0x79),
500*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0xFF, 0x27, 0xCA, 0x00, 0x00, 0x00, 0x00),
501*b0563631STom Van Eyck };
502*b0563631STom Van Eyck static const mbedtls_ecp_point secp224r1_T[16] = {
503*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp224r1_T_0_X, secp224r1_T_0_Y),
504*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_1_X, secp224r1_T_1_Y),
505*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_2_X, secp224r1_T_2_Y),
506*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_3_X, secp224r1_T_3_Y),
507*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_4_X, secp224r1_T_4_Y),
508*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_5_X, secp224r1_T_5_Y),
509*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_6_X, secp224r1_T_6_Y),
510*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_7_X, secp224r1_T_7_Y),
511*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_8_X, secp224r1_T_8_Y),
512*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_9_X, secp224r1_T_9_Y),
513*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_10_X, secp224r1_T_10_Y),
514*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_11_X, secp224r1_T_11_Y),
515*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_12_X, secp224r1_T_12_Y),
516*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_13_X, secp224r1_T_13_Y),
517*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_14_X, secp224r1_T_14_Y),
518*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224r1_T_15_X, secp224r1_T_15_Y),
519*b0563631STom Van Eyck };
520*b0563631STom Van Eyck #else
521*b0563631STom Van Eyck #define secp224r1_T NULL
522*b0563631STom Van Eyck #endif
523*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
524*b0563631STom Van Eyck
525*b0563631STom Van Eyck /*
526*b0563631STom Van Eyck * Domain parameters for secp256r1
527*b0563631STom Van Eyck */
528*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
529*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_p[] = {
530*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
531*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00),
532*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
533*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
534*b0563631STom Van Eyck };
535*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_b[] = {
536*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x60, 0xD2, 0x27, 0x3E, 0x3C, 0xCE, 0x3B),
537*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xB0, 0x53, 0xCC, 0xB0, 0x06, 0x1D, 0x65),
538*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x86, 0x98, 0x76, 0x55, 0xBD, 0xEB, 0xB3),
539*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x93, 0x3A, 0xAA, 0xD8, 0x35, 0xC6, 0x5A),
540*b0563631STom Van Eyck };
541*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_gx[] = {
542*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xC2, 0x98, 0xD8, 0x45, 0x39, 0xA1, 0xF4),
543*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x33, 0xEB, 0x2D, 0x81, 0x7D, 0x03, 0x77),
544*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x40, 0xA4, 0x63, 0xE5, 0xE6, 0xBC, 0xF8),
545*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x42, 0x2C, 0xE1, 0xF2, 0xD1, 0x17, 0x6B),
546*b0563631STom Van Eyck };
547*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_gy[] = {
548*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x51, 0xBF, 0x37, 0x68, 0x40, 0xB6, 0xCB),
549*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0x5E, 0x31, 0x6B, 0x57, 0x33, 0xCE, 0x2B),
550*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x9E, 0x0F, 0x7C, 0x4A, 0xEB, 0xE7, 0x8E),
551*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x7F, 0x1A, 0xFE, 0xE2, 0x42, 0xE3, 0x4F),
552*b0563631STom Van Eyck };
553*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_n[] = {
554*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x25, 0x63, 0xFC, 0xC2, 0xCA, 0xB9, 0xF3),
555*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x9E, 0x17, 0xA7, 0xAD, 0xFA, 0xE6, 0xBC),
556*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
557*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
558*b0563631STom Van Eyck };
559*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
560*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_0_X[] = {
561*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xC2, 0x98, 0xD8, 0x45, 0x39, 0xA1, 0xF4),
562*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x33, 0xEB, 0x2D, 0x81, 0x7D, 0x03, 0x77),
563*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x40, 0xA4, 0x63, 0xE5, 0xE6, 0xBC, 0xF8),
564*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x42, 0x2C, 0xE1, 0xF2, 0xD1, 0x17, 0x6B),
565*b0563631STom Van Eyck };
566*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_0_Y[] = {
567*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x51, 0xBF, 0x37, 0x68, 0x40, 0xB6, 0xCB),
568*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0x5E, 0x31, 0x6B, 0x57, 0x33, 0xCE, 0x2B),
569*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x9E, 0x0F, 0x7C, 0x4A, 0xEB, 0xE7, 0x8E),
570*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x7F, 0x1A, 0xFE, 0xE2, 0x42, 0xE3, 0x4F),
571*b0563631STom Van Eyck };
572*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_1_X[] = {
573*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xC8, 0xBA, 0x04, 0xB7, 0x4B, 0xD2, 0xF7),
574*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0xC6, 0x23, 0x3A, 0xA0, 0x09, 0x3A, 0x59),
575*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x9D, 0x4C, 0xF9, 0x58, 0x23, 0xCC, 0xDF),
576*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0xED, 0x7B, 0x29, 0x87, 0x0F, 0xFA, 0x3C),
577*b0563631STom Van Eyck };
578*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_1_Y[] = {
579*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x69, 0xF2, 0x40, 0x0B, 0xA3, 0x98, 0xCE),
580*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xA8, 0x48, 0x02, 0x0D, 0x1C, 0x12, 0x62),
581*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xAF, 0x09, 0x83, 0x80, 0xAA, 0x58, 0xA7),
582*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x12, 0xBE, 0x70, 0x94, 0x76, 0xE3, 0xE4),
583*b0563631STom Van Eyck };
584*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_2_X[] = {
585*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x7D, 0xEF, 0x86, 0xFF, 0xE3, 0x37, 0xDD),
586*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x86, 0x8B, 0x08, 0x27, 0x7C, 0xD7, 0xF6),
587*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x54, 0x4C, 0x25, 0x4F, 0x9A, 0xFE, 0x28),
588*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xFD, 0xF0, 0x6D, 0x37, 0x03, 0x69, 0xD6),
589*b0563631STom Van Eyck };
590*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_2_Y[] = {
591*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xD5, 0xDA, 0xAD, 0x92, 0x49, 0xF0, 0x9F),
592*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x73, 0x43, 0x9E, 0xAF, 0xA7, 0xD1, 0xF3),
593*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x41, 0x07, 0xDF, 0x78, 0x95, 0x3E, 0xA1),
594*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x3D, 0xD1, 0xE6, 0x3C, 0xA5, 0xE2, 0x20),
595*b0563631STom Van Eyck };
596*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_3_X[] = {
597*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x6A, 0x5D, 0x52, 0x35, 0xD7, 0xBF, 0xAE),
598*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0xA2, 0xBE, 0x96, 0xF4, 0xF8, 0x02, 0xC3),
599*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x20, 0x49, 0x54, 0xEA, 0xB3, 0x82, 0xDB),
600*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0xDB, 0xEA, 0x02, 0xD1, 0x75, 0x1C, 0x62),
601*b0563631STom Van Eyck };
602*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_3_Y[] = {
603*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x85, 0xF4, 0x9E, 0x4C, 0xDC, 0x39, 0x89),
604*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x6D, 0xC4, 0x57, 0xD8, 0x03, 0x5D, 0x22),
605*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x7F, 0x2D, 0x52, 0x6F, 0xC9, 0xDA, 0x4F),
606*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x64, 0xFA, 0xB4, 0xFE, 0xA4, 0xC4, 0xD7),
607*b0563631STom Van Eyck };
608*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_4_X[] = {
609*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x37, 0xB9, 0xC0, 0xAA, 0x59, 0xC6, 0x8B),
610*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x58, 0xD9, 0xED, 0x58, 0x99, 0x65, 0xF7),
611*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x7D, 0x26, 0x8C, 0x4A, 0xF9, 0x05, 0x9F),
612*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x73, 0x9A, 0xC9, 0xE7, 0x46, 0xDC, 0x00),
613*b0563631STom Van Eyck };
614*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_4_Y[] = {
615*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xD0, 0x55, 0xDF, 0x00, 0x0A, 0xF5, 0x4A),
616*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0xBF, 0x56, 0x81, 0x2D, 0x20, 0xEB, 0xB5),
617*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xC1, 0x28, 0x52, 0xAB, 0xE3, 0xD1, 0x40),
618*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x34, 0x79, 0x45, 0x57, 0xA5, 0x12, 0x03),
619*b0563631STom Van Eyck };
620*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_5_X[] = {
621*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xCF, 0xB8, 0x7E, 0xF7, 0x92, 0x96, 0x8D),
622*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x01, 0x8C, 0x0D, 0x23, 0xF2, 0xE3, 0x05),
623*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x2E, 0xE3, 0x84, 0x52, 0x7A, 0x34, 0x76),
624*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xA1, 0xB0, 0x15, 0x90, 0xE2, 0x53, 0x3C),
625*b0563631STom Van Eyck };
626*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_5_Y[] = {
627*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x98, 0xE7, 0xFA, 0xA5, 0x7D, 0x8B, 0x53),
628*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x35, 0xD2, 0x00, 0xD1, 0x1B, 0x9F, 0x1B),
629*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x69, 0x08, 0x9A, 0x72, 0xF0, 0xA9, 0x11),
630*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0xFE, 0x0E, 0x14, 0xDA, 0x7C, 0x0E, 0xD3),
631*b0563631STom Van Eyck };
632*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_6_X[] = {
633*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xF6, 0xE8, 0xF8, 0x87, 0xF7, 0xFC, 0x6D),
634*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xBE, 0x7F, 0x3F, 0x7A, 0x2B, 0xD7, 0x13),
635*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0x32, 0xF2, 0x2D, 0x94, 0x6D, 0x42, 0xFD),
636*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x9A, 0xE3, 0x5F, 0x42, 0xBB, 0x84, 0xED),
637*b0563631STom Van Eyck };
638*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_6_Y[] = {
639*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x95, 0x29, 0x73, 0xA1, 0x67, 0x3E, 0x02),
640*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x30, 0x54, 0x35, 0x8E, 0x0A, 0xDD, 0x67),
641*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xD7, 0xA1, 0x97, 0x61, 0x3B, 0xF8, 0x0C),
642*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x33, 0x3C, 0x58, 0x55, 0x34, 0x23, 0xA3),
643*b0563631STom Van Eyck };
644*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_7_X[] = {
645*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x5D, 0x16, 0x5F, 0x7B, 0xBC, 0xBB, 0xCE),
646*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xEE, 0x4E, 0x8A, 0xC1, 0x51, 0xCC, 0x50),
647*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x0D, 0x4D, 0x1B, 0x53, 0x23, 0x1D, 0xB3),
648*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x2A, 0x38, 0x66, 0x52, 0x84, 0xE1, 0x95),
649*b0563631STom Van Eyck };
650*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_7_Y[] = {
651*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x9B, 0x83, 0x0A, 0x81, 0x4F, 0xAD, 0xAC),
652*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xFF, 0x42, 0x41, 0x6E, 0xA9, 0xA2, 0xA0),
653*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xA1, 0x4F, 0x1F, 0x89, 0x82, 0xAA, 0x3E),
654*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0xB8, 0x0F, 0x6B, 0x8F, 0x8C, 0xD6, 0x68),
655*b0563631STom Van Eyck };
656*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_8_X[] = {
657*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0xB3, 0xBB, 0x51, 0x69, 0xA2, 0x11, 0x93),
658*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x4F, 0x0F, 0x8D, 0xBD, 0x26, 0x0F, 0xE8),
659*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xCB, 0xEC, 0x6B, 0x34, 0xC3, 0x3D, 0x9D),
660*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x5D, 0x1E, 0x10, 0xD5, 0x44, 0xE2, 0x54),
661*b0563631STom Van Eyck };
662*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_8_Y[] = {
663*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x9E, 0xB1, 0xF1, 0x6E, 0x4C, 0xAD, 0xB3),
664*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xE3, 0xC2, 0x58, 0xC0, 0xFB, 0x34, 0x43),
665*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x9C, 0xDF, 0x35, 0x07, 0x41, 0xBD, 0x19),
666*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x6E, 0x10, 0xEC, 0x0E, 0xEC, 0xBB, 0xD6),
667*b0563631STom Van Eyck };
668*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_9_X[] = {
669*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xCF, 0xEF, 0x3F, 0x83, 0x1A, 0x88, 0xE8),
670*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x29, 0xB5, 0xB9, 0xE0, 0xC9, 0xA3, 0xAE),
671*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x46, 0x1E, 0x77, 0xCD, 0x7E, 0xB3, 0x10),
672*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x21, 0xD0, 0xD4, 0xA3, 0x16, 0x08, 0xEE),
673*b0563631STom Van Eyck };
674*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_9_Y[] = {
675*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0xCA, 0xA8, 0xB3, 0xBF, 0x29, 0x99, 0x8E),
676*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xF2, 0x05, 0xC1, 0xCF, 0x5D, 0x91, 0x48),
677*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x01, 0x49, 0xDB, 0x82, 0xDF, 0x5F, 0x3A),
678*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x06, 0x90, 0xAD, 0xE3, 0x38, 0xA4, 0xC4),
679*b0563631STom Van Eyck };
680*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_10_X[] = {
681*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xD2, 0x3A, 0xE8, 0x03, 0xC5, 0x6D, 0x5D),
682*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x35, 0xD0, 0xAE, 0x1D, 0x7A, 0x9F, 0xCA),
683*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x1E, 0xD2, 0xCB, 0xAC, 0x88, 0x27, 0x55),
684*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xB9, 0x9C, 0xE0, 0x31, 0xDD, 0x99, 0x86),
685*b0563631STom Van Eyck };
686*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_10_Y[] = {
687*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xF9, 0x9B, 0x32, 0x96, 0x41, 0x58, 0x38),
688*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x5A, 0x2A, 0xB8, 0x96, 0x0E, 0xB2, 0x4C),
689*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x78, 0x2C, 0xC7, 0x08, 0x99, 0x19, 0x24),
690*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x59, 0x28, 0xE9, 0x84, 0x54, 0xE6, 0x16),
691*b0563631STom Van Eyck };
692*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_11_X[] = {
693*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x38, 0x30, 0xDB, 0x70, 0x2C, 0x0A, 0xA2),
694*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x5C, 0x9D, 0xE9, 0xD5, 0x46, 0x0B, 0x5F),
695*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x0B, 0x60, 0x4B, 0x37, 0x7D, 0xB9, 0xC9),
696*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x24, 0xF3, 0x3D, 0x79, 0x7F, 0x6C, 0x18),
697*b0563631STom Van Eyck };
698*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_11_Y[] = {
699*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7F, 0xE5, 0x1C, 0x4F, 0x60, 0x24, 0xF7, 0x2A),
700*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xD8, 0xE2, 0x91, 0x7F, 0x89, 0x49, 0x92),
701*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0xA7, 0x2E, 0x8D, 0x6A, 0xB3, 0x39, 0x81),
702*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x89, 0xB5, 0x9A, 0xB8, 0x8D, 0x42, 0x9C),
703*b0563631STom Van Eyck };
704*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_12_X[] = {
705*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0x45, 0xE6, 0x4B, 0x3F, 0x4F, 0x1E, 0x1F),
706*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x65, 0x5E, 0x59, 0x22, 0xCC, 0x72, 0x5F),
707*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x93, 0x1A, 0x27, 0x1E, 0x34, 0xC5, 0x5B),
708*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0xF2, 0xA5, 0x58, 0x5C, 0x15, 0x2E, 0xC6),
709*b0563631STom Van Eyck };
710*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_12_Y[] = {
711*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x7F, 0xBA, 0x58, 0x5A, 0x84, 0x6F, 0x5F),
712*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xA6, 0x36, 0x7E, 0xDC, 0xF7, 0xE1, 0x67),
713*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x4D, 0xAA, 0xEE, 0x57, 0x76, 0x3A, 0xD3),
714*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x7E, 0x26, 0x18, 0x22, 0x23, 0x9F, 0xFF),
715*b0563631STom Van Eyck };
716*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_13_X[] = {
717*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x4C, 0x64, 0xC7, 0x55, 0x02, 0x3F, 0xE3),
718*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x02, 0x90, 0xBB, 0xC3, 0xEC, 0x30, 0x40),
719*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x6F, 0x64, 0xF4, 0x16, 0x69, 0x48, 0xA4),
720*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x44, 0x9C, 0x95, 0x0C, 0x7D, 0x67, 0x5E),
721*b0563631STom Van Eyck };
722*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_13_Y[] = {
723*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0x91, 0x8B, 0xD8, 0xD0, 0xD7, 0xE7, 0xE2),
724*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xF9, 0x48, 0x62, 0x6F, 0xA8, 0x93, 0x5D),
725*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x3A, 0x99, 0x02, 0xD5, 0x0B, 0x3D, 0xE3),
726*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xD3, 0x00, 0x31, 0xE6, 0x0C, 0x9F, 0x44),
727*b0563631STom Van Eyck };
728*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_14_X[] = {
729*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xB2, 0xAA, 0xFD, 0x88, 0x15, 0xDF, 0x52),
730*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0x35, 0x27, 0x31, 0x44, 0xCD, 0xC0, 0x68),
731*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xF8, 0x91, 0xA5, 0x71, 0x94, 0x84, 0x2A),
732*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xCB, 0xD0, 0x93, 0xE9, 0x88, 0xDA, 0xE4),
733*b0563631STom Van Eyck };
734*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_14_Y[] = {
735*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xC6, 0x39, 0x16, 0x5D, 0xA3, 0x1E, 0x6D),
736*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x07, 0x37, 0x26, 0x36, 0x2A, 0xFE, 0x60),
737*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xBC, 0xF3, 0xD0, 0xDE, 0x50, 0xFC, 0x97),
738*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x2E, 0x06, 0x10, 0x15, 0x4D, 0xFA, 0xF7),
739*b0563631STom Van Eyck };
740*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_15_X[] = {
741*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x65, 0x69, 0x5B, 0x66, 0xA2, 0x75, 0x2E),
742*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x16, 0x00, 0x5A, 0xB0, 0x30, 0x25, 0x1A),
743*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xFB, 0x86, 0x42, 0x80, 0xC1, 0xC4, 0x76),
744*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x1D, 0x83, 0x8E, 0x94, 0x01, 0x5F, 0x82),
745*b0563631STom Van Eyck };
746*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256r1_T_15_Y[] = {
747*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x37, 0x70, 0xEF, 0x1F, 0xA1, 0xF0, 0xDB),
748*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x10, 0x5B, 0xCE, 0xC4, 0x9B, 0x6F, 0x10),
749*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x11, 0x11, 0x24, 0x4F, 0x4C, 0x79, 0x61),
750*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x3A, 0x72, 0xBC, 0xFE, 0x72, 0x58, 0x43),
751*b0563631STom Van Eyck };
752*b0563631STom Van Eyck static const mbedtls_ecp_point secp256r1_T[16] = {
753*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp256r1_T_0_X, secp256r1_T_0_Y),
754*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_1_X, secp256r1_T_1_Y),
755*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_2_X, secp256r1_T_2_Y),
756*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_3_X, secp256r1_T_3_Y),
757*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_4_X, secp256r1_T_4_Y),
758*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_5_X, secp256r1_T_5_Y),
759*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_6_X, secp256r1_T_6_Y),
760*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_7_X, secp256r1_T_7_Y),
761*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_8_X, secp256r1_T_8_Y),
762*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_9_X, secp256r1_T_9_Y),
763*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_10_X, secp256r1_T_10_Y),
764*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_11_X, secp256r1_T_11_Y),
765*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_12_X, secp256r1_T_12_Y),
766*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_13_X, secp256r1_T_13_Y),
767*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_14_X, secp256r1_T_14_Y),
768*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256r1_T_15_X, secp256r1_T_15_Y),
769*b0563631STom Van Eyck };
770*b0563631STom Van Eyck #else
771*b0563631STom Van Eyck #define secp256r1_T NULL
772*b0563631STom Van Eyck #endif
773*b0563631STom Van Eyck
774*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
775*b0563631STom Van Eyck
776*b0563631STom Van Eyck /*
777*b0563631STom Van Eyck * Domain parameters for secp384r1
778*b0563631STom Van Eyck */
779*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
780*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_p[] = {
781*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00),
782*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
783*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
784*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
785*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
786*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
787*b0563631STom Van Eyck };
788*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_b[] = {
789*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x2A, 0xEC, 0xD3, 0xED, 0xC8, 0x85, 0x2A),
790*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xD1, 0x2E, 0x8A, 0x8D, 0x39, 0x56, 0xC6),
791*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x87, 0x13, 0x50, 0x8F, 0x08, 0x14, 0x03),
792*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x41, 0x81, 0xFE, 0x6E, 0x9C, 0x1D, 0x18),
793*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x2D, 0xF8, 0xE3, 0x6B, 0x05, 0x8E, 0x98),
794*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0xE7, 0x3E, 0xE2, 0xA7, 0x2F, 0x31, 0xB3),
795*b0563631STom Van Eyck };
796*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_gx[] = {
797*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x0A, 0x76, 0x72, 0x38, 0x5E, 0x54, 0x3A),
798*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x29, 0x55, 0xBF, 0x5D, 0xF2, 0x02, 0x55),
799*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x2A, 0x54, 0x82, 0xE0, 0x41, 0xF7, 0x59),
800*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x9B, 0xA7, 0x8B, 0x62, 0x3B, 0x1D, 0x6E),
801*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xAD, 0x20, 0xF3, 0x1E, 0xC7, 0xB1, 0x8E),
802*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x05, 0x8B, 0xBE, 0x22, 0xCA, 0x87, 0xAA),
803*b0563631STom Van Eyck };
804*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_gy[] = {
805*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x0E, 0xEA, 0x90, 0x7C, 0x1D, 0x43, 0x7A),
806*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x81, 0x7E, 0x1D, 0xCE, 0xB1, 0x60, 0x0A),
807*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xB8, 0xF0, 0xB5, 0x13, 0x31, 0xDA, 0xE9),
808*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x14, 0x9A, 0x28, 0xBD, 0x1D, 0xF4, 0xF8),
809*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xDC, 0x92, 0x92, 0xBF, 0x98, 0x9E, 0x5D),
810*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x2C, 0x26, 0x96, 0x4A, 0xDE, 0x17, 0x36),
811*b0563631STom Van Eyck };
812*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_n[] = {
813*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x29, 0xC5, 0xCC, 0x6A, 0x19, 0xEC, 0xEC),
814*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xA7, 0xB0, 0x48, 0xB2, 0x0D, 0x1A, 0x58),
815*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x2D, 0x37, 0xF4, 0x81, 0x4D, 0x63, 0xC7),
816*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
817*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
818*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
819*b0563631STom Van Eyck };
820*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
821*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_0_X[] = {
822*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x0A, 0x76, 0x72, 0x38, 0x5E, 0x54, 0x3A),
823*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x29, 0x55, 0xBF, 0x5D, 0xF2, 0x02, 0x55),
824*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x2A, 0x54, 0x82, 0xE0, 0x41, 0xF7, 0x59),
825*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x9B, 0xA7, 0x8B, 0x62, 0x3B, 0x1D, 0x6E),
826*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xAD, 0x20, 0xF3, 0x1E, 0xC7, 0xB1, 0x8E),
827*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x05, 0x8B, 0xBE, 0x22, 0xCA, 0x87, 0xAA),
828*b0563631STom Van Eyck };
829*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_0_Y[] = {
830*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x0E, 0xEA, 0x90, 0x7C, 0x1D, 0x43, 0x7A),
831*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x81, 0x7E, 0x1D, 0xCE, 0xB1, 0x60, 0x0A),
832*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xB8, 0xF0, 0xB5, 0x13, 0x31, 0xDA, 0xE9),
833*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x14, 0x9A, 0x28, 0xBD, 0x1D, 0xF4, 0xF8),
834*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xDC, 0x92, 0x92, 0xBF, 0x98, 0x9E, 0x5D),
835*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x2C, 0x26, 0x96, 0x4A, 0xDE, 0x17, 0x36),
836*b0563631STom Van Eyck };
837*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_1_X[] = {
838*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x92, 0x00, 0x2C, 0x78, 0xDB, 0x1F, 0x37),
839*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xF3, 0xEB, 0xB7, 0x06, 0xF7, 0xB6, 0xBC),
840*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xBC, 0x2C, 0xCF, 0xD8, 0xED, 0x53, 0xE7),
841*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x75, 0x7B, 0xA3, 0xAB, 0xC3, 0x2C, 0x85),
842*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x9D, 0x78, 0x41, 0xF6, 0x76, 0x84, 0xAC),
843*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x56, 0xE8, 0x52, 0xB3, 0xCB, 0xA8, 0xBD),
844*b0563631STom Van Eyck };
845*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_1_Y[] = {
846*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xF2, 0xAE, 0xA4, 0xB6, 0x89, 0x1B, 0xDA),
847*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x0F, 0xCE, 0x1C, 0x7C, 0xF6, 0x50, 0x4C),
848*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0xEB, 0x90, 0xE6, 0x4D, 0xC7, 0xD4, 0x7A),
849*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x49, 0x2D, 0x8A, 0x01, 0x99, 0x60, 0x94),
850*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x80, 0x9B, 0x9B, 0x6A, 0xB0, 0x07, 0xD9),
851*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xA2, 0xEE, 0x59, 0xBE, 0x95, 0xBC, 0x23),
852*b0563631STom Van Eyck };
853*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_2_X[] = {
854*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x9D, 0x56, 0xAE, 0x59, 0xFB, 0x1F, 0x98),
855*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xAC, 0x91, 0x80, 0x87, 0xA8, 0x6E, 0x58),
856*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x08, 0xA7, 0x08, 0x94, 0x32, 0xFC, 0x67),
857*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x29, 0x9E, 0x84, 0xF4, 0xE5, 0x6E, 0x7E),
858*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x21, 0xB9, 0x50, 0x24, 0xF8, 0x9C, 0xC7),
859*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x04, 0x01, 0xC2, 0xFB, 0x77, 0x3E, 0xDE),
860*b0563631STom Van Eyck };
861*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_2_Y[] = {
862*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x38, 0xEE, 0xE3, 0xC7, 0x9D, 0xEC, 0xA6),
863*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x88, 0xCF, 0x43, 0xFA, 0x92, 0x5E, 0x8E),
864*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xCA, 0x43, 0xF8, 0x3B, 0x49, 0x7E, 0x75),
865*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xE7, 0xEB, 0x17, 0x45, 0x86, 0xC2, 0xE1),
866*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x69, 0x57, 0x32, 0xE0, 0x9C, 0xD1, 0x00),
867*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x10, 0xB8, 0x4D, 0xB8, 0xF4, 0x0D, 0xE3),
868*b0563631STom Van Eyck };
869*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_3_X[] = {
870*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0xDC, 0x9A, 0xB2, 0x79, 0x39, 0x27, 0x16),
871*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x71, 0xE4, 0x3B, 0x4D, 0x60, 0x0C, 0xA3),
872*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xBD, 0x19, 0x40, 0xFA, 0x19, 0x2A, 0x5A),
873*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xF8, 0x1E, 0x43, 0xA1, 0x50, 0x8D, 0xEF),
874*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x18, 0x7C, 0x41, 0xFA, 0x7C, 0x1B, 0x58),
875*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x59, 0x24, 0xC4, 0xE9, 0xB7, 0xD3, 0xAD),
876*b0563631STom Van Eyck };
877*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_3_Y[] = {
878*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x01, 0x3D, 0x63, 0x54, 0x45, 0x6F, 0xB7),
879*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xB2, 0x19, 0xA3, 0x86, 0x1D, 0x42, 0x34),
880*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x02, 0x87, 0x18, 0x92, 0x52, 0x1A, 0x71),
881*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x18, 0xB1, 0x5D, 0x18, 0x1B, 0x37, 0xFE),
882*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x74, 0x61, 0xBA, 0x18, 0xAF, 0x40, 0x30),
883*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x7D, 0x3C, 0x52, 0x0F, 0x07, 0xB0, 0x6F),
884*b0563631STom Van Eyck };
885*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_4_X[] = {
886*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x39, 0x13, 0xAA, 0x60, 0x15, 0x99, 0x30),
887*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x00, 0xCB, 0xC6, 0xB1, 0xDB, 0x97, 0x90),
888*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xFA, 0x60, 0xB8, 0x24, 0xE4, 0x7D, 0xD3),
889*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x75, 0xB3, 0x70, 0xB2, 0x83, 0xB1, 0x9B),
890*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xE3, 0x6C, 0xCD, 0x33, 0x62, 0x7A, 0x56),
891*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x30, 0xDC, 0x0F, 0x9F, 0xBB, 0xB8, 0xAA),
892*b0563631STom Van Eyck };
893*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_4_Y[] = {
894*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xD5, 0x0A, 0x60, 0x81, 0xB9, 0xC5, 0x16),
895*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0xAA, 0x2F, 0xD6, 0xF2, 0x73, 0xDF, 0xEB),
896*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x7B, 0x74, 0xC9, 0xB3, 0x5B, 0x95, 0x6D),
897*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x04, 0xEB, 0x15, 0xC8, 0x5F, 0x00, 0xF6),
898*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x50, 0x20, 0x28, 0xD1, 0x01, 0xAF, 0xF0),
899*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x6D, 0x4F, 0x31, 0x81, 0x2F, 0x94, 0x48),
900*b0563631STom Van Eyck };
901*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_5_X[] = {
902*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x2F, 0xD8, 0xB6, 0x63, 0x7C, 0xE9, 0x50),
903*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x8C, 0xB9, 0x14, 0xD9, 0x37, 0x63, 0xDE),
904*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x02, 0xB8, 0x46, 0xAD, 0xCE, 0x7B, 0x38),
905*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x47, 0x2D, 0x66, 0xA7, 0xE9, 0x33, 0x23),
906*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xF9, 0x93, 0x94, 0xA8, 0x48, 0xB3, 0x4F),
907*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x4A, 0xAC, 0x51, 0x08, 0x72, 0x2F, 0x1A),
908*b0563631STom Van Eyck };
909*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_5_Y[] = {
910*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0xAD, 0xA0, 0xF9, 0x81, 0xE1, 0x78, 0x97),
911*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x9A, 0x63, 0xD8, 0xBA, 0x79, 0x1A, 0x17),
912*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x31, 0x7B, 0x7A, 0x5A, 0x5D, 0x7D, 0x2D),
913*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x96, 0x12, 0x4B, 0x19, 0x09, 0xE0, 0xB7),
914*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x8A, 0x57, 0xEE, 0x4E, 0x6E, 0x7E, 0xEC),
915*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x9D, 0x69, 0xDC, 0xB3, 0xDA, 0xD8, 0x08),
916*b0563631STom Van Eyck };
917*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_6_X[] = {
918*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x49, 0x03, 0x03, 0x33, 0x6F, 0x28, 0x4A),
919*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xDB, 0xA7, 0x05, 0x8C, 0xF3, 0x4D, 0xFB),
920*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x92, 0xB1, 0xA8, 0xEC, 0x0D, 0x64, 0x3B),
921*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0xFC, 0xFD, 0xD0, 0x4B, 0x88, 0x1B, 0x5D),
922*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x9C, 0x51, 0x69, 0xCE, 0x71, 0x73, 0xF5),
923*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x5A, 0x14, 0x23, 0x1A, 0x46, 0x63, 0x5F),
924*b0563631STom Van Eyck };
925*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_6_Y[] = {
926*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x4C, 0x70, 0x44, 0x18, 0xCD, 0xEF, 0xED),
927*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x49, 0xDD, 0x64, 0x7E, 0x7E, 0x4D, 0x92),
928*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x32, 0x7C, 0x09, 0xD0, 0x3F, 0xD6, 0x2C),
929*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xE0, 0x4F, 0x65, 0x0C, 0x7A, 0x54, 0x3E),
930*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xFA, 0xFB, 0x4A, 0xB4, 0x79, 0x5A, 0x8C),
931*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x5D, 0x1B, 0x2B, 0xDA, 0xBC, 0x9A, 0x74),
932*b0563631STom Van Eyck };
933*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_7_X[] = {
934*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xAC, 0x56, 0xF7, 0x5F, 0x51, 0x68, 0x0B),
935*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xE0, 0x1D, 0xBC, 0x13, 0x4E, 0xAC, 0x03),
936*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xF5, 0xC5, 0xE6, 0xD2, 0x88, 0xBA, 0xCB),
937*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x0E, 0x28, 0x23, 0x58, 0x67, 0xFA, 0xEE),
938*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x80, 0x4B, 0xD8, 0xC4, 0xDF, 0x15, 0xE4),
939*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x0E, 0x58, 0xE6, 0x2C, 0x59, 0xC2, 0x03),
940*b0563631STom Van Eyck };
941*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_7_Y[] = {
942*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x26, 0x27, 0x99, 0x16, 0x2B, 0x22, 0x0B),
943*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xF3, 0x8F, 0xC3, 0x2A, 0x9B, 0xFC, 0x38),
944*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x2E, 0x83, 0x3D, 0xFE, 0x9E, 0x3C, 0x1B),
945*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x57, 0xCD, 0x2D, 0xC1, 0x49, 0x38, 0xB5),
946*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x42, 0x8B, 0x33, 0x89, 0x1F, 0xEA, 0x01),
947*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x1D, 0x13, 0xD7, 0x50, 0xBB, 0x3E, 0xEB),
948*b0563631STom Van Eyck };
949*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_8_X[] = {
950*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x9A, 0x52, 0xD2, 0x54, 0x7C, 0x97, 0xF2),
951*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x33, 0x6E, 0xED, 0xD9, 0x87, 0x50, 0xC5),
952*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x35, 0x7E, 0x16, 0x40, 0x15, 0x83, 0xB8),
953*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x2B, 0xA4, 0xAB, 0x03, 0x91, 0xEA, 0xFE),
954*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x47, 0x39, 0xEF, 0x05, 0x59, 0xD0, 0x90),
955*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x24, 0x0D, 0x76, 0x11, 0x53, 0x08, 0xAF),
956*b0563631STom Van Eyck };
957*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_8_Y[] = {
958*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x2F, 0xDD, 0xBD, 0x50, 0x48, 0xB1, 0xE5),
959*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x1C, 0x84, 0x55, 0x78, 0x14, 0xEB, 0xF6),
960*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x5E, 0x3E, 0xA6, 0xAF, 0xF6, 0xC7, 0x04),
961*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x11, 0xE2, 0x65, 0xCA, 0x41, 0x95, 0x3B),
962*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x83, 0xD8, 0xE6, 0x4D, 0x22, 0x06, 0x2D),
963*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x7F, 0x25, 0x2A, 0xAA, 0x28, 0x46, 0x97),
964*b0563631STom Van Eyck };
965*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_9_X[] = {
966*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xDB, 0x15, 0x56, 0x84, 0xCB, 0xC0, 0x56),
967*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xDB, 0x0E, 0x08, 0xC9, 0xF5, 0xD4, 0x9E),
968*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x62, 0xD0, 0x1A, 0x7C, 0x13, 0xD5, 0x07),
969*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xAD, 0x53, 0xE0, 0x32, 0x21, 0xA0, 0xC0),
970*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x38, 0x81, 0x21, 0x23, 0x0E, 0xD2, 0xBB),
971*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x51, 0x05, 0xD0, 0x1E, 0x82, 0xA9, 0x71),
972*b0563631STom Van Eyck };
973*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_9_Y[] = {
974*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xC3, 0x27, 0xBF, 0xC6, 0xAA, 0xB7, 0xB9),
975*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x65, 0x45, 0xDF, 0xB9, 0x46, 0x17, 0x46),
976*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x38, 0x3F, 0xB2, 0xB1, 0x5D, 0xCA, 0x1C),
977*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x29, 0x6C, 0x63, 0xE9, 0xD7, 0x48, 0xB8),
978*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xF1, 0xD7, 0x99, 0x8C, 0xC2, 0x05, 0x99),
979*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xE6, 0x5E, 0x82, 0x6D, 0xE5, 0x7E, 0xD5),
980*b0563631STom Van Eyck };
981*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_10_X[] = {
982*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x61, 0xFA, 0x7D, 0x01, 0xDB, 0xB6, 0x63),
983*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xC6, 0x58, 0x39, 0xF4, 0xC6, 0x82, 0x23),
984*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x5A, 0x7A, 0x80, 0x08, 0xCD, 0xAA, 0xD8),
985*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x8C, 0xC6, 0x3F, 0x3C, 0xA5, 0x68, 0xF4),
986*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xF5, 0xD5, 0x17, 0xAE, 0x36, 0xD8, 0x8A),
987*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xAD, 0x92, 0xC5, 0x57, 0x6C, 0xDA, 0x91),
988*b0563631STom Van Eyck };
989*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_10_Y[] = {
990*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x67, 0x17, 0xC0, 0x40, 0x78, 0x8C, 0x84),
991*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x9F, 0xF4, 0xAA, 0xDA, 0x5C, 0x7E, 0xB2),
992*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xDB, 0x42, 0x3E, 0x72, 0x64, 0xA0, 0x67),
993*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xF9, 0x41, 0x17, 0x43, 0xE3, 0xE8, 0xA8),
994*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xDD, 0xCC, 0x43, 0x7E, 0x16, 0x05, 0x03),
995*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x4B, 0xCF, 0x48, 0x8F, 0x41, 0x90, 0xE5),
996*b0563631STom Van Eyck };
997*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_11_X[] = {
998*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x0C, 0x6B, 0x9D, 0x22, 0x04, 0xBC, 0x5C),
999*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x63, 0x79, 0x2F, 0x6A, 0x0E, 0x8A, 0xDE),
1000*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x67, 0x3F, 0x02, 0xB8, 0x91, 0x7F, 0x74),
1001*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x14, 0x64, 0xA0, 0x33, 0xF4, 0x6B, 0x50),
1002*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x44, 0x71, 0x87, 0xB8, 0x88, 0x3F, 0x45),
1003*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x2B, 0x85, 0x05, 0xC5, 0x44, 0x53, 0x15),
1004*b0563631STom Van Eyck };
1005*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_11_Y[] = {
1006*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x2B, 0xFE, 0xD1, 0x1C, 0x73, 0xE3, 0x2E),
1007*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x33, 0xA1, 0xD3, 0x69, 0x1C, 0x9D, 0xD2),
1008*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x5A, 0xBA, 0xB6, 0xAE, 0x1B, 0x94, 0x04),
1009*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x74, 0x90, 0x5C, 0x57, 0xB0, 0x3A, 0x45),
1010*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x2F, 0x93, 0x20, 0x24, 0x54, 0x1D, 0x8D),
1011*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x78, 0x9D, 0x71, 0x67, 0x5D, 0x49, 0x98),
1012*b0563631STom Van Eyck };
1013*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_12_X[] = {
1014*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0xC8, 0x0E, 0x11, 0x8D, 0xE0, 0x8F, 0x69),
1015*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x7F, 0x79, 0x6C, 0x5F, 0xB7, 0xBC, 0xB1),
1016*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xE1, 0x83, 0x3C, 0x12, 0xBB, 0xEE, 0x96),
1017*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xC2, 0xC4, 0x1B, 0x41, 0x71, 0xB9, 0x17),
1018*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0xEE, 0xBB, 0x1D, 0x89, 0x50, 0x88, 0xF2),
1019*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x1C, 0x55, 0x74, 0xEB, 0xDE, 0x92, 0x3F),
1020*b0563631STom Van Eyck };
1021*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_12_Y[] = {
1022*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x38, 0x92, 0x06, 0x19, 0xD0, 0xB3, 0xB2),
1023*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x99, 0x26, 0xA3, 0x5F, 0xE2, 0xC1, 0x81),
1024*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0xFC, 0xFD, 0xC3, 0xB6, 0x26, 0x24, 0x8F),
1025*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xAD, 0xE7, 0x49, 0xB7, 0x64, 0x4B, 0x96),
1026*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x4E, 0x95, 0xAD, 0x07, 0xFE, 0xB6, 0x30),
1027*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x15, 0xE7, 0x2D, 0x19, 0xA9, 0x08, 0x10),
1028*b0563631STom Van Eyck };
1029*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_13_X[] = {
1030*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xBD, 0xAC, 0x0A, 0x3F, 0x6B, 0xFF, 0xFA),
1031*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xE4, 0x74, 0x14, 0xD9, 0x70, 0x1D, 0x71),
1032*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xB0, 0x71, 0xBB, 0xD8, 0x18, 0x96, 0x2B),
1033*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0xB8, 0x19, 0x90, 0x80, 0xB5, 0xEE, 0x01),
1034*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x21, 0x20, 0xA6, 0x17, 0x48, 0x03, 0x6F),
1035*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x1D, 0xBB, 0x6D, 0x94, 0x20, 0x34, 0xF1),
1036*b0563631STom Van Eyck };
1037*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_13_Y[] = {
1038*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x82, 0x67, 0x4B, 0x8E, 0x4E, 0xBE, 0xE2),
1039*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xDA, 0x77, 0xF8, 0x23, 0x55, 0x2B, 0x2D),
1040*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x02, 0xDE, 0x25, 0x35, 0x2D, 0x74, 0x51),
1041*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x0C, 0xB8, 0x0B, 0x39, 0xBA, 0xAD, 0x04),
1042*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0x0E, 0x28, 0x4D, 0xE1, 0x3D, 0xE4, 0x1B),
1043*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xEC, 0x0A, 0xD4, 0xB8, 0xC4, 0x8D, 0xB0),
1044*b0563631STom Van Eyck };
1045*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_14_X[] = {
1046*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x68, 0xCE, 0xC2, 0x55, 0x4D, 0x0C, 0x6D),
1047*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x20, 0x93, 0x32, 0x90, 0xD6, 0xAE, 0x47),
1048*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x78, 0xAB, 0x43, 0x9E, 0xEB, 0x73, 0xAE),
1049*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x97, 0xC3, 0x83, 0xA6, 0x3C, 0xF1, 0xBF),
1050*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0x25, 0x25, 0x66, 0x08, 0x26, 0xFA, 0x4B),
1051*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xFB, 0x44, 0x5D, 0x82, 0xEC, 0x3B, 0xAC),
1052*b0563631STom Van Eyck };
1053*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_14_Y[] = {
1054*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x90, 0xEA, 0xB5, 0x04, 0x99, 0xD0, 0x69),
1055*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0xF2, 0x22, 0xA0, 0xEB, 0xFD, 0x45, 0x87),
1056*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xA4, 0x81, 0x32, 0xFC, 0xFA, 0xEE, 0x5B),
1057*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xBB, 0xA4, 0x6A, 0x77, 0x41, 0x5C, 0x1D),
1058*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x1E, 0xAA, 0x4F, 0xF0, 0x10, 0xB3, 0x50),
1059*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x74, 0x13, 0x14, 0x9E, 0x90, 0xD7, 0xE6),
1060*b0563631STom Van Eyck };
1061*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_15_X[] = {
1062*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0xBD, 0x70, 0x4F, 0xA8, 0xD1, 0x06, 0x2C),
1063*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x4E, 0x2E, 0x68, 0xFC, 0x35, 0xFA, 0x50),
1064*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x53, 0x75, 0xED, 0xF2, 0x5F, 0xC2, 0xEB),
1065*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x87, 0x6B, 0x9F, 0x05, 0xE2, 0x22, 0x93),
1066*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x1A, 0xA8, 0xB7, 0x03, 0x9E, 0x6D, 0x7C),
1067*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0xD0, 0x69, 0x88, 0xA8, 0x39, 0x9E, 0x3A),
1068*b0563631STom Van Eyck };
1069*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_15_Y[] = {
1070*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xEF, 0x68, 0xFE, 0xEC, 0x24, 0x08, 0x15),
1071*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x06, 0x4B, 0x92, 0x0D, 0xB7, 0x34, 0x74),
1072*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xF4, 0xDD, 0x1A, 0xA0, 0x4A, 0xE4, 0x45),
1073*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x63, 0x4F, 0x4F, 0xCE, 0xBB, 0xD6, 0xD3),
1074*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xEE, 0x8D, 0xDF, 0x3F, 0x73, 0xB7, 0xAC),
1075*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x06, 0xB6, 0x80, 0x4D, 0x81, 0xD9, 0x53),
1076*b0563631STom Van Eyck };
1077*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_16_X[] = {
1078*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0xF5, 0x13, 0xDF, 0x13, 0x19, 0x97, 0x94),
1079*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xF9, 0xB3, 0x33, 0x66, 0x82, 0x21, 0xFE),
1080*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xFC, 0x39, 0x16, 0x23, 0x43, 0x76, 0x0E),
1081*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x48, 0x25, 0xA1, 0x64, 0x95, 0x1C, 0x2F),
1082*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0xAC, 0x15, 0x57, 0xD9, 0xDE, 0xA0, 0x28),
1083*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x5F, 0xB8, 0x3D, 0x48, 0x91, 0x24, 0xCC),
1084*b0563631STom Van Eyck };
1085*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_16_Y[] = {
1086*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xF2, 0xC8, 0x54, 0xD1, 0x32, 0xBD, 0xC4),
1087*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x3B, 0xF0, 0xAA, 0x9D, 0xD8, 0xF4, 0x20),
1088*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0xC3, 0xBB, 0x6C, 0x66, 0xAC, 0x25, 0x2D),
1089*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x25, 0x10, 0xB2, 0xE1, 0x41, 0xDE, 0x1D),
1090*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xE8, 0x30, 0xB8, 0x37, 0xBC, 0x2A, 0x98),
1091*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x57, 0x01, 0x4A, 0x1E, 0x78, 0x9F, 0x85),
1092*b0563631STom Van Eyck };
1093*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_17_X[] = {
1094*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x19, 0xCD, 0x12, 0x0B, 0x51, 0x4F, 0x56),
1095*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x4B, 0x3D, 0x24, 0xA4, 0x16, 0x59, 0x05),
1096*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xEB, 0xD3, 0x59, 0x2E, 0x75, 0x7C, 0x01),
1097*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xB9, 0xB4, 0xA5, 0xD9, 0x2E, 0x29, 0x4C),
1098*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x16, 0x05, 0x75, 0x02, 0xB3, 0x06, 0xEE),
1099*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x7C, 0x9F, 0x79, 0x91, 0xF1, 0x4F, 0x23),
1100*b0563631STom Van Eyck };
1101*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_17_Y[] = {
1102*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x98, 0x7C, 0x84, 0xE1, 0xFF, 0x30, 0x77),
1103*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0xE2, 0xC2, 0x5F, 0x55, 0x40, 0xBD, 0xCD),
1104*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x65, 0x87, 0x3F, 0xC4, 0xC2, 0x24, 0x57),
1105*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0x30, 0x0A, 0x60, 0x15, 0xD1, 0x24, 0x48),
1106*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x99, 0xD9, 0xB6, 0xAE, 0xB1, 0xAF, 0x1D),
1107*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x80, 0xEE, 0xA2, 0x0F, 0x74, 0xB9, 0xF3),
1108*b0563631STom Van Eyck };
1109*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_18_X[] = {
1110*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xE6, 0x0F, 0x37, 0xC1, 0x10, 0x99, 0x1E),
1111*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xAD, 0x9D, 0x5D, 0x80, 0x01, 0xA6, 0xFE),
1112*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x0F, 0x10, 0x2A, 0x9D, 0x20, 0x38, 0xEB),
1113*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x60, 0xCB, 0xCE, 0x5A, 0xA0, 0xA7, 0x32),
1114*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xCF, 0x14, 0xDF, 0xBF, 0xE5, 0x74, 0x2D),
1115*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x12, 0x1A, 0xDD, 0x59, 0x02, 0x5D, 0xC6),
1116*b0563631STom Van Eyck };
1117*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_18_Y[] = {
1118*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xC9, 0xF8, 0xF5, 0xB6, 0x13, 0x4D, 0x7B),
1119*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x45, 0xB1, 0x93, 0xB3, 0xA2, 0x79, 0xDC),
1120*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xF6, 0xCF, 0xF7, 0xE6, 0x29, 0x9C, 0xCC),
1121*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x50, 0x65, 0x80, 0xBC, 0x59, 0x0A, 0x59),
1122*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xF0, 0x24, 0x35, 0xA2, 0x46, 0xF0, 0x0C),
1123*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x26, 0xC0, 0x9D, 0x61, 0x56, 0x62, 0x67),
1124*b0563631STom Van Eyck };
1125*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_19_X[] = {
1126*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xBB, 0xC2, 0x24, 0x43, 0x2E, 0x37, 0x54),
1127*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xF7, 0xCE, 0x35, 0xFC, 0x77, 0xF3, 0x3F),
1128*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x34, 0x96, 0xD5, 0x4A, 0x76, 0x9D, 0x6B),
1129*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x3B, 0x0F, 0xEA, 0xA8, 0x12, 0x0B, 0x22),
1130*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x3F, 0x5D, 0x2D, 0x1C, 0xD4, 0x9E, 0xFB),
1131*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x2E, 0xDD, 0xC7, 0x6E, 0xAB, 0xAF, 0xDC),
1132*b0563631STom Van Eyck };
1133*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_19_Y[] = {
1134*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xB2, 0x7B, 0x0C, 0x9A, 0x83, 0x8E, 0x59),
1135*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x51, 0x90, 0x92, 0x79, 0x32, 0x19, 0xC3),
1136*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x89, 0xF9, 0xD0, 0xCF, 0x2C, 0xA5, 0x8F),
1137*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x50, 0x21, 0xDE, 0x50, 0x41, 0x9D, 0x81),
1138*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x7D, 0x2B, 0x9E, 0x9D, 0x95, 0xA8, 0xE3),
1139*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA5, 0x20, 0x87, 0x88, 0x97, 0x5F, 0xAA),
1140*b0563631STom Van Eyck };
1141*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_20_X[] = {
1142*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x59, 0xB4, 0x66, 0x7E, 0xE8, 0x5A, 0x60),
1143*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x5C, 0x7E, 0xB2, 0xAD, 0xD9, 0xC9, 0xDA),
1144*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x97, 0x49, 0xA3, 0x13, 0x83, 0x07, 0x2E),
1145*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x26, 0xC7, 0x13, 0x35, 0x0D, 0xB0, 0x6B),
1146*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x60, 0xAB, 0xFA, 0x4B, 0x93, 0x18, 0x2C),
1147*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x2D, 0x1C, 0x31, 0x4C, 0xE4, 0x61, 0xAE),
1148*b0563631STom Van Eyck };
1149*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_20_Y[] = {
1150*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0x4D, 0x1E, 0x51, 0x59, 0x6E, 0x91, 0xC5),
1151*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x54, 0x4D, 0x51, 0xED, 0x36, 0xCC, 0x60),
1152*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xA8, 0x56, 0xC7, 0x78, 0x27, 0x33, 0xC5),
1153*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xB7, 0x95, 0xC9, 0x8B, 0xC8, 0x6A, 0xBC),
1154*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xE9, 0x13, 0x96, 0xB3, 0xE1, 0xF9, 0xEE),
1155*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x46, 0xB0, 0x5E, 0xC3, 0x94, 0x03, 0x05),
1156*b0563631STom Van Eyck };
1157*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_21_X[] = {
1158*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x5B, 0x29, 0x30, 0x41, 0x1A, 0x9E, 0xB6),
1159*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xCA, 0x83, 0x31, 0x5B, 0xA7, 0xCB, 0x42),
1160*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x41, 0x50, 0x44, 0x4D, 0x64, 0x31, 0x89),
1161*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0x84, 0xC2, 0x5D, 0x97, 0xA5, 0x3C, 0x18),
1162*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x0F, 0xA5, 0xFD, 0x8E, 0x5A, 0x47, 0x2C),
1163*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x58, 0x02, 0x2D, 0x40, 0xB1, 0x0B, 0xBA),
1164*b0563631STom Van Eyck };
1165*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_21_Y[] = {
1166*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x33, 0x8C, 0x67, 0xCE, 0x23, 0x43, 0x99),
1167*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x53, 0x47, 0x72, 0x44, 0x1F, 0x5B, 0x2A),
1168*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xC1, 0xD9, 0xA4, 0x50, 0x88, 0x63, 0x18),
1169*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xF2, 0x75, 0x69, 0x73, 0x00, 0xC4, 0x31),
1170*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x90, 0x1D, 0xDF, 0x1A, 0x00, 0xD8, 0x69),
1171*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0xB1, 0x89, 0x48, 0xA8, 0x70, 0x62, 0xEF),
1172*b0563631STom Van Eyck };
1173*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_22_X[] = {
1174*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x8A, 0x55, 0x50, 0x7B, 0xEF, 0x8A, 0x3C),
1175*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x1B, 0x23, 0x48, 0x23, 0x63, 0x91, 0xB6),
1176*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x04, 0x54, 0x3C, 0x24, 0x9B, 0xC7, 0x9A),
1177*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x38, 0xC3, 0x84, 0xFB, 0xFF, 0x9F, 0x49),
1178*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x2A, 0xE0, 0x6D, 0x68, 0x8A, 0x5C, 0xCB),
1179*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x93, 0x53, 0x85, 0xA1, 0x0D, 0xAF, 0x63),
1180*b0563631STom Van Eyck };
1181*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_22_Y[] = {
1182*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x88, 0x95, 0x4C, 0x0B, 0xD0, 0x06, 0x51),
1183*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xAF, 0x8D, 0x49, 0xA2, 0xC8, 0xB4, 0xE0),
1184*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x76, 0x53, 0x09, 0x88, 0x43, 0x87, 0xCA),
1185*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xA4, 0x77, 0x3F, 0x5E, 0x21, 0xB4, 0x0A),
1186*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x9E, 0x86, 0x64, 0xCC, 0x91, 0xC1, 0x77),
1187*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x17, 0x56, 0xCB, 0xC3, 0x7D, 0x5B, 0xB1),
1188*b0563631STom Van Eyck };
1189*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_23_X[] = {
1190*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x74, 0x9F, 0xB5, 0x91, 0x21, 0xB1, 0x1C),
1191*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xED, 0xE1, 0x11, 0xEF, 0x45, 0xAF, 0xC1),
1192*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x31, 0xBE, 0xB2, 0xBC, 0x72, 0x65, 0x1F),
1193*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x4B, 0x8C, 0x77, 0xCE, 0x1E, 0x42, 0xB5),
1194*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xC9, 0xAA, 0xB9, 0xD9, 0x86, 0x99, 0x55),
1195*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x23, 0x80, 0xC6, 0x4E, 0x35, 0x0B, 0x6D),
1196*b0563631STom Van Eyck };
1197*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_23_Y[] = {
1198*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xD8, 0xA2, 0x0A, 0x39, 0x32, 0x1D, 0x23),
1199*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xC8, 0x86, 0xF1, 0x12, 0x9A, 0x4A, 0x05),
1200*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xF1, 0x7C, 0xAA, 0x70, 0x8E, 0xBC, 0x01),
1201*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x01, 0x47, 0x8F, 0xDD, 0x8B, 0xA5, 0xC8),
1202*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x08, 0x21, 0xF4, 0xAB, 0xC7, 0xF5, 0x96),
1203*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x76, 0xA5, 0x95, 0xC4, 0x0F, 0x88, 0x1D),
1204*b0563631STom Van Eyck };
1205*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_24_X[] = {
1206*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x42, 0x2A, 0x52, 0xCD, 0x75, 0x51, 0x49),
1207*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x36, 0xE5, 0x04, 0x2B, 0x44, 0xC6, 0xEF),
1208*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xEE, 0x16, 0x13, 0x07, 0x83, 0xB5, 0x30),
1209*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x59, 0xC6, 0xA2, 0x19, 0x05, 0xD3, 0xC6),
1210*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x8B, 0xA8, 0x16, 0x09, 0xB7, 0xEA, 0xD6),
1211*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xEE, 0x14, 0xAF, 0xB5, 0xFD, 0xD0, 0xEF),
1212*b0563631STom Van Eyck };
1213*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_24_Y[] = {
1214*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x7C, 0xCA, 0x71, 0x3E, 0x6E, 0x66, 0x75),
1215*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x31, 0x0E, 0x3F, 0xE5, 0x91, 0xC4, 0x7F),
1216*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x3D, 0xC2, 0x3E, 0x95, 0x37, 0x58, 0x2B),
1217*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x1F, 0x02, 0x03, 0xF3, 0xEF, 0xEE, 0x66),
1218*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x5B, 0x1A, 0xFC, 0x38, 0xCD, 0xE8, 0x24),
1219*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x57, 0x42, 0x85, 0xC6, 0x21, 0x68, 0x71),
1220*b0563631STom Van Eyck };
1221*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_25_X[] = {
1222*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xA2, 0x4A, 0x66, 0xB1, 0x0A, 0xE6, 0xC0),
1223*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x0C, 0x94, 0x9D, 0x5E, 0x99, 0xB2, 0xCE),
1224*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x03, 0x40, 0xCA, 0xB2, 0xB3, 0x30, 0x55),
1225*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x78, 0x48, 0x27, 0x34, 0x1E, 0xE2, 0x42),
1226*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x72, 0x5B, 0xAC, 0xC1, 0x6D, 0xE3, 0x82),
1227*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xAB, 0x46, 0xCB, 0xEA, 0x5E, 0x4B, 0x0B),
1228*b0563631STom Van Eyck };
1229*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_25_Y[] = {
1230*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x08, 0xAD, 0x4E, 0x51, 0x9F, 0x2A, 0x52),
1231*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x5C, 0x7D, 0x4C, 0xD6, 0xCF, 0xDD, 0x02),
1232*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x76, 0x26, 0xE0, 0x8B, 0x10, 0xD9, 0x7C),
1233*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0xA7, 0x23, 0x4E, 0x5F, 0xD2, 0x42, 0x17),
1234*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xE5, 0xA4, 0xEC, 0x77, 0x21, 0x34, 0x28),
1235*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x14, 0x65, 0xEA, 0x4A, 0x85, 0xC3, 0x2F),
1236*b0563631STom Van Eyck };
1237*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_26_X[] = {
1238*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0xD8, 0x40, 0x27, 0x73, 0x15, 0x7E, 0x65),
1239*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xBB, 0x53, 0x7E, 0x0F, 0x40, 0xC8, 0xD4),
1240*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x37, 0x19, 0x73, 0xEF, 0x5A, 0x5E, 0x04),
1241*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x73, 0x2B, 0x49, 0x7E, 0xAC, 0x97, 0x5C),
1242*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0xB2, 0xC3, 0x1E, 0x0E, 0xE7, 0xD2, 0x21),
1243*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x08, 0xD6, 0xDD, 0xAC, 0x21, 0xD6, 0x3E),
1244*b0563631STom Van Eyck };
1245*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_26_Y[] = {
1246*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x26, 0xBE, 0x6D, 0x6D, 0xF2, 0x38, 0x3F),
1247*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x6C, 0x31, 0xA7, 0x49, 0x50, 0x3A, 0x89),
1248*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x99, 0xC6, 0xF5, 0xD2, 0xC2, 0x30, 0x5A),
1249*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xE4, 0xF6, 0x8B, 0x8B, 0x97, 0xE9, 0xB2),
1250*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x21, 0xB7, 0x0D, 0xFC, 0x15, 0x54, 0x0B),
1251*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x83, 0x1C, 0xA4, 0xCD, 0x6B, 0x9D, 0xF2),
1252*b0563631STom Van Eyck };
1253*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_27_X[] = {
1254*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xE8, 0x4C, 0x48, 0xE4, 0xAA, 0x69, 0x93),
1255*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x7A, 0x27, 0xFC, 0x37, 0x96, 0x1A, 0x7B),
1256*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0xE7, 0x30, 0xA5, 0xCF, 0x13, 0x46, 0x5C),
1257*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xD8, 0xAF, 0x74, 0x23, 0x4D, 0x56, 0x84),
1258*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x3D, 0x44, 0x14, 0x1B, 0x97, 0x83, 0xF0),
1259*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x47, 0xD7, 0x5F, 0xFD, 0x98, 0x38, 0xF7),
1260*b0563631STom Van Eyck };
1261*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_27_Y[] = {
1262*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x73, 0x64, 0x36, 0xFD, 0x7B, 0xC1, 0x15),
1263*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x5D, 0x32, 0xD2, 0x47, 0x94, 0x89, 0x2D),
1264*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xE9, 0x30, 0xAC, 0x06, 0xC8, 0x65, 0x04),
1265*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x6C, 0xB9, 0x1B, 0xF7, 0x61, 0x49, 0x53),
1266*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0xFF, 0x32, 0x43, 0x80, 0xDA, 0xA6, 0xB1),
1267*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xF8, 0x04, 0x01, 0x95, 0x35, 0xCE, 0x21),
1268*b0563631STom Van Eyck };
1269*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_28_X[] = {
1270*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x06, 0x46, 0x0D, 0x51, 0xE2, 0xD8, 0xAC),
1271*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x57, 0x1D, 0x6F, 0x79, 0xA0, 0xCD, 0xA6),
1272*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0xFB, 0x36, 0xCA, 0xAD, 0xF5, 0x9E, 0x41),
1273*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x7A, 0x1D, 0x9E, 0x1D, 0x95, 0x48, 0xDC),
1274*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x26, 0xA5, 0xB7, 0x15, 0x2C, 0xC2, 0xC6),
1275*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x42, 0x72, 0xAA, 0x11, 0xDC, 0xC9, 0xB6),
1276*b0563631STom Van Eyck };
1277*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_28_Y[] = {
1278*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x6C, 0x64, 0xA7, 0x62, 0x3C, 0xAB, 0xD4),
1279*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x6A, 0x44, 0xD8, 0x60, 0xC0, 0xA8, 0x80),
1280*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x76, 0x58, 0x12, 0x57, 0x3C, 0x89, 0x46),
1281*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x4F, 0x83, 0xCE, 0xCB, 0xB8, 0xD0, 0x2C),
1282*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x84, 0x04, 0xB0, 0xAD, 0xEB, 0xFA, 0xDF),
1283*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xA4, 0xC3, 0x41, 0x44, 0x4E, 0x65, 0x3E),
1284*b0563631STom Van Eyck };
1285*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_29_X[] = {
1286*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x16, 0xA9, 0x1C, 0xE7, 0x65, 0x20, 0xC1),
1287*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x53, 0x32, 0xF8, 0xC0, 0xA6, 0xBD, 0x2C),
1288*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xF0, 0xE6, 0x57, 0x31, 0xCC, 0x26, 0x6F),
1289*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xE3, 0x54, 0x1C, 0x34, 0xD3, 0x17, 0xBC),
1290*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xAE, 0xED, 0xFB, 0xCD, 0xE7, 0x1E, 0x9F),
1291*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x16, 0x1C, 0x34, 0x40, 0x00, 0x1F, 0xB6),
1292*b0563631STom Van Eyck };
1293*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_29_Y[] = {
1294*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x32, 0x00, 0xC2, 0xD4, 0x3B, 0x1A, 0x09),
1295*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xE0, 0x99, 0x8F, 0x0C, 0x4A, 0x16, 0x44),
1296*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x73, 0x18, 0x1B, 0xD4, 0x94, 0x29, 0x62),
1297*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xA4, 0x2D, 0xB1, 0x9D, 0x74, 0x32, 0x67),
1298*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0xF4, 0xB1, 0x0C, 0x37, 0x62, 0x8B, 0x66),
1299*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xFF, 0xDA, 0xE2, 0x35, 0xA3, 0xB6, 0x42),
1300*b0563631STom Van Eyck };
1301*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_30_X[] = {
1302*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x49, 0x99, 0x65, 0xC5, 0xED, 0x16, 0xEF),
1303*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x42, 0x9A, 0xF3, 0xA7, 0x4E, 0x6F, 0x2B),
1304*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x0A, 0x7E, 0xC0, 0xD7, 0x4E, 0x07, 0x55),
1305*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x7A, 0x31, 0x69, 0xA6, 0xB9, 0x15, 0x34),
1306*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0xE0, 0x72, 0xA4, 0x3F, 0xB9, 0xF8, 0x0C),
1307*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x75, 0x32, 0x85, 0xA2, 0xDE, 0x37, 0x12),
1308*b0563631STom Van Eyck };
1309*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_30_Y[] = {
1310*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xC0, 0x0D, 0xCF, 0x25, 0x41, 0xA4, 0xF4),
1311*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xFC, 0xB2, 0x48, 0xC3, 0x85, 0x83, 0x4B),
1312*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xBE, 0x0B, 0x58, 0x2D, 0x7A, 0x9A, 0x62),
1313*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0xF3, 0x81, 0x18, 0x1B, 0x74, 0x4F, 0x2C),
1314*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x43, 0xA3, 0x0A, 0x16, 0x8B, 0xA3, 0x1E),
1315*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x18, 0x81, 0x7B, 0x8D, 0xA2, 0x35, 0x77),
1316*b0563631STom Van Eyck };
1317*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_31_X[] = {
1318*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xC4, 0x3F, 0x2C, 0xE7, 0x5F, 0x99, 0x03),
1319*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x2B, 0xB7, 0xB6, 0xAD, 0x5A, 0x56, 0xFF),
1320*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x00, 0xA4, 0x48, 0xC8, 0xE8, 0xBA, 0xBF),
1321*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xA1, 0xB5, 0x13, 0x5A, 0xCD, 0x99, 0x9C),
1322*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x95, 0xAD, 0xFC, 0xE2, 0x7E, 0xE7, 0xFE),
1323*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x6B, 0xD1, 0x34, 0x99, 0x53, 0x63, 0x0B),
1324*b0563631STom Van Eyck };
1325*b0563631STom Van Eyck static const mbedtls_mpi_uint secp384r1_T_31_Y[] = {
1326*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x8A, 0x77, 0x5D, 0x2B, 0xAB, 0x01, 0x28),
1327*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x85, 0xD0, 0xD5, 0x49, 0x83, 0x4D, 0x60),
1328*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0xC6, 0x91, 0x30, 0x3B, 0x00, 0xAF, 0x7A),
1329*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xAE, 0x61, 0x07, 0xE1, 0xB6, 0xE2, 0xC9),
1330*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x43, 0x41, 0xFE, 0x9B, 0xB6, 0xF0, 0xA5),
1331*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x97, 0xAE, 0xAD, 0x89, 0x88, 0x9E, 0x41),
1332*b0563631STom Van Eyck };
1333*b0563631STom Van Eyck static const mbedtls_ecp_point secp384r1_T[32] = {
1334*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp384r1_T_0_X, secp384r1_T_0_Y),
1335*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_1_X, secp384r1_T_1_Y),
1336*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_2_X, secp384r1_T_2_Y),
1337*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_3_X, secp384r1_T_3_Y),
1338*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_4_X, secp384r1_T_4_Y),
1339*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_5_X, secp384r1_T_5_Y),
1340*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_6_X, secp384r1_T_6_Y),
1341*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_7_X, secp384r1_T_7_Y),
1342*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_8_X, secp384r1_T_8_Y),
1343*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_9_X, secp384r1_T_9_Y),
1344*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_10_X, secp384r1_T_10_Y),
1345*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_11_X, secp384r1_T_11_Y),
1346*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_12_X, secp384r1_T_12_Y),
1347*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_13_X, secp384r1_T_13_Y),
1348*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_14_X, secp384r1_T_14_Y),
1349*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_15_X, secp384r1_T_15_Y),
1350*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_16_X, secp384r1_T_16_Y),
1351*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_17_X, secp384r1_T_17_Y),
1352*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_18_X, secp384r1_T_18_Y),
1353*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_19_X, secp384r1_T_19_Y),
1354*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_20_X, secp384r1_T_20_Y),
1355*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_21_X, secp384r1_T_21_Y),
1356*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_22_X, secp384r1_T_22_Y),
1357*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_23_X, secp384r1_T_23_Y),
1358*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_24_X, secp384r1_T_24_Y),
1359*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_25_X, secp384r1_T_25_Y),
1360*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_26_X, secp384r1_T_26_Y),
1361*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_27_X, secp384r1_T_27_Y),
1362*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_28_X, secp384r1_T_28_Y),
1363*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_29_X, secp384r1_T_29_Y),
1364*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_30_X, secp384r1_T_30_Y),
1365*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp384r1_T_31_X, secp384r1_T_31_Y),
1366*b0563631STom Van Eyck };
1367*b0563631STom Van Eyck #else
1368*b0563631STom Van Eyck #define secp384r1_T NULL
1369*b0563631STom Van Eyck #endif
1370*b0563631STom Van Eyck
1371*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
1372*b0563631STom Van Eyck
1373*b0563631STom Van Eyck /*
1374*b0563631STom Van Eyck * Domain parameters for secp521r1
1375*b0563631STom Van Eyck */
1376*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
1377*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_p[] = {
1378*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1379*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1380*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1381*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1382*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1383*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1384*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1385*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1386*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0xFF, 0x01),
1387*b0563631STom Van Eyck };
1388*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_b[] = {
1389*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x3F, 0x50, 0x6B, 0xD4, 0x1F, 0x45, 0xEF),
1390*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x34, 0x2C, 0x3D, 0x88, 0xDF, 0x73, 0x35),
1391*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xBF, 0xB1, 0x3B, 0xBD, 0xC0, 0x52, 0x16),
1392*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x93, 0x7E, 0xEC, 0x51, 0x39, 0x19, 0x56),
1393*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x09, 0xF1, 0x8E, 0x91, 0x89, 0xB4, 0xB8),
1394*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x15, 0xB3, 0x99, 0x5B, 0x72, 0xDA, 0xA2),
1395*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x40, 0x85, 0xB6, 0xA0, 0x21, 0x9A, 0x92),
1396*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x9A, 0x1C, 0x8E, 0x61, 0xB9, 0x3E, 0x95),
1397*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x51, 0x00),
1398*b0563631STom Van Eyck };
1399*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_gx[] = {
1400*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xBD, 0xE5, 0xC2, 0x31, 0x7E, 0x7E, 0xF9),
1401*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x42, 0x6A, 0x85, 0xC1, 0xB3, 0x48, 0x33),
1402*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0xA8, 0xFF, 0xA2, 0x27, 0xC1, 0x1D, 0xFE),
1403*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x59, 0xE7, 0xEF, 0x77, 0x5E, 0x4B, 0xA1),
1404*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x3D, 0x4D, 0x6B, 0x60, 0xAF, 0x28, 0xF8),
1405*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xB5, 0x3F, 0x05, 0x39, 0x81, 0x64, 0x9C),
1406*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xB4, 0x95, 0x23, 0x66, 0xCB, 0x3E, 0x9E),
1407*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xE9, 0x04, 0x04, 0xB7, 0x06, 0x8E, 0x85),
1408*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0xC6, 0x00),
1409*b0563631STom Van Eyck };
1410*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_gy[] = {
1411*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x66, 0xD1, 0x9F, 0x76, 0x94, 0xBE, 0x88),
1412*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xC2, 0x72, 0xA2, 0x86, 0x70, 0x3C, 0x35),
1413*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x07, 0xAD, 0x3F, 0x01, 0xB9, 0x50, 0xC5),
1414*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x26, 0xF4, 0x5E, 0x99, 0x72, 0xEE, 0x97),
1415*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x66, 0x3E, 0x27, 0x17, 0xBD, 0xAF, 0x17),
1416*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x44, 0x9B, 0x57, 0x49, 0x44, 0xF5, 0x98),
1417*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x1B, 0x7D, 0x2C, 0xB4, 0x5F, 0x8A, 0x5C),
1418*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xC0, 0x3B, 0x9A, 0x78, 0x6A, 0x29, 0x39),
1419*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x18, 0x01),
1420*b0563631STom Van Eyck };
1421*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_n[] = {
1422*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x64, 0x38, 0x91, 0x1E, 0xB7, 0x6F, 0xBB),
1423*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x47, 0x9C, 0x89, 0xB8, 0xC9, 0xB5, 0x3B),
1424*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0xA5, 0x09, 0xF7, 0x48, 0x01, 0xCC, 0x7F),
1425*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x96, 0x2F, 0xBF, 0x83, 0x87, 0x86, 0x51),
1426*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1427*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1428*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1429*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1430*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0xFF, 0x01),
1431*b0563631STom Van Eyck };
1432*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
1433*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_0_X[] = {
1434*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xBD, 0xE5, 0xC2, 0x31, 0x7E, 0x7E, 0xF9),
1435*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x42, 0x6A, 0x85, 0xC1, 0xB3, 0x48, 0x33),
1436*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0xA8, 0xFF, 0xA2, 0x27, 0xC1, 0x1D, 0xFE),
1437*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x59, 0xE7, 0xEF, 0x77, 0x5E, 0x4B, 0xA1),
1438*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x3D, 0x4D, 0x6B, 0x60, 0xAF, 0x28, 0xF8),
1439*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xB5, 0x3F, 0x05, 0x39, 0x81, 0x64, 0x9C),
1440*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xB4, 0x95, 0x23, 0x66, 0xCB, 0x3E, 0x9E),
1441*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xE9, 0x04, 0x04, 0xB7, 0x06, 0x8E, 0x85),
1442*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1443*b0563631STom Van Eyck };
1444*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_0_Y[] = {
1445*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x66, 0xD1, 0x9F, 0x76, 0x94, 0xBE, 0x88),
1446*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xC2, 0x72, 0xA2, 0x86, 0x70, 0x3C, 0x35),
1447*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x07, 0xAD, 0x3F, 0x01, 0xB9, 0x50, 0xC5),
1448*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x26, 0xF4, 0x5E, 0x99, 0x72, 0xEE, 0x97),
1449*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x66, 0x3E, 0x27, 0x17, 0xBD, 0xAF, 0x17),
1450*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x44, 0x9B, 0x57, 0x49, 0x44, 0xF5, 0x98),
1451*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x1B, 0x7D, 0x2C, 0xB4, 0x5F, 0x8A, 0x5C),
1452*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xC0, 0x3B, 0x9A, 0x78, 0x6A, 0x29, 0x39),
1453*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1454*b0563631STom Van Eyck };
1455*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_1_X[] = {
1456*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xB1, 0x2D, 0xEB, 0x27, 0x2F, 0xE8, 0xDA),
1457*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x4B, 0x44, 0x25, 0xDB, 0x5C, 0x5F, 0x67),
1458*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x85, 0x28, 0x78, 0x2E, 0x75, 0x34, 0x32),
1459*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x57, 0x0F, 0x73, 0x78, 0x7A, 0xE3, 0x53),
1460*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xD8, 0xEC, 0xDC, 0xDA, 0x04, 0xAD, 0xAB),
1461*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x8A, 0x09, 0xF3, 0x58, 0x79, 0xD8, 0x29),
1462*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x03, 0xCB, 0x50, 0x1A, 0x7F, 0x56, 0x00),
1463*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xA6, 0x78, 0x38, 0x85, 0x67, 0x0B, 0x40),
1464*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1465*b0563631STom Van Eyck };
1466*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_1_Y[] = {
1467*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xD5, 0xD2, 0x22, 0xC4, 0x00, 0x3B, 0xBA),
1468*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x93, 0x0E, 0x7B, 0x85, 0x51, 0xC3, 0x06),
1469*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xA6, 0x5F, 0x54, 0x49, 0x02, 0x81, 0x78),
1470*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xE9, 0x6B, 0x3A, 0x92, 0xE7, 0x72, 0x1D),
1471*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x5F, 0x28, 0x9E, 0x91, 0x27, 0x88, 0xE3),
1472*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x28, 0x31, 0xB3, 0x84, 0xCA, 0x12, 0x32),
1473*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xF9, 0xAC, 0x22, 0x10, 0x0A, 0x64, 0x41),
1474*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xC6, 0x33, 0x1F, 0x69, 0x19, 0x18, 0xBF),
1475*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1476*b0563631STom Van Eyck };
1477*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_2_X[] = {
1478*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x48, 0xB8, 0xC7, 0x37, 0x5A, 0x00, 0x36),
1479*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xCC, 0x32, 0xE0, 0xEE, 0x03, 0xC2, 0xBA),
1480*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x29, 0xC2, 0xE4, 0x6E, 0x24, 0x20, 0x8D),
1481*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x6B, 0x7F, 0x7B, 0xF9, 0xB0, 0xB8, 0x13),
1482*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x7B, 0x3C, 0xE1, 0x19, 0xA1, 0x23, 0x02),
1483*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xE3, 0xC2, 0x53, 0xC0, 0x07, 0x13, 0xA9),
1484*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xFE, 0x36, 0x35, 0x9F, 0x5E, 0x59, 0xCE),
1485*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x55, 0x89, 0x84, 0xBC, 0xEF, 0xA2, 0xC2),
1486*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1487*b0563631STom Van Eyck };
1488*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_2_Y[] = {
1489*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x1A, 0x08, 0x67, 0xB4, 0xE7, 0x22, 0xED),
1490*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x26, 0xDF, 0x81, 0x3C, 0x5F, 0x1C, 0xDA),
1491*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x4D, 0xD0, 0x0A, 0x48, 0x06, 0xF4, 0x48),
1492*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x18, 0x39, 0xF7, 0xD1, 0x20, 0x77, 0x8D),
1493*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0x8F, 0x44, 0x13, 0xCB, 0x78, 0x11, 0x11),
1494*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xE2, 0x49, 0xEA, 0x43, 0x79, 0x08, 0x39),
1495*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0xD1, 0xD8, 0x73, 0x2C, 0x71, 0x2F, 0x69),
1496*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xE5, 0xE7, 0xF4, 0x46, 0xAB, 0x20, 0xCA),
1497*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1498*b0563631STom Van Eyck };
1499*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_3_X[] = {
1500*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x0B, 0xB9, 0x71, 0x1A, 0x27, 0xB7, 0xA7),
1501*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xA2, 0x2C, 0xD1, 0xDA, 0xBC, 0xC1, 0xBD),
1502*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xA3, 0x10, 0x1F, 0x90, 0xF2, 0xA5, 0x52),
1503*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xFB, 0x20, 0xF4, 0xC0, 0x70, 0xC0, 0xF5),
1504*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0xA7, 0x99, 0xF0, 0xA5, 0xD3, 0x09, 0xDD),
1505*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0xE8, 0x14, 0x39, 0xBE, 0xCB, 0x60, 0xAF),
1506*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0xD6, 0x14, 0xA9, 0xC9, 0x20, 0xC3, 0xEA),
1507*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xA8, 0x5B, 0xFD, 0x2D, 0x96, 0xBC, 0x78),
1508*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1509*b0563631STom Van Eyck };
1510*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_3_Y[] = {
1511*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x04, 0x45, 0xBE, 0xCE, 0x75, 0x95, 0xF6),
1512*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0xDA, 0x58, 0x49, 0x35, 0x09, 0x8D, 0x41),
1513*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xF0, 0xC0, 0x36, 0xF2, 0xA6, 0x2D, 0x14),
1514*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xFC, 0x3D, 0xA8, 0xFB, 0x3C, 0xD2, 0x51),
1515*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x4D, 0x71, 0x09, 0x18, 0x42, 0xF0, 0x2D),
1516*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xC1, 0xCE, 0x9E, 0x6A, 0x49, 0x60, 0x12),
1517*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xB1, 0x00, 0xF7, 0xA1, 0x7A, 0x31, 0xB4),
1518*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xC3, 0x86, 0xCD, 0x20, 0x4A, 0x17, 0x86),
1519*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1520*b0563631STom Van Eyck };
1521*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_4_X[] = {
1522*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xAB, 0x8B, 0x47, 0x8D, 0xAA, 0xA6, 0x5B),
1523*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x97, 0xF0, 0xBC, 0x2D, 0xDC, 0x9D, 0x84),
1524*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x86, 0xB0, 0x74, 0xB2, 0xF4, 0xF6, 0x67),
1525*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xBD, 0xAC, 0xE3, 0x8F, 0x43, 0x5C, 0xB1),
1526*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xC3, 0xE2, 0x6E, 0x25, 0x49, 0xCD, 0x0B),
1527*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x5E, 0x08, 0xB3, 0xB9, 0xAC, 0x5F, 0xD1),
1528*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xB7, 0xD1, 0xF4, 0xDC, 0x19, 0xE9, 0xC8),
1529*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xE4, 0xFA, 0xE1, 0x36, 0x3E, 0xED, 0x6E),
1530*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1531*b0563631STom Van Eyck };
1532*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_4_Y[] = {
1533*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x67, 0x92, 0x84, 0x6E, 0x48, 0x03, 0x51),
1534*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x95, 0xEF, 0x8F, 0xB2, 0x82, 0x6B, 0x1C),
1535*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xFA, 0xB9, 0x55, 0x23, 0xFE, 0x09, 0xB3),
1536*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x79, 0x85, 0x4B, 0x0E, 0xD4, 0x35, 0xDB),
1537*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x27, 0x45, 0x81, 0xE0, 0x88, 0x52, 0xAD),
1538*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x63, 0xA2, 0x4B, 0xBC, 0x5D, 0xB1, 0x92),
1539*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x8C, 0x83, 0xD9, 0x3E, 0xD3, 0x42, 0xDA),
1540*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x03, 0x3A, 0x31, 0xBA, 0xE9, 0x3A, 0xD1),
1541*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1542*b0563631STom Van Eyck };
1543*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_5_X[] = {
1544*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x10, 0xCD, 0x2D, 0x00, 0xFE, 0x32, 0xA7),
1545*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x6E, 0x1F, 0xDA, 0xF8, 0x6F, 0x4D, 0x03),
1546*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x79, 0x7D, 0x09, 0xE5, 0xD3, 0x03, 0x21),
1547*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xC3, 0xBE, 0xDF, 0x07, 0x65, 0x49, 0xCC),
1548*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x57, 0x33, 0xEF, 0xAE, 0x4F, 0x04, 0x27),
1549*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0xE9, 0x9B, 0xFE, 0xBF, 0xE6, 0x85, 0xF6),
1550*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0xBA, 0xAA, 0x06, 0xC4, 0xC6, 0xB8, 0x57),
1551*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x83, 0x01, 0xA9, 0xF6, 0x51, 0xE7, 0xB8),
1552*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1553*b0563631STom Van Eyck };
1554*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_5_Y[] = {
1555*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xA6, 0x15, 0x8E, 0xAB, 0x1F, 0x10, 0x87),
1556*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x08, 0x27, 0x1A, 0xA1, 0x21, 0xAD, 0xF5),
1557*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x09, 0x90, 0x6E, 0x50, 0x90, 0x9A, 0x5D),
1558*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x9A, 0xFE, 0xD7, 0xA1, 0xF5, 0xA2, 0x15),
1559*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x7D, 0xE3, 0xDC, 0x21, 0xFB, 0xA4, 0x7B),
1560*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xBF, 0x07, 0xFF, 0x45, 0xDF, 0x51, 0x77),
1561*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x5C, 0x34, 0x02, 0x62, 0x9B, 0x08, 0x12),
1562*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xCE, 0x9A, 0x6A, 0xEC, 0x75, 0xF6, 0x46),
1563*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1564*b0563631STom Van Eyck };
1565*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_6_X[] = {
1566*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x59, 0xF4, 0x78, 0x3C, 0x60, 0xB1, 0x4A),
1567*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x37, 0x84, 0x6A, 0xDC, 0xF2, 0x9A, 0x7D),
1568*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x9A, 0x9A, 0x15, 0x36, 0xE0, 0x2B, 0x2D),
1569*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x38, 0x9C, 0x50, 0x3D, 0x1E, 0x37, 0x82),
1570*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x79, 0xF0, 0x92, 0xF2, 0x8B, 0x18, 0x82),
1571*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xE0, 0x82, 0x1E, 0x80, 0x82, 0x4B, 0xD7),
1572*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xBB, 0x59, 0x6B, 0x8A, 0x77, 0x41, 0x40),
1573*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xF9, 0xD4, 0xB8, 0x4A, 0x82, 0xCF, 0x40),
1574*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1575*b0563631STom Van Eyck };
1576*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_6_Y[] = {
1577*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x8C, 0xC8, 0x9B, 0x72, 0x9E, 0xF7, 0xF9),
1578*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0xCE, 0xE9, 0x77, 0x0A, 0x19, 0x59, 0x84),
1579*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xA1, 0x41, 0x6A, 0x72, 0x4B, 0xB4, 0xDC),
1580*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x35, 0x43, 0xE2, 0x8C, 0xBE, 0x0D, 0xE3),
1581*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xEB, 0xAD, 0xF3, 0xA9, 0xA6, 0x68, 0xA1),
1582*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x2F, 0xE2, 0x48, 0x0C, 0xDB, 0x1F, 0x42),
1583*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x1E, 0x60, 0x9B, 0x2A, 0xD2, 0xC1, 0x3C),
1584*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x64, 0xB5, 0xD2, 0xF6, 0xF6, 0x6E, 0x22),
1585*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1586*b0563631STom Van Eyck };
1587*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_7_X[] = {
1588*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x3D, 0x30, 0x78, 0x10, 0x18, 0x41, 0x51),
1589*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x1D, 0x1C, 0xE0, 0x6D, 0x83, 0xD1, 0x93),
1590*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x03, 0x0B, 0xF5, 0x2F, 0x6C, 0x04, 0x98),
1591*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x3E, 0xD5, 0xFC, 0x31, 0x5B, 0x3A, 0xEB),
1592*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x82, 0x2F, 0xFB, 0xFE, 0xF8, 0x76, 0x39),
1593*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x26, 0xDA, 0x9C, 0x36, 0xF5, 0x93, 0xD1),
1594*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0xE7, 0x6E, 0xD2, 0x7D, 0x81, 0x09, 0xC6),
1595*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x03, 0xF9, 0x58, 0x48, 0x24, 0xA2, 0xEE),
1596*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1597*b0563631STom Van Eyck };
1598*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_7_Y[] = {
1599*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x79, 0x0C, 0x8E, 0x6B, 0x95, 0xF3, 0xC4),
1600*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x10, 0x5C, 0x87, 0x03, 0x39, 0xCF, 0x68),
1601*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xF0, 0xF7, 0xC1, 0x07, 0xA4, 0xF4, 0x3F),
1602*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xE8, 0x02, 0x89, 0x65, 0xC4, 0x72, 0x36),
1603*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x88, 0xEA, 0x96, 0x67, 0x0B, 0x5D, 0xDF),
1604*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x75, 0x60, 0xA8, 0xBD, 0x74, 0xDF, 0x68),
1605*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xE5, 0x71, 0x50, 0x67, 0xD0, 0xD2, 0xE6),
1606*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xFC, 0xE5, 0xC7, 0x77, 0xB0, 0x7F, 0x8C),
1607*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1608*b0563631STom Van Eyck };
1609*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_8_X[] = {
1610*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x86, 0x69, 0xCD, 0x0D, 0x9A, 0xBD, 0x66),
1611*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x17, 0xBC, 0xBB, 0x59, 0x85, 0x7D, 0x0E),
1612*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xA8, 0x76, 0xAC, 0x80, 0xA9, 0x72, 0xE0),
1613*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x78, 0xC1, 0xE2, 0x4D, 0xAF, 0xF9, 0x3C),
1614*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x97, 0x8E, 0x74, 0xC4, 0x4B, 0xB2, 0x85),
1615*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xD8, 0xF6, 0xF3, 0xAF, 0x2F, 0x52, 0xE5),
1616*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x57, 0xF4, 0xCE, 0xEE, 0x43, 0xED, 0x60),
1617*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x46, 0x38, 0xDE, 0x20, 0xFD, 0x59, 0x18),
1618*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1619*b0563631STom Van Eyck };
1620*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_8_Y[] = {
1621*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x18, 0xE8, 0x58, 0xB9, 0x76, 0x2C, 0xE6),
1622*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x54, 0xE4, 0xFE, 0xC7, 0xBC, 0x31, 0x37),
1623*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xF8, 0x89, 0xEE, 0x70, 0xB5, 0xB0, 0x2C),
1624*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x22, 0x26, 0x9A, 0x53, 0xB9, 0x38, 0x0A),
1625*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xA7, 0x19, 0x8C, 0x74, 0x7E, 0x88, 0x46),
1626*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xDA, 0x0A, 0xE8, 0xDA, 0xA5, 0xBE, 0x1D),
1627*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x5C, 0xF7, 0xB1, 0x0C, 0x72, 0xFB, 0x09),
1628*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xE2, 0x23, 0xE7, 0x46, 0xB7, 0xE0, 0x91),
1629*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1630*b0563631STom Van Eyck };
1631*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_9_X[] = {
1632*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x36, 0xBC, 0xBD, 0x48, 0x11, 0x8E, 0x72),
1633*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0xBB, 0xA1, 0xF7, 0x0B, 0x9E, 0xBF, 0xDF),
1634*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x28, 0xE1, 0xA2, 0x8F, 0xFC, 0xFC, 0xD6),
1635*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0xFE, 0x19, 0x0A, 0xE5, 0xE7, 0x69, 0x39),
1636*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xCD, 0x12, 0xF5, 0xBE, 0xD3, 0x04, 0xF1),
1637*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xA8, 0x0D, 0x81, 0x59, 0xC4, 0x79, 0x98),
1638*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xF3, 0x4B, 0x92, 0x65, 0xC3, 0x31, 0xAD),
1639*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0xB5, 0x4F, 0x4D, 0x91, 0xD4, 0xE2, 0xB2),
1640*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1641*b0563631STom Van Eyck };
1642*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_9_Y[] = {
1643*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x09, 0x41, 0x79, 0x1D, 0x4D, 0x0D, 0x33),
1644*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x31, 0x18, 0xBA, 0xA0, 0xF2, 0x6E, 0x7E),
1645*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x5B, 0x4D, 0x4F, 0xAF, 0xC9, 0x8C, 0xA1),
1646*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x99, 0x9C, 0x06, 0x68, 0xDE, 0xD8, 0x29),
1647*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x04, 0xE1, 0xB5, 0x9D, 0x00, 0xBC, 0xB8),
1648*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x95, 0x92, 0x8D, 0x72, 0xD3, 0x37, 0x42),
1649*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x4B, 0x27, 0xA2, 0xE8, 0xA4, 0x26, 0xA1),
1650*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x45, 0x9C, 0xA9, 0xCB, 0x9F, 0xBA, 0x85),
1651*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1652*b0563631STom Van Eyck };
1653*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_10_X[] = {
1654*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x7E, 0x1B, 0x64, 0xF4, 0xE8, 0xA5, 0x55),
1655*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x20, 0xA9, 0xCA, 0xF3, 0x89, 0xE5, 0xE1),
1656*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xED, 0xFC, 0xAB, 0xD9, 0x0A, 0xB9, 0x07),
1657*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x6F, 0x46, 0x7C, 0xCD, 0x78, 0xFF, 0x05),
1658*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xAB, 0x71, 0x5A, 0x94, 0xAB, 0x20, 0x20),
1659*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x2E, 0xEE, 0x87, 0x57, 0x1F, 0xAD, 0xD3),
1660*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x4C, 0x3D, 0xFB, 0x7E, 0xA1, 0x8B, 0x07),
1661*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xCF, 0x07, 0x86, 0xBA, 0x53, 0x37, 0xCF),
1662*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1663*b0563631STom Van Eyck };
1664*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_10_Y[] = {
1665*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x26, 0xB2, 0xB9, 0xE2, 0x91, 0xE3, 0xB5),
1666*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xC9, 0x54, 0x84, 0x08, 0x3D, 0x0B, 0xD2),
1667*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xA8, 0x77, 0x2F, 0x64, 0x45, 0x99, 0x4C),
1668*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x96, 0x16, 0x1F, 0xDB, 0x96, 0x28, 0x97),
1669*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x2B, 0x8D, 0xFF, 0xA2, 0x4F, 0x55, 0xD3),
1670*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0xE6, 0x48, 0xBD, 0x99, 0x3D, 0x12, 0x57),
1671*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x84, 0x59, 0xDA, 0xB9, 0xB6, 0x66, 0x12),
1672*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x78, 0x41, 0x92, 0xDF, 0xF4, 0x3F, 0x63),
1673*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1674*b0563631STom Van Eyck };
1675*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_11_X[] = {
1676*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x86, 0x6F, 0x4F, 0xBF, 0x67, 0xDF, 0x2F),
1677*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x2B, 0x1E, 0x5F, 0x00, 0xEA, 0xF6, 0x56),
1678*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xB9, 0x6A, 0x89, 0xD8, 0xC0, 0xD7, 0xA7),
1679*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x9A, 0x32, 0x23, 0xA0, 0x02, 0x91, 0x58),
1680*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x7F, 0x6A, 0x15, 0x64, 0x6A, 0x8B, 0xBB),
1681*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x57, 0x82, 0x58, 0xA9, 0x56, 0xB5, 0xFB),
1682*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x50, 0x92, 0x60, 0xCC, 0x81, 0x24, 0xA8),
1683*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x3D, 0xAD, 0xDA, 0xD9, 0x51, 0x3E, 0x57),
1684*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1685*b0563631STom Van Eyck };
1686*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_11_Y[] = {
1687*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0xFE, 0x8F, 0xB0, 0x0B, 0xDE, 0x2E, 0x7E),
1688*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xD2, 0xBE, 0xEF, 0xAC, 0x76, 0x71, 0xA3),
1689*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xE8, 0x72, 0x0B, 0xAC, 0xFE, 0xCA, 0x5A),
1690*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x5B, 0xC7, 0xFC, 0xE3, 0x3C, 0x7C, 0x4C),
1691*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x04, 0xA7, 0xB9, 0x9B, 0x93, 0xC0, 0x2F),
1692*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x48, 0x4B, 0x8E, 0x32, 0xC5, 0xF0, 0x6B),
1693*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x42, 0x07, 0xC1, 0xF2, 0xF1, 0x72, 0x5B),
1694*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x37, 0x54, 0x9C, 0x88, 0xD2, 0x62, 0xAA),
1695*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1696*b0563631STom Van Eyck };
1697*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_12_X[] = {
1698*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x19, 0x8A, 0x89, 0x58, 0xA2, 0x0F, 0xDB),
1699*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0xCC, 0x4C, 0x97, 0x30, 0x66, 0x34, 0x26),
1700*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x6A, 0x1E, 0x1F, 0xDB, 0xC9, 0x5E, 0x13),
1701*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x4D, 0x49, 0xFF, 0x9B, 0x9C, 0xAC, 0x9B),
1702*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0xE4, 0x4B, 0xF2, 0xD4, 0x1A, 0xD2, 0x78),
1703*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xDA, 0xE8, 0x61, 0x9F, 0xC8, 0x49, 0x32),
1704*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xCB, 0xF2, 0x2D, 0x85, 0xF6, 0x8D, 0x52),
1705*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xC5, 0xCD, 0x2C, 0x79, 0xC6, 0x0E, 0x4F),
1706*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1707*b0563631STom Van Eyck };
1708*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_12_Y[] = {
1709*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x1D, 0x55, 0x0F, 0xF8, 0x22, 0x9F, 0x78),
1710*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x56, 0xBA, 0xE7, 0x57, 0x32, 0xEC, 0x42),
1711*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x9A, 0xC6, 0x4C, 0x09, 0xC4, 0x52, 0x3F),
1712*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x1E, 0x6F, 0xF4, 0x7D, 0x27, 0xDD, 0xAF),
1713*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x11, 0x16, 0xEC, 0x79, 0x83, 0xAD, 0xAE),
1714*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x4E, 0x92, 0x1F, 0x19, 0x7D, 0x65, 0xDC),
1715*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0xFF, 0x78, 0x15, 0x45, 0x63, 0x32, 0xE4),
1716*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x91, 0xD0, 0x78, 0x58, 0xDA, 0x50, 0x47),
1717*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1718*b0563631STom Van Eyck };
1719*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_13_X[] = {
1720*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0xDE, 0x40, 0xF6, 0x41, 0xB4, 0x3B, 0x95),
1721*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x8D, 0xE0, 0xE1, 0xA9, 0xF0, 0x35, 0x5D),
1722*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xD4, 0xBA, 0x7B, 0xCC, 0x1B, 0x3A, 0x32),
1723*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x5A, 0x2E, 0x74, 0x47, 0x14, 0xC3, 0x4D),
1724*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xF0, 0x8B, 0x06, 0x15, 0x8E, 0x0E, 0xCA),
1725*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0xD2, 0xEB, 0x97, 0x50, 0x7D, 0x31, 0xFC),
1726*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x93, 0x4C, 0xDB, 0x97, 0x79, 0x44, 0xF5),
1727*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xA2, 0xA0, 0x0B, 0xC8, 0x3A, 0x8A, 0xF9),
1728*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1729*b0563631STom Van Eyck };
1730*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_13_Y[] = {
1731*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x50, 0x92, 0x9E, 0x24, 0x1F, 0xCB, 0x4C),
1732*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x16, 0xC9, 0xC5, 0x3D, 0x5A, 0xAF, 0x97),
1733*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xE3, 0x97, 0xE4, 0xA8, 0x50, 0xF6, 0x7E),
1734*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x57, 0x97, 0x42, 0x78, 0x92, 0x49, 0x0D),
1735*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0xEB, 0x62, 0x24, 0xFB, 0x8F, 0x32, 0xCF),
1736*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x0C, 0x36, 0x6E, 0x8F, 0xE8, 0xE8, 0x8E),
1737*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xD3, 0x7C, 0xC7, 0x8D, 0x3F, 0x5C, 0xE1),
1738*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x64, 0x6A, 0x73, 0x10, 0x79, 0xB8, 0x5A),
1739*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1740*b0563631STom Van Eyck };
1741*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_14_X[] = {
1742*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xF9, 0xEF, 0xA5, 0x20, 0x4A, 0x5C, 0xA1),
1743*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xF3, 0xF4, 0x49, 0x5B, 0x73, 0xAA, 0x1B),
1744*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xF2, 0xEA, 0x0F, 0x00, 0xAD, 0x53, 0xAB),
1745*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xB8, 0x66, 0xED, 0xC4, 0x2B, 0x4C, 0x35),
1746*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x2F, 0xC1, 0x9A, 0x37, 0xD2, 0x7F, 0x58),
1747*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xA7, 0x81, 0x38, 0x64, 0xC9, 0x37, 0x38),
1748*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x3B, 0x6C, 0x9F, 0x5B, 0xD9, 0x8B, 0x1D),
1749*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x14, 0xD9, 0x08, 0xD8, 0xD2, 0x7E, 0x23),
1750*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1751*b0563631STom Van Eyck };
1752*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_14_Y[] = {
1753*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x71, 0xE6, 0x3D, 0xD1, 0xB0, 0xE7, 0xCD),
1754*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x81, 0x23, 0xEC, 0x2D, 0x42, 0x45, 0xE6),
1755*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x5B, 0x44, 0x6B, 0x89, 0x03, 0x67, 0x28),
1756*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x27, 0xAE, 0x80, 0x5A, 0x33, 0xBE, 0x11),
1757*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xB6, 0x64, 0x1A, 0xDF, 0xD3, 0x85, 0x91),
1758*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x8C, 0x22, 0xBA, 0xD0, 0xBD, 0xCC, 0xA0),
1759*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x3C, 0x01, 0x3A, 0xFF, 0x9D, 0xC7, 0x6B),
1760*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xC7, 0x64, 0xB4, 0x59, 0x4E, 0x9F, 0x22),
1761*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1762*b0563631STom Van Eyck };
1763*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_15_X[] = {
1764*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x34, 0x0A, 0x41, 0x94, 0xA8, 0xF2, 0xB7),
1765*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xD4, 0xE4, 0xF0, 0x97, 0x45, 0x6D, 0xCA),
1766*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0x1F, 0x4D, 0x6D, 0xFE, 0xA0, 0xC4, 0x84),
1767*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x28, 0x5C, 0x40, 0xBB, 0x65, 0xD4, 0x42),
1768*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xA8, 0x87, 0x35, 0x20, 0x3A, 0x89, 0x44),
1769*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xFD, 0x4F, 0xAB, 0x2D, 0xD1, 0xD0, 0xC0),
1770*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xE8, 0x00, 0xFC, 0x69, 0x52, 0xF8, 0xD5),
1771*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x9A, 0x99, 0xE1, 0xDC, 0x9C, 0x3F, 0xD9),
1772*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1773*b0563631STom Van Eyck };
1774*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_15_Y[] = {
1775*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x08, 0x98, 0xD9, 0xCA, 0x73, 0xD5, 0xA9),
1776*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x2C, 0xE0, 0xA7, 0x3E, 0x91, 0xD7, 0x87),
1777*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x04, 0xB0, 0x54, 0x09, 0xF4, 0x72, 0xB7),
1778*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xEE, 0x28, 0xCC, 0xE8, 0x50, 0x78, 0x20),
1779*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x91, 0x03, 0x76, 0xDB, 0x68, 0x24, 0x77),
1780*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xE0, 0x56, 0xB2, 0x5D, 0x12, 0xD3, 0xB5),
1781*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x42, 0x59, 0x8B, 0xDF, 0x67, 0xB5, 0xBE),
1782*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xCC, 0xE5, 0x31, 0x53, 0x7A, 0x46, 0xB3),
1783*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1784*b0563631STom Van Eyck };
1785*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_16_X[] = {
1786*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x8D, 0x59, 0xB5, 0x1B, 0x0F, 0xF4, 0xAF),
1787*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x2F, 0xD1, 0x2C, 0xE0, 0xD8, 0x04, 0xEF),
1788*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xF4, 0xD7, 0xBA, 0xB0, 0xA3, 0x7E, 0xC9),
1789*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x08, 0x51, 0x56, 0xA6, 0x76, 0x67, 0x33),
1790*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x17, 0x63, 0xFE, 0x56, 0xD0, 0xD9, 0x71),
1791*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0xF6, 0xC3, 0x14, 0x47, 0xC5, 0xA7, 0x31),
1792*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x4C, 0x80, 0xF6, 0xA2, 0x57, 0xA7, 0x5D),
1793*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xB3, 0x7B, 0xF8, 0x2F, 0xE1, 0x3E, 0x7B),
1794*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1795*b0563631STom Van Eyck };
1796*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_16_Y[] = {
1797*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0xF4, 0xF9, 0x6B, 0x7B, 0x90, 0xDF, 0x30),
1798*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x82, 0xEF, 0x62, 0xA1, 0x4C, 0x53, 0xCA),
1799*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x99, 0x76, 0x01, 0xBA, 0x8D, 0x0F, 0x54),
1800*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xF4, 0x58, 0x73, 0x56, 0xFE, 0xDD, 0x7C),
1801*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xCE, 0xF9, 0xE8, 0xA1, 0x34, 0xC3, 0x5B),
1802*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x5F, 0xDC, 0x6A, 0x3D, 0xD8, 0x7F, 0x42),
1803*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xF4, 0x51, 0xB8, 0xB8, 0xC1, 0xD7, 0x2F),
1804*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x7D, 0x58, 0xD1, 0xD4, 0x1B, 0x4D, 0x23),
1805*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1806*b0563631STom Van Eyck };
1807*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_17_X[] = {
1808*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x95, 0xDF, 0x00, 0xD8, 0x21, 0xDE, 0x94),
1809*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x47, 0x3C, 0xC3, 0xB2, 0x01, 0x53, 0x5D),
1810*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x17, 0x43, 0x23, 0xBD, 0xCA, 0x71, 0xF2),
1811*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xBA, 0x0F, 0x4F, 0xDC, 0x41, 0x54, 0xBE),
1812*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x39, 0x26, 0x70, 0x53, 0x32, 0x18, 0x11),
1813*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x46, 0x07, 0x97, 0x3A, 0x57, 0xE0, 0x01),
1814*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x92, 0x4F, 0xCE, 0xDF, 0x25, 0x80, 0x26),
1815*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x6F, 0x9A, 0x03, 0x05, 0x4B, 0xD1, 0x47),
1816*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1817*b0563631STom Van Eyck };
1818*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_17_Y[] = {
1819*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x01, 0x72, 0x30, 0x90, 0x17, 0x51, 0x20),
1820*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xFB, 0x41, 0x65, 0x5C, 0xB4, 0x2D, 0xEE),
1821*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xCD, 0xCD, 0xAA, 0x41, 0xCC, 0xBB, 0x07),
1822*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xCE, 0x08, 0x0A, 0x63, 0xE9, 0xA2, 0xFF),
1823*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xA8, 0x21, 0x7F, 0x7A, 0x5B, 0x9B, 0x81),
1824*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x6B, 0x89, 0x44, 0x0A, 0x7F, 0x85, 0x5F),
1825*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xDE, 0x7C, 0x19, 0x5C, 0x65, 0x26, 0x61),
1826*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0xAC, 0x62, 0x29, 0x4A, 0xF1, 0xD0, 0x81),
1827*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1828*b0563631STom Van Eyck };
1829*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_18_X[] = {
1830*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x00, 0x40, 0x87, 0xEB, 0xA9, 0x58, 0x56),
1831*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x51, 0x0B, 0xFF, 0x56, 0x35, 0x51, 0xB3),
1832*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xAC, 0x08, 0x94, 0x71, 0xDA, 0xEC, 0x99),
1833*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x4D, 0xC5, 0x7B, 0x31, 0x8B, 0x8D, 0x5E),
1834*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x05, 0xF1, 0x3E, 0x9E, 0x8F, 0x17, 0x8F),
1835*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x9C, 0x4B, 0x62, 0x94, 0xAD, 0x49, 0xFC),
1836*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xC9, 0xC6, 0x8F, 0xFD, 0x33, 0x44, 0x34),
1837*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x96, 0x17, 0x7F, 0x42, 0xBE, 0xF7, 0x0D),
1838*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1839*b0563631STom Van Eyck };
1840*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_18_Y[] = {
1841*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0x29, 0x39, 0x13, 0x08, 0x8D, 0x91, 0x47),
1842*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x79, 0xF9, 0x2F, 0xA9, 0x0A, 0xCF, 0xD6),
1843*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x87, 0x7A, 0xA3, 0x19, 0xAB, 0x55, 0xAD),
1844*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x0B, 0x01, 0xC5, 0x56, 0x19, 0x9D, 0x9E),
1845*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0xDE, 0x82, 0x3B, 0xEA, 0xD3, 0x0B, 0x8C),
1846*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x6B, 0xC7, 0xF3, 0x0F, 0x82, 0x87, 0x6C),
1847*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x2E, 0x23, 0xF2, 0x39, 0x9D, 0x49, 0x70),
1848*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0xDE, 0xAF, 0x7A, 0xEE, 0xB0, 0xDA, 0x70),
1849*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1850*b0563631STom Van Eyck };
1851*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_19_X[] = {
1852*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x4E, 0x2A, 0x50, 0xFD, 0x8E, 0xC0, 0xEB),
1853*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x0F, 0x7C, 0x76, 0x63, 0xD8, 0x89, 0x45),
1854*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x2D, 0xB9, 0x4E, 0xF4, 0xEE, 0x85, 0xCF),
1855*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x95, 0x5C, 0x96, 0x5D, 0xAA, 0x59, 0x0B),
1856*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xDB, 0xD2, 0x68, 0x8E, 0x5A, 0x94, 0x60),
1857*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x02, 0xBF, 0x77, 0x9F, 0xB9, 0x4C, 0xC9),
1858*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xDC, 0xC0, 0xCF, 0x81, 0x1E, 0xC4, 0x6C),
1859*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xCC, 0x37, 0x86, 0xDC, 0xE2, 0x64, 0x72),
1860*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1861*b0563631STom Van Eyck };
1862*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_19_Y[] = {
1863*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x30, 0xB1, 0x59, 0x20, 0x9D, 0x98, 0x28),
1864*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x0C, 0x9D, 0xF8, 0x20, 0xDC, 0x90, 0xBA),
1865*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xA0, 0xF4, 0xE7, 0x3E, 0x9C, 0x9E, 0xA2),
1866*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x25, 0xA2, 0xB0, 0x54, 0xCD, 0x2E, 0x33),
1867*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xD9, 0x42, 0xB0, 0x80, 0xB0, 0xA3, 0x38),
1868*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0xFE, 0x9D, 0x8D, 0x40, 0xFF, 0x27, 0x6D),
1869*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x9D, 0xA6, 0x88, 0x3A, 0x8B, 0x6F, 0x14),
1870*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x39, 0xEE, 0x1F, 0x3F, 0xB1, 0x4F, 0x63),
1871*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1872*b0563631STom Van Eyck };
1873*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_20_X[] = {
1874*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xD7, 0x9E, 0xFF, 0xD2, 0x35, 0x67, 0x03),
1875*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x4F, 0x15, 0x5D, 0xE3, 0xE8, 0x53, 0x86),
1876*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xF7, 0x24, 0x98, 0xA2, 0xCB, 0x11, 0x68),
1877*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x2E, 0x25, 0xE1, 0x94, 0xC5, 0xA3, 0x96),
1878*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x82, 0x6E, 0xBA, 0xE7, 0x43, 0x25, 0xB0),
1879*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x65, 0xB4, 0x49, 0x73, 0x18, 0x35, 0x54),
1880*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x5B, 0xBC, 0x62, 0x86, 0x4C, 0xC1, 0xB7),
1881*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xF2, 0x95, 0xA2, 0xBB, 0xA2, 0x35, 0x65),
1882*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1883*b0563631STom Van Eyck };
1884*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_20_Y[] = {
1885*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x59, 0x62, 0xB0, 0x4B, 0x1E, 0xB4, 0xD8),
1886*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x55, 0xCE, 0xB0, 0x69, 0xBA, 0x63, 0x10),
1887*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0x69, 0x86, 0xDB, 0x34, 0x7D, 0x68, 0x64),
1888*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x06, 0xCA, 0x55, 0x44, 0x36, 0x2B, 0xBA),
1889*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xD4, 0xC4, 0x3D, 0xCD, 0x9E, 0x69, 0xA4),
1890*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x44, 0xE4, 0xBF, 0x31, 0xE6, 0x40, 0x9F),
1891*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x4F, 0xFA, 0x75, 0xE3, 0xFB, 0x97, 0x0E),
1892*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xC0, 0xBD, 0x1C, 0x48, 0xB0, 0x26, 0xD0),
1893*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1894*b0563631STom Van Eyck };
1895*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_21_X[] = {
1896*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x7B, 0x32, 0xFA, 0xF2, 0x6D, 0x84, 0x8E),
1897*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x21, 0x03, 0x1D, 0x0D, 0x22, 0x55, 0x67),
1898*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xF9, 0x42, 0x03, 0x9C, 0xC2, 0xCB, 0xBA),
1899*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xA1, 0x96, 0xD9, 0x9D, 0x11, 0x6F, 0xBE),
1900*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x40, 0x57, 0xEB, 0x40, 0x2D, 0xC0, 0x11),
1901*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x96, 0xBB, 0x4F, 0x2F, 0x23, 0xA8, 0x28),
1902*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x29, 0x85, 0x21, 0xA5, 0x50, 0x62, 0x06),
1903*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x7D, 0x92, 0xCF, 0x87, 0x0C, 0x22, 0xF9),
1904*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1905*b0563631STom Van Eyck };
1906*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_21_Y[] = {
1907*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x0E, 0xA5, 0x32, 0x5B, 0xDF, 0x9C, 0xD5),
1908*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x96, 0x37, 0x2C, 0x88, 0x35, 0x30, 0xA1),
1909*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xB4, 0x69, 0xFF, 0xEB, 0xC6, 0x94, 0x08),
1910*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x55, 0x60, 0xAD, 0xAA, 0x58, 0x14, 0x88),
1911*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xFF, 0xF2, 0xB2, 0xD5, 0xA7, 0xD9, 0x27),
1912*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xAE, 0x54, 0xD2, 0x60, 0x31, 0xF3, 0x15),
1913*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x92, 0x83, 0xE3, 0xF1, 0x42, 0x83, 0x6E),
1914*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xD2, 0xC8, 0xB7, 0x76, 0x45, 0x7F, 0x7D),
1915*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1916*b0563631STom Van Eyck };
1917*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_22_X[] = {
1918*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x11, 0xA4, 0xFB, 0x7A, 0x01, 0xBC, 0xC8),
1919*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x27, 0x73, 0x8D, 0x02, 0x91, 0x27, 0x8E),
1920*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x62, 0xF6, 0xDD, 0x6B, 0xFA, 0x5B, 0xB9),
1921*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0xCA, 0xA2, 0x44, 0x2C, 0xF0, 0x28, 0xD8),
1922*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xF1, 0x7A, 0xA2, 0x42, 0x4C, 0x50, 0xC6),
1923*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x83, 0x3E, 0x50, 0xAB, 0x9C, 0xF7, 0x67),
1924*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xED, 0x78, 0xCB, 0x76, 0x69, 0xDA, 0x42),
1925*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x01, 0x1E, 0x43, 0x27, 0x47, 0x6E, 0xDA),
1926*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1927*b0563631STom Van Eyck };
1928*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_22_Y[] = {
1929*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x4F, 0x54, 0xB9, 0x3E, 0xBD, 0xD5, 0x44),
1930*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x35, 0x40, 0x69, 0x7F, 0x74, 0x9D, 0x32),
1931*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x06, 0x6F, 0x67, 0x68, 0x2B, 0x4D, 0x10),
1932*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x65, 0x41, 0xFC, 0x7C, 0x1E, 0xE8, 0xC8),
1933*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x79, 0x37, 0xAF, 0xFD, 0xD2, 0xDA, 0x4C),
1934*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xA8, 0x69, 0x56, 0x62, 0xA4, 0xE4, 0xA3),
1935*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x71, 0x73, 0x21, 0x8A, 0x17, 0x81, 0xA2),
1936*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x55, 0x8F, 0x7B, 0xB8, 0xAF, 0xF7, 0x86),
1937*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1938*b0563631STom Van Eyck };
1939*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_23_X[] = {
1940*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xD1, 0xBD, 0xBE, 0x8C, 0xBC, 0x60, 0x6E),
1941*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0xA6, 0x57, 0x8C, 0xAE, 0x5C, 0x19, 0xFE),
1942*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0x43, 0xE4, 0xD9, 0xD8, 0x7B, 0xE7, 0x41),
1943*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xB9, 0xE4, 0x85, 0x7C, 0x2E, 0xFC, 0x20),
1944*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x2E, 0x01, 0x2A, 0x6D, 0x56, 0xBE, 0x97),
1945*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x0C, 0x25, 0x9B, 0xAE, 0x86, 0x37, 0x43),
1946*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x22, 0xB3, 0xCB, 0x99, 0x66, 0xB7, 0x9E),
1947*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xF7, 0x90, 0xF0, 0x1B, 0x09, 0x27, 0xF7),
1948*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1949*b0563631STom Van Eyck };
1950*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_23_Y[] = {
1951*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x16, 0x08, 0xEF, 0x39, 0x64, 0x49, 0x31),
1952*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xA0, 0xE3, 0x97, 0xA9, 0x07, 0x54, 0x26),
1953*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xFF, 0xE2, 0x00, 0x07, 0x21, 0x88, 0x20),
1954*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xFD, 0x59, 0x53, 0x05, 0x6C, 0x42, 0x27),
1955*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0xF7, 0x39, 0x5C, 0x82, 0x36, 0xE8, 0x03),
1956*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0x83, 0xA8, 0xE2, 0xA8, 0x43, 0x07, 0x38),
1957*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xAF, 0x2B, 0x79, 0xED, 0xD8, 0x39, 0x87),
1958*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x20, 0x91, 0x7A, 0xC4, 0x07, 0xEF, 0x6C),
1959*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1960*b0563631STom Van Eyck };
1961*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_24_X[] = {
1962*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x10, 0x2F, 0xAA, 0x0C, 0x94, 0x0E, 0x5A),
1963*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x81, 0x87, 0x41, 0x23, 0xEB, 0x55, 0x7C),
1964*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x53, 0xCC, 0x79, 0xB6, 0xEB, 0x6C, 0xCC),
1965*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x77, 0x73, 0x9D, 0xFC, 0x64, 0x6F, 0x7F),
1966*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x40, 0xE3, 0x6D, 0x1C, 0x16, 0x71, 0x15),
1967*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0xF4, 0x1B, 0xFF, 0x1C, 0x2F, 0xA5, 0xD7),
1968*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x0E, 0x0B, 0x11, 0xF4, 0x8D, 0x93, 0xAF),
1969*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xC5, 0x64, 0x6F, 0x24, 0x19, 0xF2, 0x9B),
1970*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1971*b0563631STom Van Eyck };
1972*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_24_Y[] = {
1973*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xB3, 0xAF, 0xA5, 0x0E, 0x4F, 0x5E, 0xE1),
1974*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0x77, 0xCA, 0xF2, 0x6D, 0xC5, 0xF6, 0x9F),
1975*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x18, 0x8E, 0x33, 0x68, 0x6C, 0xE8, 0xE0),
1976*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x8B, 0x80, 0x90, 0x19, 0x7F, 0x90, 0x96),
1977*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x80, 0x6B, 0x68, 0xE2, 0x7D, 0xD4, 0xD0),
1978*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xC1, 0x67, 0xB3, 0x72, 0xCB, 0xBF, 0x2F),
1979*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0xD5, 0xD3, 0x1D, 0x14, 0x58, 0x0A, 0x80),
1980*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x7A, 0x65, 0x98, 0xB3, 0x07, 0x4B, 0x2F),
1981*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1982*b0563631STom Van Eyck };
1983*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_25_X[] = {
1984*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x87, 0x0F, 0x5F, 0xCF, 0xA2, 0x01, 0x08),
1985*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xC9, 0xC8, 0x6E, 0x35, 0x87, 0xA5, 0x67),
1986*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x3E, 0x91, 0xA0, 0xAB, 0x24, 0x1E, 0xF2),
1987*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xBC, 0x02, 0x35, 0x70, 0xC1, 0x5F, 0x98),
1988*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x59, 0xA0, 0x50, 0x04, 0x80, 0x52, 0x85),
1989*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x56, 0x6E, 0x42, 0x8F, 0x8C, 0x91, 0x65),
1990*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xA2, 0xCB, 0xA5, 0xDE, 0x14, 0x24, 0x38),
1991*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0xCB, 0x74, 0x28, 0xE6, 0xA7, 0xE7, 0xC3),
1992*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1993*b0563631STom Van Eyck };
1994*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_25_Y[] = {
1995*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x73, 0xA8, 0x8F, 0x9E, 0x0E, 0x63, 0x96),
1996*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x1B, 0x77, 0xC7, 0xC1, 0x38, 0xF9, 0xDC),
1997*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x3C, 0xCF, 0xA8, 0x7A, 0xD7, 0xF3, 0xC4),
1998*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x5F, 0x9A, 0xC9, 0xAD, 0xE9, 0x1A, 0x93),
1999*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0xCF, 0x2B, 0x5E, 0xD5, 0x81, 0x95, 0xA8),
2000*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x88, 0x75, 0x29, 0x1F, 0xC7, 0xC7, 0xD0),
2001*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA9, 0x5A, 0x4D, 0x63, 0x95, 0xF9, 0x4E),
2002*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xCD, 0x04, 0x8F, 0xCD, 0x91, 0xDE, 0xC6),
2003*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2004*b0563631STom Van Eyck };
2005*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_26_X[] = {
2006*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xD4, 0xFD, 0x25, 0x11, 0x99, 0x6E, 0xEA),
2007*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x83, 0x01, 0x3D, 0xFB, 0x56, 0xA5, 0x4E),
2008*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x3A, 0xDC, 0x74, 0xC2, 0xD7, 0xCF, 0xE8),
2009*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0xBD, 0xF1, 0xDD, 0xA3, 0x07, 0x03, 0xE2),
2010*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xBE, 0xE9, 0x2E, 0x58, 0x84, 0x66, 0xFC),
2011*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x20, 0x78, 0x37, 0x79, 0x0B, 0xA6, 0x64),
2012*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xF2, 0xAC, 0x65, 0xC8, 0xC9, 0x2F, 0x61),
2013*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x93, 0xE5, 0x0D, 0x0C, 0xC6, 0xB8, 0xCB),
2014*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2015*b0563631STom Van Eyck };
2016*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_26_Y[] = {
2017*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xAD, 0x5C, 0x19, 0x12, 0x61, 0x0E, 0x25),
2018*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x4F, 0x0B, 0x1F, 0x49, 0x7E, 0xCD, 0x81),
2019*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x2E, 0x30, 0x61, 0xDB, 0x08, 0x68, 0x9B),
2020*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x78, 0xAF, 0xB3, 0x08, 0xC1, 0x69, 0xE5),
2021*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x5F, 0x5D, 0xC1, 0x57, 0x6F, 0xD8, 0x34),
2022*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0xD3, 0x6A, 0xF7, 0xFD, 0x86, 0xE5, 0xB3),
2023*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x63, 0xBD, 0x70, 0x7B, 0x47, 0xE8, 0x6D),
2024*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x62, 0xC8, 0x7E, 0x9D, 0x11, 0x2B, 0xA5),
2025*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2026*b0563631STom Van Eyck };
2027*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_27_X[] = {
2028*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x84, 0xFD, 0xD5, 0x9A, 0x56, 0x7F, 0x5C),
2029*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xBB, 0xA4, 0x6F, 0x12, 0x6E, 0x4D, 0xF8),
2030*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x08, 0xA1, 0x82, 0x9C, 0x62, 0x74, 0x7B),
2031*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x58, 0x22, 0x05, 0x1D, 0x15, 0x35, 0x79),
2032*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x88, 0xCF, 0x5C, 0x05, 0x78, 0xFB, 0x94),
2033*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x6B, 0x2F, 0x79, 0x09, 0x73, 0x67, 0xEC),
2034*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA0, 0x80, 0xD8, 0xE8, 0xEC, 0xFB, 0x42),
2035*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xE7, 0x0B, 0xB7, 0x81, 0x48, 0x7B, 0xD9),
2036*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2037*b0563631STom Van Eyck };
2038*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_27_Y[] = {
2039*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x53, 0xA9, 0xED, 0x61, 0x92, 0xD7, 0x85),
2040*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x49, 0xD9, 0x5D, 0x9B, 0x4E, 0x89, 0x35),
2041*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x12, 0xEB, 0x9A, 0xC9, 0xCB, 0xC1, 0x95),
2042*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xDC, 0x95, 0x16, 0xFE, 0x29, 0x70, 0x01),
2043*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x33, 0xB1, 0xD6, 0x78, 0xB9, 0xE2, 0x36),
2044*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xCE, 0x88, 0xC3, 0xFD, 0x7A, 0x6B, 0xB8),
2045*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x1E, 0x50, 0x1E, 0xAF, 0xB1, 0x25, 0x2D),
2046*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xE7, 0xD7, 0xD5, 0xBD, 0x7A, 0x12, 0xF9),
2047*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2048*b0563631STom Van Eyck };
2049*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_28_X[] = {
2050*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xAA, 0xA2, 0x80, 0x5D, 0x8F, 0xCD, 0xC8),
2051*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x39, 0x79, 0x64, 0xA1, 0x67, 0x3C, 0xB7),
2052*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xC7, 0x49, 0xFF, 0x7F, 0xAC, 0xAB, 0x55),
2053*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x54, 0x3E, 0x83, 0xF0, 0x3D, 0xBC, 0xB5),
2054*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x92, 0x4A, 0x38, 0x42, 0x8A, 0xAB, 0xF6),
2055*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x0B, 0x4F, 0xEE, 0x9E, 0x92, 0xA5, 0xBE),
2056*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xDD, 0x19, 0x96, 0xF2, 0xF0, 0x6B, 0x2E),
2057*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xFC, 0xDD, 0xB2, 0x8A, 0xE5, 0x4C, 0x22),
2058*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2059*b0563631STom Van Eyck };
2060*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_28_Y[] = {
2061*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x06, 0x49, 0xAC, 0x99, 0x7E, 0xF8, 0x12),
2062*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xC8, 0x01, 0x51, 0xEA, 0xF6, 0x52, 0xE7),
2063*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x89, 0x66, 0x2B, 0x1F, 0x9B, 0x2A, 0xA3),
2064*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x0F, 0x95, 0x07, 0x2B, 0x6C, 0x6E, 0x9E),
2065*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xC3, 0xB4, 0xBB, 0x91, 0x1F, 0xA3, 0x72),
2066*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x6E, 0x54, 0x28, 0x7B, 0x9C, 0x79, 0x2E),
2067*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x45, 0xFF, 0xA6, 0xDA, 0xA2, 0x83, 0x71),
2068*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xDE, 0x8F, 0x17, 0x37, 0x82, 0xCB, 0xE2),
2069*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2070*b0563631STom Van Eyck };
2071*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_29_X[] = {
2072*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x94, 0x3F, 0x26, 0xC9, 0x1D, 0xD9, 0xAE),
2073*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x97, 0x28, 0x20, 0xCD, 0xC1, 0xF3, 0x40),
2074*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0xC9, 0xB5, 0x60, 0x9B, 0x1E, 0xDC, 0x74),
2075*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0xB9, 0x5B, 0x7D, 0xA0, 0xB2, 0x8C, 0xF0),
2076*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xD1, 0x42, 0xE6, 0x39, 0x33, 0x6D, 0xBB),
2077*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xC0, 0xFC, 0xD2, 0x14, 0x5D, 0x3E, 0x3C),
2078*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0x4A, 0x3E, 0x40, 0x16, 0x93, 0x15, 0xCF),
2079*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x24, 0xC1, 0x27, 0x27, 0xE5, 0x4B, 0xD8),
2080*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2081*b0563631STom Van Eyck };
2082*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_29_Y[] = {
2083*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x50, 0xD8, 0xBC, 0xC1, 0x46, 0x22, 0xBB),
2084*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x0E, 0x60, 0xA1, 0xB3, 0x50, 0xD4, 0x86),
2085*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0xB1, 0x26, 0xB6, 0x6D, 0x47, 0x5A, 0x6F),
2086*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0xAC, 0x11, 0x35, 0x3E, 0xB9, 0xF4, 0x01),
2087*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x97, 0xFA, 0xBB, 0x6B, 0x39, 0x13, 0xD8),
2088*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x7B, 0x34, 0x12, 0x75, 0x8E, 0x9B, 0xC6),
2089*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x9E, 0xCD, 0x29, 0xB6, 0xEF, 0x8D, 0x10),
2090*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xAC, 0xE9, 0x25, 0x27, 0xBB, 0x78, 0x47),
2091*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2092*b0563631STom Van Eyck };
2093*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_30_X[] = {
2094*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x7A, 0xA8, 0xD3, 0xE3, 0x66, 0xE5, 0x66),
2095*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x4C, 0xC4, 0x2C, 0x76, 0x81, 0x50, 0x32),
2096*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x71, 0x08, 0xB8, 0x52, 0x7C, 0xAF, 0xDC),
2097*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x59, 0x24, 0xDD, 0xFB, 0x2F, 0xD0, 0xDA),
2098*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xCD, 0x56, 0xE9, 0xAC, 0x91, 0xE6, 0xB9),
2099*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x64, 0x20, 0xC6, 0x9F, 0xE4, 0xEF, 0xDF),
2100*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x2C, 0x8F, 0x8C, 0x97, 0xF6, 0x22, 0xC3),
2101*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xF4, 0x88, 0xAA, 0xA8, 0xD7, 0xA5, 0x68),
2102*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2103*b0563631STom Van Eyck };
2104*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_30_Y[] = {
2105*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x6C, 0xAE, 0x83, 0xB1, 0x55, 0x55, 0xEE),
2106*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x67, 0x84, 0x47, 0x7C, 0x83, 0x5C, 0x89),
2107*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x10, 0x4D, 0xDD, 0x30, 0x60, 0xB0, 0xE6),
2108*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xA7, 0x36, 0x76, 0x24, 0x32, 0x9F, 0x9D),
2109*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x42, 0x81, 0xFB, 0xA4, 0x2E, 0x13, 0x68),
2110*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x94, 0x91, 0xFF, 0x99, 0xA0, 0x09, 0x61),
2111*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x83, 0xA1, 0x76, 0xAF, 0x37, 0x5C, 0x77),
2112*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xA8, 0x04, 0x86, 0xC4, 0xA9, 0x79, 0x42),
2113*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2114*b0563631STom Van Eyck };
2115*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_31_X[] = {
2116*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x8C, 0xC2, 0x34, 0xFB, 0x83, 0x28, 0x27),
2117*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x03, 0x7D, 0x5E, 0x9E, 0x0E, 0xB0, 0x22),
2118*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x02, 0x46, 0x7F, 0xB9, 0xAC, 0xBB, 0x23),
2119*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xED, 0x48, 0xC2, 0x96, 0x4D, 0x56, 0x27),
2120*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0xB5, 0xC5, 0xD1, 0xE6, 0x1C, 0x7E, 0x9B),
2121*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x2E, 0x18, 0x71, 0x2D, 0x7B, 0xD7, 0xB3),
2122*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x46, 0x9D, 0xDE, 0xAA, 0x78, 0x8E, 0xB1),
2123*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xD7, 0x69, 0x2E, 0xE1, 0xD9, 0x48, 0xDE),
2124*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2125*b0563631STom Van Eyck };
2126*b0563631STom Van Eyck static const mbedtls_mpi_uint secp521r1_T_31_Y[] = {
2127*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xFF, 0x9E, 0x09, 0x22, 0x22, 0xE6, 0x8D),
2128*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x14, 0x28, 0x13, 0x1B, 0x62, 0x12, 0x22),
2129*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x7F, 0x67, 0x03, 0xB0, 0xC0, 0xF3, 0x05),
2130*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xC3, 0x0F, 0xFB, 0x25, 0x48, 0x3E, 0xF4),
2131*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x6E, 0x53, 0x98, 0x36, 0xB3, 0xD3, 0x94),
2132*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x81, 0x54, 0x22, 0xA4, 0xCC, 0xC1, 0x22),
2133*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xBA, 0xFC, 0xA9, 0xDF, 0x68, 0x86, 0x2B),
2134*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x92, 0x0E, 0xC3, 0xF2, 0x58, 0xE8, 0x51),
2135*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2136*b0563631STom Van Eyck };
2137*b0563631STom Van Eyck static const mbedtls_ecp_point secp521r1_T[32] = {
2138*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp521r1_T_0_X, secp521r1_T_0_Y),
2139*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_1_X, secp521r1_T_1_Y),
2140*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_2_X, secp521r1_T_2_Y),
2141*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_3_X, secp521r1_T_3_Y),
2142*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_4_X, secp521r1_T_4_Y),
2143*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_5_X, secp521r1_T_5_Y),
2144*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_6_X, secp521r1_T_6_Y),
2145*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_7_X, secp521r1_T_7_Y),
2146*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_8_X, secp521r1_T_8_Y),
2147*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_9_X, secp521r1_T_9_Y),
2148*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_10_X, secp521r1_T_10_Y),
2149*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_11_X, secp521r1_T_11_Y),
2150*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_12_X, secp521r1_T_12_Y),
2151*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_13_X, secp521r1_T_13_Y),
2152*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_14_X, secp521r1_T_14_Y),
2153*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_15_X, secp521r1_T_15_Y),
2154*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_16_X, secp521r1_T_16_Y),
2155*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_17_X, secp521r1_T_17_Y),
2156*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_18_X, secp521r1_T_18_Y),
2157*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_19_X, secp521r1_T_19_Y),
2158*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_20_X, secp521r1_T_20_Y),
2159*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_21_X, secp521r1_T_21_Y),
2160*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_22_X, secp521r1_T_22_Y),
2161*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_23_X, secp521r1_T_23_Y),
2162*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_24_X, secp521r1_T_24_Y),
2163*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_25_X, secp521r1_T_25_Y),
2164*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_26_X, secp521r1_T_26_Y),
2165*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_27_X, secp521r1_T_27_Y),
2166*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_28_X, secp521r1_T_28_Y),
2167*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_29_X, secp521r1_T_29_Y),
2168*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_30_X, secp521r1_T_30_Y),
2169*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp521r1_T_31_X, secp521r1_T_31_Y),
2170*b0563631STom Van Eyck };
2171*b0563631STom Van Eyck #else
2172*b0563631STom Van Eyck #define secp521r1_T NULL
2173*b0563631STom Van Eyck #endif
2174*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
2175*b0563631STom Van Eyck
2176*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
2177*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_p[] = {
2178*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xEE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF),
2179*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2180*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2181*b0563631STom Van Eyck };
2182*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_a[] = {
2183*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x00, 0x00),
2184*b0563631STom Van Eyck };
2185*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_b[] = {
2186*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x03, 0x00),
2187*b0563631STom Van Eyck };
2188*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_gx[] = {
2189*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x6C, 0xE0, 0xEA, 0xB1, 0xD1, 0xA5, 0x1D),
2190*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xF4, 0xB7, 0x80, 0x02, 0x7D, 0xB0, 0x26),
2191*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xE9, 0x57, 0xC0, 0x0E, 0xF1, 0x4F, 0xDB),
2192*b0563631STom Van Eyck };
2193*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_gy[] = {
2194*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x2F, 0x5E, 0xD9, 0x88, 0xAA, 0x82, 0x40),
2195*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x86, 0xBE, 0x15, 0xD0, 0x63, 0x41, 0x84),
2196*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x28, 0x56, 0x9C, 0x6D, 0x2F, 0x2F, 0x9B),
2197*b0563631STom Van Eyck };
2198*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_n[] = {
2199*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xFD, 0xDE, 0x74, 0x6A, 0x46, 0x69, 0x0F),
2200*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xFC, 0xF2, 0x26, 0xFE, 0xFF, 0xFF, 0xFF),
2201*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2202*b0563631STom Van Eyck };
2203*b0563631STom Van Eyck
2204*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2205*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_0_X[] = {
2206*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x6C, 0xE0, 0xEA, 0xB1, 0xD1, 0xA5, 0x1D),
2207*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xF4, 0xB7, 0x80, 0x02, 0x7D, 0xB0, 0x26),
2208*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xE9, 0x57, 0xC0, 0x0E, 0xF1, 0x4F, 0xDB),
2209*b0563631STom Van Eyck };
2210*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_0_Y[] = {
2211*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x2F, 0x5E, 0xD9, 0x88, 0xAA, 0x82, 0x40),
2212*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x86, 0xBE, 0x15, 0xD0, 0x63, 0x41, 0x84),
2213*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x28, 0x56, 0x9C, 0x6D, 0x2F, 0x2F, 0x9B),
2214*b0563631STom Van Eyck };
2215*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_1_X[] = {
2216*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x77, 0x3D, 0x0D, 0x85, 0x48, 0xA8, 0xA9),
2217*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x07, 0xDF, 0x1D, 0xB3, 0xB3, 0x01, 0x54),
2218*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x86, 0xF6, 0xAF, 0x19, 0x2A, 0x88, 0x2E),
2219*b0563631STom Van Eyck };
2220*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_1_Y[] = {
2221*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x90, 0xB6, 0x2F, 0x48, 0x36, 0x4C, 0x5B),
2222*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x11, 0x14, 0xA6, 0xCB, 0xBA, 0x15, 0xD9),
2223*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0xB0, 0xF2, 0xD4, 0xC9, 0xDA, 0xBA, 0xD7),
2224*b0563631STom Van Eyck };
2225*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_2_X[] = {
2226*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0xC1, 0x9C, 0xE6, 0xBB, 0xFB, 0xCF, 0x23),
2227*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x19, 0xAC, 0x5A, 0xC9, 0x8A, 0x1C, 0x75),
2228*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xF6, 0x76, 0x86, 0x89, 0x27, 0x8D, 0x28),
2229*b0563631STom Van Eyck };
2230*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_2_Y[] = {
2231*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xE0, 0x6F, 0x34, 0xBA, 0x5E, 0xD3, 0x96),
2232*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0xDC, 0xA6, 0x87, 0xC9, 0x9D, 0xC0, 0x82),
2233*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x11, 0x7E, 0xD6, 0xF7, 0x33, 0xFC, 0xE4),
2234*b0563631STom Van Eyck };
2235*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_3_X[] = {
2236*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x37, 0x3E, 0xC0, 0x7F, 0x62, 0xE7, 0x54),
2237*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x3B, 0x69, 0x9D, 0x44, 0xBC, 0x82, 0x99),
2238*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x84, 0xB3, 0x5F, 0x2B, 0xA5, 0x9E, 0x2C),
2239*b0563631STom Van Eyck };
2240*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_3_Y[] = {
2241*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x95, 0xEB, 0x4C, 0x04, 0xB4, 0xF4, 0x75),
2242*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xAD, 0x4B, 0xD5, 0x9A, 0xEB, 0xC4, 0x4E),
2243*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xB1, 0xC5, 0x59, 0xE3, 0xD5, 0x16, 0x2A),
2244*b0563631STom Van Eyck };
2245*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_4_X[] = {
2246*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x2A, 0xCC, 0xAC, 0xD0, 0xEE, 0x50, 0xEC),
2247*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x83, 0xE0, 0x5B, 0x14, 0x44, 0x52, 0x20),
2248*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x15, 0x2D, 0x78, 0xF6, 0x51, 0x32, 0xCF),
2249*b0563631STom Van Eyck };
2250*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_4_Y[] = {
2251*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x36, 0x9B, 0xDD, 0xF8, 0xDD, 0xEF, 0xB2),
2252*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xB1, 0x6A, 0x2B, 0xAF, 0xEB, 0x2B, 0xB1),
2253*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x87, 0x7A, 0x66, 0x5D, 0x5B, 0xDF, 0x8F),
2254*b0563631STom Van Eyck };
2255*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_5_X[] = {
2256*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x45, 0xE5, 0x81, 0x9B, 0xEB, 0x37, 0x23),
2257*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x29, 0xE2, 0x20, 0x64, 0x23, 0x6B, 0x6E),
2258*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x1D, 0x41, 0xE1, 0x9B, 0x61, 0x7B, 0xD9),
2259*b0563631STom Van Eyck };
2260*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_5_Y[] = {
2261*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x57, 0xA3, 0x0A, 0x13, 0xE4, 0x59, 0x15),
2262*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x6E, 0x4A, 0x48, 0x84, 0x90, 0xAC, 0xC7),
2263*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xB8, 0xF5, 0xF3, 0xDE, 0xA0, 0xA1, 0x1D),
2264*b0563631STom Van Eyck };
2265*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_6_X[] = {
2266*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x32, 0x81, 0xA9, 0x91, 0x5A, 0x4E, 0x33),
2267*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0xA8, 0x90, 0xBE, 0x0F, 0xEC, 0xC0, 0x85),
2268*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x30, 0xD7, 0x08, 0xAE, 0xC4, 0x3A, 0xA5),
2269*b0563631STom Van Eyck };
2270*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_6_Y[] = {
2271*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x55, 0xE3, 0x76, 0xB3, 0x64, 0x74, 0x9F),
2272*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x75, 0xD4, 0xDB, 0x98, 0xD7, 0x39, 0xAE),
2273*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xEB, 0x8A, 0xAB, 0x16, 0xD9, 0xD4, 0x0B),
2274*b0563631STom Van Eyck };
2275*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_7_X[] = {
2276*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xBE, 0xF9, 0xC7, 0xC7, 0xBA, 0xF3, 0xA1),
2277*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x85, 0x59, 0xF3, 0x60, 0x41, 0x02, 0xD2),
2278*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x1C, 0x4A, 0xA4, 0xC7, 0xED, 0x66, 0xBC),
2279*b0563631STom Van Eyck };
2280*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_7_Y[] = {
2281*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x9C, 0x2E, 0x46, 0x52, 0x18, 0x87, 0x14),
2282*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x35, 0x5A, 0x75, 0xAC, 0x4D, 0x75, 0x91),
2283*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0x2F, 0xAC, 0xFC, 0xBC, 0xE6, 0x93, 0x5E),
2284*b0563631STom Van Eyck };
2285*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_8_X[] = {
2286*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x4D, 0xC9, 0x18, 0xE9, 0x00, 0xEB, 0x33),
2287*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x69, 0x72, 0x07, 0x5A, 0x59, 0xA8, 0x26),
2288*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x65, 0x83, 0x20, 0x10, 0xF9, 0x69, 0x82),
2289*b0563631STom Van Eyck };
2290*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_8_Y[] = {
2291*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x56, 0x7F, 0x9F, 0xBF, 0x46, 0x0C, 0x7E),
2292*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0xCF, 0xF0, 0xDC, 0xDF, 0x2D, 0xE6, 0xE5),
2293*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0xF0, 0x72, 0x3A, 0x7A, 0x03, 0xE5, 0x22),
2294*b0563631STom Van Eyck };
2295*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_9_X[] = {
2296*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xAA, 0x57, 0x13, 0x37, 0xA7, 0x2C, 0xD4),
2297*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xAC, 0xA2, 0x23, 0xF9, 0x84, 0x60, 0xD3),
2298*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xEB, 0x51, 0x70, 0x64, 0x78, 0xCA, 0x05),
2299*b0563631STom Van Eyck };
2300*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_9_Y[] = {
2301*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xCC, 0x30, 0x62, 0x93, 0x46, 0x13, 0xE9),
2302*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x26, 0xCC, 0x6C, 0x3D, 0x5C, 0xDA, 0x2C),
2303*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xAA, 0xB8, 0x03, 0xA4, 0x1A, 0x00, 0x96),
2304*b0563631STom Van Eyck };
2305*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_10_X[] = {
2306*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x9D, 0xE6, 0xCC, 0x4E, 0x2E, 0xC2, 0xD5),
2307*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xC3, 0x8A, 0xAE, 0x6F, 0x40, 0x05, 0xEB),
2308*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x8F, 0x4A, 0x4D, 0x35, 0xD3, 0x50, 0x9D),
2309*b0563631STom Van Eyck };
2310*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_10_Y[] = {
2311*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xFD, 0x98, 0xAB, 0xC7, 0x03, 0xB4, 0x55),
2312*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x40, 0xD2, 0x9F, 0xCA, 0xD0, 0x53, 0x00),
2313*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x84, 0x00, 0x6F, 0xC8, 0xAD, 0xED, 0x8D),
2314*b0563631STom Van Eyck };
2315*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_11_X[] = {
2316*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xD3, 0x57, 0xD7, 0xC3, 0x07, 0xBD, 0xD7),
2317*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0xBA, 0x47, 0x1D, 0x3D, 0xEF, 0x98, 0x6C),
2318*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xC0, 0x6C, 0x7F, 0x12, 0xEE, 0x9F, 0x67),
2319*b0563631STom Van Eyck };
2320*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_11_Y[] = {
2321*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x02, 0xDA, 0x79, 0xAA, 0xC9, 0x27, 0xC4),
2322*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x79, 0xC7, 0x71, 0x84, 0xCB, 0xE5, 0x5A),
2323*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x37, 0x06, 0xBA, 0xB5, 0xD5, 0x18, 0x4C),
2324*b0563631STom Van Eyck };
2325*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_12_X[] = {
2326*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x65, 0x72, 0x6C, 0xF2, 0x63, 0x27, 0x6A),
2327*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xBC, 0x71, 0xDF, 0x75, 0xF8, 0x98, 0x4D),
2328*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x70, 0x9B, 0xDC, 0xE7, 0x18, 0x71, 0xFF),
2329*b0563631STom Van Eyck };
2330*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_12_Y[] = {
2331*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x5B, 0x9F, 0x00, 0x5A, 0xB6, 0x80, 0x7A),
2332*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xE0, 0xBB, 0xFC, 0x5E, 0x78, 0x9C, 0x89),
2333*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x03, 0x68, 0x83, 0x3D, 0x2E, 0x4C, 0xDD),
2334*b0563631STom Van Eyck };
2335*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_13_X[] = {
2336*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x49, 0x23, 0xA8, 0xCB, 0x3B, 0x1A, 0xF6),
2337*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x3D, 0xA7, 0x46, 0xCF, 0x75, 0xB6, 0x2C),
2338*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xFD, 0x30, 0x01, 0xB6, 0xEF, 0xF9, 0xE8),
2339*b0563631STom Van Eyck };
2340*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_13_Y[] = {
2341*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xFA, 0xDA, 0xB8, 0x29, 0x42, 0xC9, 0xC7),
2342*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xD7, 0xA0, 0xE6, 0x6B, 0x86, 0x61, 0x39),
2343*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0xE9, 0xD3, 0x37, 0xD8, 0xE7, 0x35, 0xA9),
2344*b0563631STom Van Eyck };
2345*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_14_X[] = {
2346*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xC8, 0x8E, 0xB1, 0xCB, 0xB1, 0xB5, 0x4D),
2347*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xD7, 0x46, 0x7D, 0xAF, 0xE2, 0xDC, 0xBB),
2348*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x46, 0xE7, 0xD8, 0x76, 0x31, 0x90, 0x76),
2349*b0563631STom Van Eyck };
2350*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_14_Y[] = {
2351*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xD3, 0xF4, 0x74, 0xE1, 0x67, 0xD8, 0x66),
2352*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x70, 0x3C, 0xC8, 0xAF, 0x5F, 0xF4, 0x58),
2353*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x4E, 0xED, 0x5C, 0x43, 0xB3, 0x16, 0x35),
2354*b0563631STom Van Eyck };
2355*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_15_X[] = {
2356*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xAE, 0xD1, 0xDD, 0x31, 0x14, 0xD3, 0xF0),
2357*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x14, 0x06, 0x13, 0x12, 0x1C, 0x81, 0xF5),
2358*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xF9, 0x0C, 0x91, 0xF7, 0x67, 0x59, 0x63),
2359*b0563631STom Van Eyck };
2360*b0563631STom Van Eyck static const mbedtls_mpi_uint secp192k1_T_15_Y[] = {
2361*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x91, 0xE2, 0xF4, 0x9D, 0xEB, 0x88, 0x87),
2362*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x82, 0x30, 0x9C, 0xAE, 0x18, 0x4D, 0xB7),
2363*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x79, 0xCF, 0x17, 0xA5, 0x1E, 0xE8, 0xC8),
2364*b0563631STom Van Eyck };
2365*b0563631STom Van Eyck static const mbedtls_ecp_point secp192k1_T[16] = {
2366*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp192k1_T_0_X, secp192k1_T_0_Y),
2367*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_1_X, secp192k1_T_1_Y),
2368*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_2_X, secp192k1_T_2_Y),
2369*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_3_X, secp192k1_T_3_Y),
2370*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_4_X, secp192k1_T_4_Y),
2371*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_5_X, secp192k1_T_5_Y),
2372*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_6_X, secp192k1_T_6_Y),
2373*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_7_X, secp192k1_T_7_Y),
2374*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_8_X, secp192k1_T_8_Y),
2375*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_9_X, secp192k1_T_9_Y),
2376*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_10_X, secp192k1_T_10_Y),
2377*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_11_X, secp192k1_T_11_Y),
2378*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_12_X, secp192k1_T_12_Y),
2379*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_13_X, secp192k1_T_13_Y),
2380*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_14_X, secp192k1_T_14_Y),
2381*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp192k1_T_15_X, secp192k1_T_15_Y),
2382*b0563631STom Van Eyck };
2383*b0563631STom Van Eyck #else
2384*b0563631STom Van Eyck #define secp192k1_T NULL
2385*b0563631STom Van Eyck #endif
2386*b0563631STom Van Eyck
2387*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
2388*b0563631STom Van Eyck
2389*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
2390*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_p[] = {
2391*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xE5, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF),
2392*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2393*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2394*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_4(0xFF, 0xFF, 0xFF, 0xFF),
2395*b0563631STom Van Eyck };
2396*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_a[] = {
2397*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x00, 0x00),
2398*b0563631STom Van Eyck };
2399*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_b[] = {
2400*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x05, 0x00),
2401*b0563631STom Van Eyck };
2402*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_gx[] = {
2403*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xA4, 0xB7, 0xB6, 0x0E, 0x65, 0x7E, 0x0F),
2404*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x75, 0x70, 0xE4, 0xE9, 0x67, 0xA4, 0x69),
2405*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x28, 0xFC, 0x30, 0xDF, 0x99, 0xF0, 0x4D),
2406*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_4(0x33, 0x5B, 0x45, 0xA1),
2407*b0563631STom Van Eyck };
2408*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_gy[] = {
2409*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x61, 0x6D, 0x55, 0xDB, 0x4B, 0xCA, 0xE2),
2410*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xBD, 0xB0, 0xC0, 0xF7, 0x19, 0xE3, 0xF7),
2411*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xFB, 0xCA, 0x82, 0x42, 0x34, 0xBA, 0x7F),
2412*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_4(0xED, 0x9F, 0x08, 0x7E),
2413*b0563631STom Van Eyck };
2414*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_n[] = {
2415*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xB1, 0x9F, 0x76, 0x71, 0xA9, 0xF0, 0xCA),
2416*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x61, 0xEC, 0xD2, 0xE8, 0xDC, 0x01, 0x00),
2417*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2418*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00),
2419*b0563631STom Van Eyck };
2420*b0563631STom Van Eyck
2421*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2422*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_0_X[] = {
2423*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xA4, 0xB7, 0xB6, 0x0E, 0x65, 0x7E, 0x0F),
2424*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x75, 0x70, 0xE4, 0xE9, 0x67, 0xA4, 0x69),
2425*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x28, 0xFC, 0x30, 0xDF, 0x99, 0xF0, 0x4D),
2426*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x5B, 0x45, 0xA1, 0x00, 0x00, 0x00, 0x00),
2427*b0563631STom Van Eyck };
2428*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_0_Y[] = {
2429*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x61, 0x6D, 0x55, 0xDB, 0x4B, 0xCA, 0xE2),
2430*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xBD, 0xB0, 0xC0, 0xF7, 0x19, 0xE3, 0xF7),
2431*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xFB, 0xCA, 0x82, 0x42, 0x34, 0xBA, 0x7F),
2432*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x9F, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00),
2433*b0563631STom Van Eyck };
2434*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_1_X[] = {
2435*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x6C, 0x22, 0x22, 0x40, 0x89, 0xAE, 0x7A),
2436*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x92, 0xE1, 0x87, 0x56, 0x35, 0xAF, 0x9B),
2437*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xAF, 0x08, 0x35, 0x27, 0xEA, 0x04, 0xED),
2438*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x53, 0xFD, 0xCF, 0x00, 0x00, 0x00, 0x00),
2439*b0563631STom Van Eyck };
2440*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_1_Y[] = {
2441*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xD0, 0x9F, 0x8D, 0xF3, 0x63, 0x54, 0x30),
2442*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0xDB, 0x0F, 0x61, 0x54, 0x26, 0xD1, 0x98),
2443*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x21, 0xF7, 0x1B, 0xB5, 0x1D, 0xF6, 0x7E),
2444*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x05, 0xDA, 0x8F, 0x00, 0x00, 0x00, 0x00),
2445*b0563631STom Van Eyck };
2446*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_2_X[] = {
2447*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x26, 0x73, 0xBC, 0xE4, 0x29, 0x62, 0x56),
2448*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x95, 0x17, 0x8B, 0xC3, 0x9B, 0xAC, 0xCC),
2449*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xDB, 0x77, 0xDF, 0xDD, 0x13, 0x04, 0x98),
2450*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0xFC, 0x22, 0x93, 0x00, 0x00, 0x00, 0x00),
2451*b0563631STom Van Eyck };
2452*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_2_Y[] = {
2453*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x65, 0xF1, 0x5A, 0x37, 0xEF, 0x79, 0xAD),
2454*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x01, 0x37, 0xAC, 0x9A, 0x5B, 0x51, 0x65),
2455*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x75, 0x13, 0xA9, 0x4A, 0xAD, 0xFE, 0x9B),
2456*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x82, 0x6F, 0x66, 0x00, 0x00, 0x00, 0x00),
2457*b0563631STom Van Eyck };
2458*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_3_X[] = {
2459*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x5E, 0xF0, 0x40, 0xC3, 0xA6, 0xE2, 0x1E),
2460*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x9A, 0x6F, 0xCF, 0x11, 0x26, 0x66, 0x85),
2461*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x73, 0xA8, 0xCF, 0x2B, 0x12, 0x36, 0x37),
2462*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xB3, 0x0A, 0x58, 0x00, 0x00, 0x00, 0x00),
2463*b0563631STom Van Eyck };
2464*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_3_Y[] = {
2465*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x79, 0x00, 0x55, 0x04, 0x34, 0x90, 0x1A),
2466*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x54, 0x1C, 0xC2, 0x45, 0x0C, 0x1B, 0x23),
2467*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x19, 0xAB, 0xA8, 0xFC, 0x73, 0xDC, 0xEE),
2468*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0xFB, 0x93, 0xCE, 0x00, 0x00, 0x00, 0x00),
2469*b0563631STom Van Eyck };
2470*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_4_X[] = {
2471*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x75, 0xD0, 0x66, 0x95, 0x86, 0xCA, 0x66),
2472*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xEA, 0x29, 0x16, 0x6A, 0x38, 0xDF, 0x41),
2473*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA2, 0x36, 0x2F, 0xDC, 0xBB, 0x5E, 0xF7),
2474*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x89, 0x59, 0x49, 0x00, 0x00, 0x00, 0x00),
2475*b0563631STom Van Eyck };
2476*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_4_Y[] = {
2477*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xA3, 0x99, 0x9D, 0xB8, 0x77, 0x9D, 0x1D),
2478*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x93, 0x43, 0x47, 0xC6, 0x5C, 0xF9, 0xFD),
2479*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x00, 0x79, 0x42, 0x64, 0xB8, 0x25, 0x3E),
2480*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x54, 0xB4, 0x33, 0x00, 0x00, 0x00, 0x00),
2481*b0563631STom Van Eyck };
2482*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_5_X[] = {
2483*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x0C, 0x42, 0x90, 0x83, 0x0B, 0x31, 0x5F),
2484*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x2E, 0xAE, 0xC8, 0xC7, 0x5F, 0xD2, 0x70),
2485*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xBC, 0xAD, 0x41, 0xE7, 0x32, 0x3A, 0x81),
2486*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x97, 0x52, 0x83, 0x00, 0x00, 0x00, 0x00),
2487*b0563631STom Van Eyck };
2488*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_5_Y[] = {
2489*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x13, 0x7A, 0xBD, 0xAE, 0x94, 0x60, 0xFD),
2490*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x9B, 0x95, 0xB4, 0x6E, 0x68, 0xB2, 0x1F),
2491*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x49, 0xBE, 0x51, 0xFE, 0x66, 0x15, 0x74),
2492*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x37, 0xE4, 0xFE, 0x00, 0x00, 0x00, 0x00),
2493*b0563631STom Van Eyck };
2494*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_6_X[] = {
2495*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x9B, 0xEE, 0x64, 0xC9, 0x1B, 0xBD, 0x77),
2496*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x5F, 0x34, 0xA9, 0x0B, 0xB7, 0x25, 0x52),
2497*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x13, 0xB1, 0x38, 0xFB, 0x9D, 0x78, 0xED),
2498*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0xE7, 0x1B, 0xFA, 0x00, 0x00, 0x00, 0x00),
2499*b0563631STom Van Eyck };
2500*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_6_Y[] = {
2501*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xB3, 0xB7, 0x44, 0x92, 0x6B, 0x00, 0x82),
2502*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x82, 0x44, 0x3E, 0x18, 0x1A, 0x58, 0x6A),
2503*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0xF8, 0xC0, 0xE4, 0xEE, 0xC1, 0xBF, 0x44),
2504*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x32, 0x27, 0xB2, 0x00, 0x00, 0x00, 0x00),
2505*b0563631STom Van Eyck };
2506*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_7_X[] = {
2507*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x9A, 0x42, 0x62, 0x8B, 0x26, 0x54, 0x21),
2508*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x85, 0x74, 0xA0, 0x79, 0xA8, 0xEE, 0xBE),
2509*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x36, 0x60, 0xB3, 0x28, 0x4D, 0x55, 0xBE),
2510*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x27, 0x82, 0x29, 0x00, 0x00, 0x00, 0x00),
2511*b0563631STom Van Eyck };
2512*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_7_Y[] = {
2513*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0xFC, 0x73, 0x77, 0xAF, 0x5C, 0xAC, 0x78),
2514*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0xED, 0xE5, 0xF6, 0x1D, 0xA8, 0x67, 0x43),
2515*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xDE, 0x33, 0x1C, 0xF1, 0x80, 0x73, 0xF8),
2516*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xE2, 0xDE, 0x3C, 0x00, 0x00, 0x00, 0x00),
2517*b0563631STom Van Eyck };
2518*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_8_X[] = {
2519*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x3E, 0x6B, 0xFE, 0xF0, 0x04, 0x28, 0x01),
2520*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xB2, 0x14, 0x9D, 0x18, 0x11, 0x7D, 0x9D),
2521*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xC4, 0xD6, 0x2E, 0x6E, 0x57, 0x4D, 0xE1),
2522*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x55, 0x1B, 0xDE, 0x00, 0x00, 0x00, 0x00),
2523*b0563631STom Van Eyck };
2524*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_8_Y[] = {
2525*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xF7, 0x17, 0xBC, 0x45, 0xAB, 0x16, 0xAB),
2526*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xB0, 0xEF, 0x61, 0xE3, 0x20, 0x7C, 0xF8),
2527*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x85, 0x41, 0x4D, 0xF1, 0x7E, 0x4D, 0x41),
2528*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xC2, 0x9B, 0x5E, 0x00, 0x00, 0x00, 0x00),
2529*b0563631STom Van Eyck };
2530*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_9_X[] = {
2531*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x2E, 0x49, 0x3D, 0x3E, 0x4B, 0xD3, 0x32),
2532*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x2B, 0x9D, 0xD5, 0x27, 0xFA, 0xCA, 0xE0),
2533*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0xB3, 0x6A, 0xE0, 0x79, 0x14, 0x28, 0x0F),
2534*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x1E, 0xDC, 0xF5, 0x00, 0x00, 0x00, 0x00),
2535*b0563631STom Van Eyck };
2536*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_9_Y[] = {
2537*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x44, 0x56, 0xCD, 0xFC, 0x9F, 0x09, 0xFF),
2538*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x8C, 0x59, 0xA4, 0x64, 0x2A, 0x3A, 0xED),
2539*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xA0, 0xB5, 0x86, 0x4E, 0x69, 0xDA, 0x06),
2540*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x8B, 0x11, 0x38, 0x00, 0x00, 0x00, 0x00),
2541*b0563631STom Van Eyck };
2542*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_10_X[] = {
2543*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x17, 0x16, 0x12, 0x17, 0xDC, 0x00, 0x7E),
2544*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x76, 0x24, 0x6C, 0x97, 0x2C, 0xB5, 0xF9),
2545*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x71, 0xE3, 0xB0, 0xBB, 0x4E, 0x50, 0x52),
2546*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0x48, 0x26, 0xD5, 0x00, 0x00, 0x00, 0x00),
2547*b0563631STom Van Eyck };
2548*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_10_Y[] = {
2549*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x5F, 0x28, 0xF6, 0x01, 0x5A, 0x60, 0x41),
2550*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x95, 0xFE, 0xD0, 0xAD, 0x15, 0xD4, 0xD9),
2551*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x5B, 0x7A, 0xFD, 0x80, 0xF7, 0x9F, 0x64),
2552*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xBC, 0x1B, 0xDF, 0x00, 0x00, 0x00, 0x00),
2553*b0563631STom Van Eyck };
2554*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_11_X[] = {
2555*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xE6, 0xDF, 0x14, 0x29, 0xF4, 0xD4, 0x14),
2556*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x12, 0xDD, 0xEC, 0x5B, 0x8A, 0x59, 0xE5),
2557*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x92, 0x3E, 0x35, 0x08, 0xE9, 0xCF, 0x0E),
2558*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x35, 0x29, 0x97, 0x00, 0x00, 0x00, 0x00),
2559*b0563631STom Van Eyck };
2560*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_11_Y[] = {
2561*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xDB, 0xD6, 0x6A, 0xC5, 0x43, 0xA4, 0xA1),
2562*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x33, 0x50, 0x61, 0x70, 0xA1, 0xE9, 0xCE),
2563*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x15, 0x6E, 0x5F, 0x01, 0x0C, 0x8C, 0xFA),
2564*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0xA1, 0x9A, 0x9D, 0x00, 0x00, 0x00, 0x00),
2565*b0563631STom Van Eyck };
2566*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_12_X[] = {
2567*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xC6, 0xF7, 0xE2, 0x4A, 0xCD, 0x9B, 0x61),
2568*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x4D, 0x5A, 0xB8, 0xE2, 0x6D, 0xA6, 0x50),
2569*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x3F, 0xB6, 0x17, 0xE3, 0x2C, 0x6F, 0x65),
2570*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xA4, 0x59, 0x51, 0x00, 0x00, 0x00, 0x00),
2571*b0563631STom Van Eyck };
2572*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_12_Y[] = {
2573*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x4F, 0x7C, 0x49, 0xCD, 0x6E, 0xEB, 0x3C),
2574*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0xC9, 0x1F, 0xB7, 0x4D, 0x98, 0xC7, 0x67),
2575*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0xFD, 0x98, 0x20, 0x95, 0xBB, 0x20, 0x3A),
2576*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xF2, 0x73, 0x92, 0x00, 0x00, 0x00, 0x00),
2577*b0563631STom Van Eyck };
2578*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_13_X[] = {
2579*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xEF, 0xFB, 0x30, 0xFA, 0x12, 0x1A, 0xB0),
2580*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0x4C, 0x24, 0xB4, 0x5B, 0xC9, 0x4C, 0x0F),
2581*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xDD, 0x5E, 0x84, 0x95, 0x4D, 0x26, 0xED),
2582*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xFA, 0xF9, 0x3A, 0x00, 0x00, 0x00, 0x00),
2583*b0563631STom Van Eyck };
2584*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_13_Y[] = {
2585*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0xA3, 0x2E, 0x7A, 0xDC, 0xA7, 0x53, 0xA9),
2586*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x9F, 0x81, 0x84, 0xB2, 0x0D, 0xFE, 0x31),
2587*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x89, 0x1B, 0x77, 0x0C, 0x89, 0x71, 0xEC),
2588*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xFF, 0x7F, 0xB2, 0x00, 0x00, 0x00, 0x00),
2589*b0563631STom Van Eyck };
2590*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_14_X[] = {
2591*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xE9, 0x2C, 0x79, 0xA6, 0x3C, 0xAD, 0x93),
2592*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xE0, 0x23, 0x02, 0x86, 0x0F, 0x77, 0x2A),
2593*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x93, 0x6D, 0xE9, 0xF9, 0x3C, 0xBE, 0xB9),
2594*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xE7, 0x24, 0x92, 0x00, 0x00, 0x00, 0x00),
2595*b0563631STom Van Eyck };
2596*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_14_Y[] = {
2597*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x3C, 0x5B, 0x4B, 0x1B, 0x25, 0x37, 0xD6),
2598*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xE8, 0x38, 0x1B, 0xA1, 0x5A, 0x2E, 0x68),
2599*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x19, 0xFD, 0xF4, 0x78, 0x01, 0x6B, 0x44),
2600*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0x69, 0x37, 0x4F, 0x00, 0x00, 0x00, 0x00),
2601*b0563631STom Van Eyck };
2602*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_15_X[] = {
2603*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0xE2, 0xBF, 0xD3, 0xEC, 0x95, 0x9C, 0x03),
2604*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x7B, 0xFC, 0xD5, 0xD3, 0x25, 0x5E, 0x0F),
2605*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x55, 0x09, 0xA2, 0x58, 0x6A, 0xC9, 0xFF),
2606*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0xCC, 0x3B, 0xD9, 0x00, 0x00, 0x00, 0x00),
2607*b0563631STom Van Eyck };
2608*b0563631STom Van Eyck static const mbedtls_mpi_uint secp224k1_T_15_Y[] = {
2609*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0x08, 0x65, 0x5E, 0xCB, 0xAB, 0x48, 0xC8),
2610*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x79, 0x8B, 0xC0, 0x11, 0xC0, 0x69, 0x38),
2611*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xE8, 0x8C, 0x4C, 0xC5, 0x28, 0xE4, 0xAE),
2612*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x1F, 0x34, 0x5C, 0x00, 0x00, 0x00, 0x00),
2613*b0563631STom Van Eyck };
2614*b0563631STom Van Eyck static const mbedtls_ecp_point secp224k1_T[16] = {
2615*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp224k1_T_0_X, secp224k1_T_0_Y),
2616*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_1_X, secp224k1_T_1_Y),
2617*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_2_X, secp224k1_T_2_Y),
2618*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_3_X, secp224k1_T_3_Y),
2619*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_4_X, secp224k1_T_4_Y),
2620*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_5_X, secp224k1_T_5_Y),
2621*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_6_X, secp224k1_T_6_Y),
2622*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_7_X, secp224k1_T_7_Y),
2623*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_8_X, secp224k1_T_8_Y),
2624*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_9_X, secp224k1_T_9_Y),
2625*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_10_X, secp224k1_T_10_Y),
2626*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_11_X, secp224k1_T_11_Y),
2627*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_12_X, secp224k1_T_12_Y),
2628*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_13_X, secp224k1_T_13_Y),
2629*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_14_X, secp224k1_T_14_Y),
2630*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp224k1_T_15_X, secp224k1_T_15_Y),
2631*b0563631STom Van Eyck };
2632*b0563631STom Van Eyck #else
2633*b0563631STom Van Eyck #define secp224k1_T NULL
2634*b0563631STom Van Eyck #endif
2635*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
2636*b0563631STom Van Eyck
2637*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
2638*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_p[] = {
2639*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF),
2640*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2641*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2642*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2643*b0563631STom Van Eyck };
2644*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_a[] = {
2645*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x00, 0x00),
2646*b0563631STom Van Eyck };
2647*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_b[] = {
2648*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_2(0x07, 0x00),
2649*b0563631STom Van Eyck };
2650*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_gx[] = {
2651*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x17, 0xF8, 0x16, 0x5B, 0x81, 0xF2, 0x59),
2652*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x28, 0xCE, 0x2D, 0xDB, 0xFC, 0x9B, 0x02),
2653*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x0B, 0x87, 0xCE, 0x95, 0x62, 0xA0, 0x55),
2654*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xBB, 0xDC, 0xF9, 0x7E, 0x66, 0xBE, 0x79),
2655*b0563631STom Van Eyck };
2656*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_gy[] = {
2657*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0xD4, 0x10, 0xFB, 0x8F, 0xD0, 0x47, 0x9C),
2658*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x54, 0x85, 0xA6, 0x48, 0xB4, 0x17, 0xFD),
2659*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x08, 0x11, 0x0E, 0xFC, 0xFB, 0xA4, 0x5D),
2660*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0xC4, 0xA3, 0x26, 0x77, 0xDA, 0x3A, 0x48),
2661*b0563631STom Van Eyck };
2662*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_n[] = {
2663*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x41, 0x36, 0xD0, 0x8C, 0x5E, 0xD2, 0xBF),
2664*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0xA0, 0x48, 0xAF, 0xE6, 0xDC, 0xAE, 0xBA),
2665*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2666*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2667*b0563631STom Van Eyck };
2668*b0563631STom Van Eyck
2669*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2670*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_0_X[] = {
2671*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x17, 0xF8, 0x16, 0x5B, 0x81, 0xF2, 0x59),
2672*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x28, 0xCE, 0x2D, 0xDB, 0xFC, 0x9B, 0x02),
2673*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x0B, 0x87, 0xCE, 0x95, 0x62, 0xA0, 0x55),
2674*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xBB, 0xDC, 0xF9, 0x7E, 0x66, 0xBE, 0x79),
2675*b0563631STom Van Eyck };
2676*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_0_Y[] = {
2677*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0xD4, 0x10, 0xFB, 0x8F, 0xD0, 0x47, 0x9C),
2678*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x54, 0x85, 0xA6, 0x48, 0xB4, 0x17, 0xFD),
2679*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x08, 0x11, 0x0E, 0xFC, 0xFB, 0xA4, 0x5D),
2680*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0xC4, 0xA3, 0x26, 0x77, 0xDA, 0x3A, 0x48),
2681*b0563631STom Van Eyck };
2682*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_1_X[] = {
2683*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xEE, 0xD7, 0x1E, 0x67, 0x86, 0x32, 0x74),
2684*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x73, 0xB1, 0xA9, 0xD5, 0xCC, 0x27, 0x78),
2685*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x0E, 0x11, 0x01, 0x71, 0xFE, 0x92, 0x73),
2686*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x28, 0x63, 0x6D, 0x72, 0x09, 0xA6, 0xC0),
2687*b0563631STom Van Eyck };
2688*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_1_Y[] = {
2689*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xE1, 0x69, 0xDC, 0x3E, 0x2C, 0x75, 0xC3),
2690*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xB7, 0x3F, 0x30, 0x26, 0x3C, 0xDF, 0x8E),
2691*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xBE, 0xB9, 0x5D, 0x0E, 0xE8, 0x5E, 0x14),
2692*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0xC3, 0x05, 0xD6, 0xB7, 0xD5, 0x24, 0xFC),
2693*b0563631STom Van Eyck };
2694*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_2_X[] = {
2695*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0xCF, 0x7B, 0xDC, 0xCD, 0xC3, 0x39, 0x9D),
2696*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xDA, 0xB9, 0xE5, 0x64, 0xA7, 0x47, 0x91),
2697*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x46, 0xA8, 0x61, 0xF6, 0x23, 0xEB, 0x58),
2698*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xC1, 0xFF, 0xE4, 0x55, 0xD5, 0xC2, 0xBF),
2699*b0563631STom Van Eyck };
2700*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_2_Y[] = {
2701*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xBE, 0xB9, 0x59, 0x24, 0x13, 0x4A, 0x2A),
2702*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x45, 0x12, 0xDE, 0xBA, 0x4F, 0xEF, 0x56),
2703*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x08, 0xBF, 0xC1, 0x66, 0xAA, 0x0A, 0xBC),
2704*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xFE, 0x30, 0x55, 0x31, 0x86, 0xA7, 0xB4),
2705*b0563631STom Van Eyck };
2706*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_3_X[] = {
2707*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xBF, 0x18, 0x81, 0x67, 0x27, 0x42, 0xBD),
2708*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x05, 0x83, 0xA4, 0xDD, 0x57, 0xD3, 0x50),
2709*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x63, 0xAB, 0xE4, 0x90, 0x70, 0xD0, 0x7C),
2710*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x5D, 0xFD, 0xA0, 0xEF, 0xCF, 0x1C, 0x54),
2711*b0563631STom Van Eyck };
2712*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_3_Y[] = {
2713*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x80, 0xE4, 0xF6, 0x09, 0xBC, 0x57, 0x90),
2714*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x9F, 0x6E, 0x88, 0x54, 0x6E, 0x51, 0xF2),
2715*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x5F, 0x85, 0xFB, 0x84, 0x3E, 0x4A, 0xAA),
2716*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x19, 0xF5, 0x55, 0xC9, 0x07, 0xD8, 0xCE),
2717*b0563631STom Van Eyck };
2718*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_4_X[] = {
2719*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0xB4, 0xC3, 0xD9, 0x5C, 0xA0, 0xD4, 0x90),
2720*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x30, 0xAF, 0x59, 0x9B, 0xF8, 0x04, 0x85),
2721*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xA6, 0xFD, 0x66, 0x7B, 0xC3, 0x39, 0x85),
2722*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xBF, 0xF0, 0xC2, 0xE9, 0x71, 0xA4, 0x9E),
2723*b0563631STom Van Eyck };
2724*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_4_Y[] = {
2725*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x2D, 0xB9, 0x88, 0x28, 0xF1, 0xBE, 0x78),
2726*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xF3, 0x1A, 0x0E, 0xB9, 0x01, 0x66, 0x34),
2727*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0xA7, 0xA4, 0xF4, 0x05, 0xD0, 0xAA, 0x53),
2728*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x39, 0x1E, 0x47, 0xE5, 0x68, 0xC8, 0xC0),
2729*b0563631STom Van Eyck };
2730*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_5_X[] = {
2731*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0xB9, 0xFC, 0xE0, 0x33, 0x8A, 0x7D, 0x96),
2732*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x93, 0xA5, 0x53, 0x55, 0x16, 0xB4, 0x6E),
2733*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x5F, 0xEA, 0x9B, 0x29, 0x52, 0x71, 0xDA),
2734*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xF0, 0x24, 0xB8, 0x7D, 0xB7, 0xA0, 0x9B),
2735*b0563631STom Van Eyck };
2736*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_5_Y[] = {
2737*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x00, 0x27, 0xB2, 0xDF, 0x73, 0xA2, 0xE0),
2738*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x2E, 0x4D, 0x7C, 0xDE, 0x7A, 0x23, 0x32),
2739*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x65, 0x60, 0xC7, 0x97, 0x1E, 0xA4, 0x22),
2740*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x13, 0x5B, 0x77, 0x59, 0xCB, 0x36, 0xE1),
2741*b0563631STom Van Eyck };
2742*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_6_X[] = {
2743*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xBC, 0x9F, 0x9E, 0x2D, 0x53, 0x2A, 0xA8),
2744*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x5F, 0x64, 0x9F, 0x1A, 0x19, 0xE6, 0x77),
2745*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x7B, 0x39, 0xD2, 0xDB, 0x85, 0x84, 0xD5),
2746*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xC7, 0x0D, 0x58, 0x6E, 0x3F, 0x52, 0x15),
2747*b0563631STom Van Eyck };
2748*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_6_Y[] = {
2749*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x68, 0x19, 0x0B, 0x68, 0xC9, 0x1E, 0xFB),
2750*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x4E, 0x21, 0x49, 0x3D, 0x55, 0xCC, 0x25),
2751*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xF9, 0x25, 0x45, 0x54, 0x45, 0xB1, 0x0F),
2752*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xB3, 0xF7, 0xCD, 0x80, 0xA4, 0x04, 0x05),
2753*b0563631STom Van Eyck };
2754*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_7_X[] = {
2755*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x1E, 0x88, 0xC4, 0xAA, 0x18, 0x7E, 0x45),
2756*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xAC, 0xD9, 0xB2, 0xA1, 0xC0, 0x71, 0x5D),
2757*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xA2, 0xF1, 0x15, 0xA6, 0x5F, 0x6C, 0x86),
2758*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x5B, 0x05, 0xBC, 0xB7, 0xC6, 0x4E, 0x72),
2759*b0563631STom Van Eyck };
2760*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_7_Y[] = {
2761*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x80, 0xF8, 0x5C, 0x20, 0x2A, 0xE1, 0xE2),
2762*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x48, 0x2E, 0x68, 0x82, 0x7F, 0xEB, 0x5F),
2763*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x3B, 0x25, 0xDB, 0x32, 0x4D, 0x88, 0x42),
2764*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x6E, 0xA6, 0xB6, 0x6D, 0x62, 0x78, 0x22),
2765*b0563631STom Van Eyck };
2766*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_8_X[] = {
2767*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x4D, 0x3E, 0x86, 0x58, 0xC3, 0xEB, 0xBA),
2768*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x89, 0x33, 0x18, 0x21, 0x1D, 0x9B, 0xE7),
2769*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x9D, 0xFF, 0xC3, 0x79, 0xC1, 0x88, 0xF8),
2770*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xD4, 0x48, 0x53, 0xE8, 0xAD, 0x21, 0x16),
2771*b0563631STom Van Eyck };
2772*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_8_Y[] = {
2773*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x7B, 0xDE, 0xCB, 0xD8, 0x39, 0x17, 0x7C),
2774*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0xF3, 0x03, 0xF2, 0x5C, 0xBC, 0xC8, 0x8A),
2775*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xAE, 0x4C, 0xB0, 0x16, 0xA4, 0x93, 0x86),
2776*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x8B, 0x6B, 0xDC, 0xD7, 0x9A, 0x3E, 0x7E),
2777*b0563631STom Van Eyck };
2778*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_9_X[] = {
2779*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x2D, 0x7A, 0xD2, 0x59, 0x05, 0xA2, 0x82),
2780*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x56, 0x09, 0x32, 0xF1, 0xE8, 0xE3, 0x72),
2781*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xCA, 0xE5, 0x2E, 0xF0, 0xFB, 0x18, 0x19),
2782*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x85, 0xA9, 0x23, 0x15, 0x31, 0x1F, 0x0E),
2783*b0563631STom Van Eyck };
2784*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_9_Y[] = {
2785*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xE5, 0xB1, 0x86, 0xB9, 0x6E, 0x8D, 0xD3),
2786*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x77, 0xFC, 0xC9, 0xA3, 0x3F, 0x89, 0xD2),
2787*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x6A, 0xDC, 0x25, 0xB0, 0xC7, 0x41, 0x54),
2788*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x11, 0x6B, 0xA6, 0x11, 0x62, 0xD4, 0x2D),
2789*b0563631STom Van Eyck };
2790*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_10_X[] = {
2791*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x7D, 0x34, 0xB3, 0x20, 0x7F, 0x37, 0xAA),
2792*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0xD4, 0x45, 0xE8, 0xC2, 0xE9, 0xC5, 0xEA),
2793*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x32, 0x3B, 0x25, 0x7E, 0x79, 0xAF, 0xE7),
2794*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0xE4, 0x54, 0x71, 0xBE, 0x35, 0x4E, 0xD0),
2795*b0563631STom Van Eyck };
2796*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_10_Y[] = {
2797*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x94, 0xDD, 0x8F, 0xB5, 0xC2, 0xDD, 0x75),
2798*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x49, 0xE9, 0x1C, 0x2F, 0x08, 0x49, 0xC6),
2799*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0xB6, 0x03, 0x88, 0x6F, 0xB8, 0x15, 0x67),
2800*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xD3, 0x1C, 0xF3, 0xA5, 0xEB, 0x79, 0x01),
2801*b0563631STom Van Eyck };
2802*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_11_X[] = {
2803*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0xF9, 0x43, 0x88, 0x89, 0x0D, 0x06, 0xEA),
2804*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x2D, 0xF5, 0x98, 0x32, 0xF6, 0xB1, 0x05),
2805*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x73, 0x8F, 0x2B, 0x50, 0x27, 0x0A, 0xE7),
2806*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xE3, 0xBD, 0x16, 0x05, 0xC8, 0x93, 0x12),
2807*b0563631STom Van Eyck };
2808*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_11_Y[] = {
2809*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x6A, 0xF7, 0xE3, 0x3D, 0xDE, 0x5F, 0x2F),
2810*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xA3, 0x9C, 0x22, 0x3C, 0x33, 0x36, 0x5D),
2811*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x24, 0x4C, 0x69, 0x45, 0x78, 0x14, 0xAE),
2812*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xF8, 0xD4, 0xBF, 0xB8, 0xC0, 0xA1, 0x25),
2813*b0563631STom Van Eyck };
2814*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_12_X[] = {
2815*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x88, 0xE1, 0x91, 0x03, 0xEB, 0xB3, 0x2B),
2816*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x11, 0xA1, 0xEF, 0x14, 0x0D, 0xC4, 0x7D),
2817*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xD4, 0x0D, 0x1D, 0x96, 0x33, 0x5C, 0x19),
2818*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x45, 0x2A, 0x1A, 0xE6, 0x57, 0x04, 0x9B),
2819*b0563631STom Van Eyck };
2820*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_12_Y[] = {
2821*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xB5, 0xA7, 0x80, 0xE9, 0x93, 0x97, 0x8D),
2822*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xB9, 0x7C, 0xA0, 0xC9, 0x57, 0x26, 0x43),
2823*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0xEF, 0x56, 0xDA, 0x66, 0xF6, 0x1B, 0x9A),
2824*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x89, 0x6B, 0x91, 0xE0, 0xA9, 0x65, 0x2B),
2825*b0563631STom Van Eyck };
2826*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_13_X[] = {
2827*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x98, 0x96, 0x9B, 0x06, 0x7D, 0x5E, 0x5A),
2828*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xFA, 0xC1, 0x5F, 0x19, 0x37, 0x94, 0x9D),
2829*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xBE, 0x6B, 0x1A, 0x05, 0xE4, 0xBF, 0x9F),
2830*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0xCD, 0x5D, 0x35, 0xB4, 0x51, 0xF7, 0x64),
2831*b0563631STom Van Eyck };
2832*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_13_Y[] = {
2833*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xEF, 0x96, 0xDB, 0xF2, 0x61, 0x63, 0x59),
2834*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x04, 0x88, 0xC9, 0x9F, 0x1B, 0x94, 0xB9),
2835*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x30, 0x79, 0x7E, 0x24, 0xE7, 0x5F, 0xB8),
2836*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0xB8, 0x90, 0xB7, 0x94, 0x25, 0xBB, 0x0F),
2837*b0563631STom Van Eyck };
2838*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_14_X[] = {
2839*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x79, 0xEA, 0xAD, 0xC0, 0x6D, 0x18, 0x57),
2840*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xA4, 0x58, 0x2A, 0x8D, 0x95, 0xB3, 0xE6),
2841*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xC4, 0xC2, 0x12, 0x0D, 0x79, 0xE2, 0x2B),
2842*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x6F, 0xBE, 0x97, 0x4D, 0xA4, 0x20, 0x07),
2843*b0563631STom Van Eyck };
2844*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_14_Y[] = {
2845*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x31, 0x71, 0xC6, 0xA6, 0x91, 0xEB, 0x1F),
2846*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x9B, 0xA8, 0x4A, 0xE7, 0x77, 0xE1, 0xAA),
2847*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x06, 0xD3, 0x3D, 0x94, 0x30, 0xEF, 0x8C),
2848*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xDF, 0xCA, 0xFA, 0xF5, 0x28, 0xF8, 0xC9),
2849*b0563631STom Van Eyck };
2850*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_15_X[] = {
2851*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0xE1, 0x32, 0xFD, 0x3E, 0x81, 0xF8, 0x11),
2852*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xF2, 0x4B, 0x1D, 0x19, 0xC9, 0x0F, 0xCC),
2853*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xB1, 0x8A, 0x22, 0x8B, 0x05, 0x6B, 0x56),
2854*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x21, 0xEF, 0x30, 0xEC, 0x09, 0x2A, 0x89),
2855*b0563631STom Van Eyck };
2856*b0563631STom Van Eyck static const mbedtls_mpi_uint secp256k1_T_15_Y[] = {
2857*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x84, 0x4A, 0x46, 0x07, 0x6C, 0x3C, 0x4C),
2858*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x18, 0x3A, 0xF4, 0xCC, 0xF5, 0xB2, 0xF2),
2859*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x8F, 0xCD, 0x0A, 0x9C, 0xF4, 0xBD, 0x95),
2860*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x89, 0x7F, 0x8A, 0xB1, 0x52, 0x3A, 0xAB),
2861*b0563631STom Van Eyck };
2862*b0563631STom Van Eyck static const mbedtls_ecp_point secp256k1_T[16] = {
2863*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(secp256k1_T_0_X, secp256k1_T_0_Y),
2864*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_1_X, secp256k1_T_1_Y),
2865*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_2_X, secp256k1_T_2_Y),
2866*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_3_X, secp256k1_T_3_Y),
2867*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_4_X, secp256k1_T_4_Y),
2868*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_5_X, secp256k1_T_5_Y),
2869*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_6_X, secp256k1_T_6_Y),
2870*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_7_X, secp256k1_T_7_Y),
2871*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_8_X, secp256k1_T_8_Y),
2872*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_9_X, secp256k1_T_9_Y),
2873*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_10_X, secp256k1_T_10_Y),
2874*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_11_X, secp256k1_T_11_Y),
2875*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_12_X, secp256k1_T_12_Y),
2876*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_13_X, secp256k1_T_13_Y),
2877*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_14_X, secp256k1_T_14_Y),
2878*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(secp256k1_T_15_X, secp256k1_T_15_Y),
2879*b0563631STom Van Eyck };
2880*b0563631STom Van Eyck #else
2881*b0563631STom Van Eyck #define secp256k1_T NULL
2882*b0563631STom Van Eyck #endif
2883*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
2884*b0563631STom Van Eyck
2885*b0563631STom Van Eyck /*
2886*b0563631STom Van Eyck * Domain parameters for brainpoolP256r1 (RFC 5639 3.4)
2887*b0563631STom Van Eyck */
2888*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
2889*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_p[] = {
2890*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x53, 0x6E, 0x1F, 0x1D, 0x48, 0x13, 0x20),
2891*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x20, 0x26, 0xD5, 0x23, 0xF6, 0x3B, 0x6E),
2892*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E),
2893*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9),
2894*b0563631STom Van Eyck };
2895*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_a[] = {
2896*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0xB5, 0x30, 0xF3, 0x44, 0x4B, 0x4A, 0xE9),
2897*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x5C, 0xDC, 0x26, 0xC1, 0x55, 0x80, 0xFB),
2898*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xFF, 0x7A, 0x41, 0x30, 0x75, 0xF6, 0xEE),
2899*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x30, 0x2C, 0xFC, 0x75, 0x09, 0x5A, 0x7D),
2900*b0563631STom Van Eyck };
2901*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_b[] = {
2902*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x07, 0x8C, 0xFF, 0x18, 0xDC, 0xCC, 0x6B),
2903*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xE1, 0xF7, 0x5C, 0x29, 0x16, 0x84, 0x95),
2904*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x7C, 0xD7, 0xBB, 0xD9, 0xB5, 0x30, 0xF3),
2905*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0x4B, 0x4A, 0xE9, 0x6C, 0x5C, 0xDC, 0x26),
2906*b0563631STom Van Eyck };
2907*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_gx[] = {
2908*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x32, 0xCE, 0x9A, 0xBD, 0x53, 0x44, 0x3A),
2909*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x23, 0xBD, 0xE3, 0xE1, 0x27, 0xDE, 0xB9),
2910*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xB7, 0x81, 0xFC, 0x2F, 0x48, 0x4B, 0x2C),
2911*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x57, 0x7E, 0xCB, 0xB9, 0xAE, 0xD2, 0x8B),
2912*b0563631STom Van Eyck };
2913*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_gy[] = {
2914*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x69, 0x04, 0x2F, 0xC7, 0x54, 0x1D, 0x5C),
2915*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x8E, 0xED, 0x2D, 0x13, 0x45, 0x77, 0xC2),
2916*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x1D, 0x61, 0x14, 0x1A, 0x46, 0xF8, 0x97),
2917*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xC4, 0xDA, 0xC3, 0x35, 0xF8, 0x7E, 0x54),
2918*b0563631STom Van Eyck };
2919*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_n[] = {
2920*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x56, 0x48, 0x97, 0x82, 0x0E, 0x1E, 0x90),
2921*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xA6, 0x61, 0xB5, 0xA3, 0x7A, 0x39, 0x8C),
2922*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E),
2923*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9),
2924*b0563631STom Van Eyck };
2925*b0563631STom Van Eyck
2926*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2927*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_0_X[] = {
2928*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x32, 0xCE, 0x9A, 0xBD, 0x53, 0x44, 0x3A),
2929*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x23, 0xBD, 0xE3, 0xE1, 0x27, 0xDE, 0xB9),
2930*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xB7, 0x81, 0xFC, 0x2F, 0x48, 0x4B, 0x2C),
2931*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x57, 0x7E, 0xCB, 0xB9, 0xAE, 0xD2, 0x8B),
2932*b0563631STom Van Eyck };
2933*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_0_Y[] = {
2934*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x69, 0x04, 0x2F, 0xC7, 0x54, 0x1D, 0x5C),
2935*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x8E, 0xED, 0x2D, 0x13, 0x45, 0x77, 0xC2),
2936*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x1D, 0x61, 0x14, 0x1A, 0x46, 0xF8, 0x97),
2937*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xC4, 0xDA, 0xC3, 0x35, 0xF8, 0x7E, 0x54),
2938*b0563631STom Van Eyck };
2939*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_1_X[] = {
2940*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xA2, 0xED, 0x52, 0xC9, 0x8C, 0xE3, 0xA5),
2941*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0xC9, 0xC4, 0x87, 0x3F, 0x93, 0x7A, 0xD1),
2942*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x12, 0x53, 0x61, 0x3E, 0x76, 0x08, 0xCB),
2943*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x8C, 0x74, 0xF4, 0x08, 0xC3, 0x76, 0x80),
2944*b0563631STom Van Eyck };
2945*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_1_Y[] = {
2946*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0xDD, 0x09, 0xA6, 0xED, 0xEE, 0xC4, 0x38),
2947*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xD9, 0xBE, 0x4B, 0xA5, 0xB7, 0x2B, 0x6E),
2948*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x20, 0x12, 0xCA, 0x0A, 0x38, 0x24, 0xAB),
2949*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x72, 0x71, 0x90, 0x7A, 0x2E, 0xB7, 0x23),
2950*b0563631STom Van Eyck };
2951*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_2_X[] = {
2952*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x66, 0xA1, 0x93, 0x10, 0x2A, 0x51, 0x17),
2953*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x10, 0x11, 0x12, 0xBC, 0xB0, 0xB6, 0x93),
2954*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x58, 0xD7, 0x0A, 0x84, 0x05, 0xA3, 0x9C),
2955*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x8E, 0x95, 0x61, 0xD3, 0x0B, 0xDF, 0x36),
2956*b0563631STom Van Eyck };
2957*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_2_Y[] = {
2958*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x92, 0x12, 0x0F, 0x5E, 0x87, 0x70, 0x1B),
2959*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0xE9, 0x9B, 0xEB, 0x3A, 0xFB, 0xCF, 0xC4),
2960*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0x92, 0xB9, 0xF7, 0x45, 0xD3, 0x06, 0xB6),
2961*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x28, 0x65, 0xE1, 0xC5, 0x6C, 0x57, 0x18),
2962*b0563631STom Van Eyck };
2963*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_3_X[] = {
2964*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x0E, 0x77, 0x01, 0x81, 0x9E, 0x38, 0x5C),
2965*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0xF0, 0xD5, 0xA5, 0x91, 0x2B, 0xDF, 0xC0),
2966*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xEE, 0xB6, 0x25, 0xD6, 0x98, 0xDE, 0x2D),
2967*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xA1, 0x55, 0x63, 0x39, 0xEB, 0xB5, 0x47),
2968*b0563631STom Van Eyck };
2969*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_3_Y[] = {
2970*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0xD6, 0xB8, 0xE3, 0x13, 0xED, 0x7F, 0xA3),
2971*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xE8, 0xAE, 0x36, 0xB8, 0xCD, 0x19, 0x02),
2972*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x82, 0x83, 0x7A, 0x7B, 0x46, 0x56, 0xE8),
2973*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x60, 0x46, 0x15, 0x5A, 0xAC, 0x99, 0x30),
2974*b0563631STom Van Eyck };
2975*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_4_X[] = {
2976*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x61, 0x50, 0xC6, 0xFF, 0x10, 0x7D, 0x04),
2977*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x51, 0xDF, 0xA9, 0x7D, 0x78, 0x26, 0x74),
2978*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0x15, 0x9A, 0xF7, 0x01, 0xC1, 0xBB, 0x40),
2979*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x0F, 0xE6, 0x2A, 0xBD, 0x4A, 0x9E, 0x87),
2980*b0563631STom Van Eyck };
2981*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_4_Y[] = {
2982*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xF8, 0xD1, 0x77, 0xD2, 0x49, 0xB3, 0xDD),
2983*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x86, 0xFB, 0x9E, 0x1F, 0x5A, 0x60, 0x47),
2984*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xC4, 0x8D, 0xCD, 0x86, 0x61, 0x2F, 0xF9),
2985*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xF6, 0xB9, 0xAC, 0x37, 0x9D, 0xE9, 0x28),
2986*b0563631STom Van Eyck };
2987*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_5_X[] = {
2988*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x77, 0xAA, 0x97, 0x9C, 0x0B, 0x04, 0x20),
2989*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0xA6, 0x60, 0x81, 0xCE, 0x25, 0x13, 0x3E),
2990*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x00, 0xF3, 0xBB, 0x82, 0x99, 0x95, 0xB7),
2991*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x5A, 0xCE, 0x90, 0x71, 0x38, 0x2F, 0x10),
2992*b0563631STom Van Eyck };
2993*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_5_Y[] = {
2994*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x1A, 0xC0, 0x84, 0x27, 0xD6, 0x9D, 0xB7),
2995*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x37, 0x52, 0x16, 0x13, 0x0E, 0xCE, 0x92),
2996*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xBF, 0x5A, 0xDB, 0xDB, 0x6E, 0x1E, 0x69),
2997*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xB7, 0x5E, 0xF9, 0x86, 0xDD, 0x8A, 0x5C),
2998*b0563631STom Van Eyck };
2999*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_6_X[] = {
3000*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xAB, 0x5C, 0x8D, 0x1D, 0xF2, 0x2D, 0x1E),
3001*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0xC5, 0xF8, 0xF7, 0x1D, 0x96, 0x0B, 0x4D),
3002*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x4C, 0xA7, 0x45, 0x20, 0x6A, 0x1E, 0x5B),
3003*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x5D, 0xEF, 0xDE, 0xEE, 0x39, 0x44, 0x19),
3004*b0563631STom Van Eyck };
3005*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_6_Y[] = {
3006*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x2F, 0x6D, 0x52, 0xC9, 0x58, 0x60, 0xE8),
3007*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0xC9, 0x62, 0xCB, 0x38, 0x3C, 0x55, 0xCA),
3008*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xA5, 0x09, 0x10, 0x88, 0xDB, 0xE3, 0xBD),
3009*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xE0, 0x3C, 0xCE, 0x06, 0x0B, 0x4B, 0x5D),
3010*b0563631STom Van Eyck };
3011*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_7_X[] = {
3012*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x1D, 0xB4, 0x10, 0x76, 0x8F, 0xBA, 0x09),
3013*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x70, 0x5A, 0x07, 0xF5, 0x1A, 0x74, 0xC7),
3014*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xE9, 0x94, 0xA8, 0xC0, 0xD5, 0x4A, 0x4A),
3015*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x6D, 0xD4, 0xE8, 0x9B, 0xE9, 0x6D, 0x0E),
3016*b0563631STom Van Eyck };
3017*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_7_Y[] = {
3018*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x00, 0x32, 0x41, 0x57, 0x84, 0x89, 0x52),
3019*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xC7, 0x14, 0xEC, 0xE9, 0x27, 0xFF, 0xF3),
3020*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x67, 0x9E, 0xFB, 0xB6, 0xB8, 0x96, 0xF3),
3021*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x4A, 0xE3, 0x97, 0x4B, 0x58, 0xDE, 0x30),
3022*b0563631STom Van Eyck };
3023*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_8_X[] = {
3024*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0x1E, 0x5C, 0xF5, 0x7F, 0xD5, 0xD4, 0xAA),
3025*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x08, 0x7A, 0xF1, 0xBD, 0x89, 0xC7, 0x1E),
3026*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xF9, 0x11, 0x1B, 0xF5, 0x3C, 0x6D, 0x8C),
3027*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x50, 0xE5, 0x69, 0x1D, 0x59, 0xFC, 0x0C),
3028*b0563631STom Van Eyck };
3029*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_8_Y[] = {
3030*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x2F, 0xF8, 0x3F, 0xEC, 0x55, 0x99, 0x57),
3031*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xA7, 0x29, 0x90, 0x43, 0x81, 0x31, 0x4C),
3032*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x18, 0x44, 0x50, 0x5D, 0x76, 0xCB, 0xDD),
3033*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xC5, 0x5B, 0x9A, 0x03, 0xE6, 0x17, 0x39),
3034*b0563631STom Van Eyck };
3035*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_9_X[] = {
3036*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x89, 0xFC, 0x55, 0x94, 0x91, 0x6A, 0xA2),
3037*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x46, 0x35, 0xF2, 0x3A, 0x42, 0x08, 0x2F),
3038*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0xD2, 0x76, 0x49, 0x42, 0x87, 0xD3, 0x7F),
3039*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xEA, 0xA0, 0x52, 0xF1, 0x6A, 0x30, 0x57),
3040*b0563631STom Van Eyck };
3041*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_9_Y[] = {
3042*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0xB2, 0x57, 0xA3, 0x8A, 0x4D, 0x1B, 0x3C),
3043*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0xA3, 0x99, 0x94, 0xB5, 0x3D, 0x64, 0x09),
3044*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xC3, 0xD7, 0x53, 0xF6, 0x49, 0x1C, 0x60),
3045*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x23, 0x41, 0x4D, 0xFB, 0x7A, 0x5C, 0x53),
3046*b0563631STom Van Eyck };
3047*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_10_X[] = {
3048*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xB8, 0x15, 0x65, 0x5C, 0x85, 0x94, 0xD7),
3049*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x37, 0xC7, 0xF8, 0x7E, 0xAE, 0x6C, 0x10),
3050*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xD8, 0x11, 0x54, 0x98, 0x44, 0xE3, 0xF1),
3051*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x4D, 0xA6, 0x4B, 0x28, 0xF2, 0x57, 0x9E),
3052*b0563631STom Van Eyck };
3053*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_10_Y[] = {
3054*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xD0, 0xEB, 0x1E, 0xAA, 0x30, 0xD3, 0x6A),
3055*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x9B, 0x4D, 0xA7, 0x73, 0x6E, 0xB6, 0x45),
3056*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x47, 0xF6, 0xED, 0x37, 0xEF, 0x71, 0x4D),
3057*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0xB5, 0x49, 0x61, 0x5E, 0x45, 0xF6, 0x4A),
3058*b0563631STom Van Eyck };
3059*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_11_X[] = {
3060*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x0E, 0xB3, 0x84, 0x3A, 0x63, 0x72, 0x84),
3061*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x53, 0x5C, 0xA7, 0xC6, 0x2E, 0xAB, 0x9E),
3062*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x0F, 0x8F, 0x87, 0x50, 0x28, 0xB4, 0xAE),
3063*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x98, 0x4A, 0x98, 0x31, 0x86, 0xCA, 0x51),
3064*b0563631STom Van Eyck };
3065*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_11_Y[] = {
3066*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xC9, 0xE2, 0xFD, 0x5D, 0x1F, 0xE8, 0xC2),
3067*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x90, 0x91, 0xC4, 0x84, 0xF0, 0xBA, 0xC5),
3068*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x5A, 0xB3, 0x4E, 0xFB, 0xE0, 0x57, 0xE8),
3069*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x0B, 0x90, 0xA6, 0xFD, 0x9D, 0x8E, 0x02),
3070*b0563631STom Van Eyck };
3071*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_12_X[] = {
3072*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x41, 0x8F, 0x31, 0xFA, 0x5A, 0xF6, 0x33),
3073*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xE9, 0xE3, 0xF6, 0xE0, 0x4A, 0xE7, 0xD2),
3074*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x4E, 0xCD, 0xA2, 0x22, 0x14, 0xD4, 0x12),
3075*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xED, 0x21, 0xB7, 0x0F, 0x53, 0x10, 0x17),
3076*b0563631STom Van Eyck };
3077*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_12_Y[] = {
3078*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x06, 0x24, 0x2C, 0x4E, 0xD1, 0x1E, 0x9F),
3079*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x3F, 0xC1, 0x9F, 0xAB, 0xF0, 0x37, 0x95),
3080*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x5E, 0x12, 0xCE, 0x83, 0x1B, 0x2A, 0x18),
3081*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x65, 0xCF, 0xE8, 0x5C, 0xA5, 0xA2, 0x70),
3082*b0563631STom Van Eyck };
3083*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_13_X[] = {
3084*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x86, 0x76, 0x3A, 0x94, 0xF6, 0x1D, 0xC1),
3085*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xDA, 0xC9, 0xA6, 0x29, 0x93, 0x15, 0x10),
3086*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x61, 0x6A, 0x7D, 0xC7, 0xA9, 0xF3, 0x76),
3087*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x03, 0x71, 0xA2, 0x15, 0xCE, 0x50, 0x72),
3088*b0563631STom Van Eyck };
3089*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_13_Y[] = {
3090*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0xD0, 0xA8, 0x1E, 0x91, 0xC4, 0x4F, 0x24),
3091*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x4B, 0x7E, 0xD7, 0x71, 0x58, 0x7E, 0x1E),
3092*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x45, 0xAF, 0x2A, 0x18, 0x93, 0x95, 0x3B),
3093*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x8F, 0xC7, 0xFA, 0x4C, 0x7A, 0x86, 0x54),
3094*b0563631STom Van Eyck };
3095*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_14_X[] = {
3096*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0xAF, 0x68, 0x3A, 0x23, 0xC1, 0x2E, 0xBF),
3097*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x50, 0x11, 0x67, 0x39, 0xB9, 0xAF, 0x48),
3098*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x86, 0xAA, 0x1E, 0x88, 0x21, 0x29, 0x8B),
3099*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x28, 0xA4, 0x9D, 0x89, 0xA9, 0x9A, 0x10),
3100*b0563631STom Van Eyck };
3101*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_14_Y[] = {
3102*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xBA, 0x04, 0x67, 0xB7, 0x01, 0x40, 0x38),
3103*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xE9, 0x09, 0xA3, 0xCA, 0xA6, 0x37, 0xF6),
3104*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x97, 0xA8, 0xB6, 0x3C, 0xEE, 0x90, 0x3D),
3105*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xED, 0xC4, 0xF7, 0xC3, 0x95, 0xEC, 0x85),
3106*b0563631STom Van Eyck };
3107*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_15_X[] = {
3108*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x84, 0xBD, 0xEB, 0xD5, 0x64, 0xBB, 0x9D),
3109*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x9B, 0xE2, 0x28, 0x50, 0xC2, 0x72, 0x40),
3110*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0xF2, 0x74, 0xD1, 0x26, 0xBF, 0x32, 0x68),
3111*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xCB, 0xAF, 0x72, 0xDB, 0x6D, 0x30, 0x98),
3112*b0563631STom Van Eyck };
3113*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP256r1_T_15_Y[] = {
3114*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x50, 0x85, 0xF4, 0x2B, 0x48, 0xC1, 0xAD),
3115*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x28, 0xBB, 0x11, 0xBA, 0x5B, 0x22, 0x6C),
3116*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xA1, 0xE5, 0x5C, 0xC9, 0x1D, 0x44, 0x45),
3117*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xE8, 0xE6, 0x6F, 0xBB, 0xC1, 0x81, 0x7F),
3118*b0563631STom Van Eyck };
3119*b0563631STom Van Eyck static const mbedtls_ecp_point brainpoolP256r1_T[16] = {
3120*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(brainpoolP256r1_T_0_X, brainpoolP256r1_T_0_Y),
3121*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_1_X, brainpoolP256r1_T_1_Y),
3122*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_2_X, brainpoolP256r1_T_2_Y),
3123*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_3_X, brainpoolP256r1_T_3_Y),
3124*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_4_X, brainpoolP256r1_T_4_Y),
3125*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_5_X, brainpoolP256r1_T_5_Y),
3126*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_6_X, brainpoolP256r1_T_6_Y),
3127*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_7_X, brainpoolP256r1_T_7_Y),
3128*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_8_X, brainpoolP256r1_T_8_Y),
3129*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_9_X, brainpoolP256r1_T_9_Y),
3130*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_10_X, brainpoolP256r1_T_10_Y),
3131*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_11_X, brainpoolP256r1_T_11_Y),
3132*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_12_X, brainpoolP256r1_T_12_Y),
3133*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_13_X, brainpoolP256r1_T_13_Y),
3134*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_14_X, brainpoolP256r1_T_14_Y),
3135*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_15_X, brainpoolP256r1_T_15_Y),
3136*b0563631STom Van Eyck };
3137*b0563631STom Van Eyck #else
3138*b0563631STom Van Eyck #define brainpoolP256r1_T NULL
3139*b0563631STom Van Eyck #endif
3140*b0563631STom Van Eyck
3141*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
3142*b0563631STom Van Eyck
3143*b0563631STom Van Eyck /*
3144*b0563631STom Van Eyck * Domain parameters for brainpoolP384r1 (RFC 5639 3.6)
3145*b0563631STom Van Eyck */
3146*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
3147*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_p[] = {
3148*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xEC, 0x07, 0x31, 0x13, 0x00, 0x47, 0x87),
3149*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x1A, 0x1D, 0x90, 0x29, 0xA7, 0xD3, 0xAC),
3150*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x11, 0xB7, 0x7F, 0x19, 0xDA, 0xB1, 0x12),
3151*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15),
3152*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F),
3153*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C),
3154*b0563631STom Van Eyck };
3155*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_a[] = {
3156*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04),
3157*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xD4, 0x3A, 0x50, 0x4A, 0x81, 0xA5, 0x8A),
3158*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xF9, 0x91, 0xBA, 0xEF, 0x65, 0x91, 0x13),
3159*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x27, 0xB2, 0x4F, 0x8E, 0xA2, 0xBE, 0xC2),
3160*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xAF, 0x05, 0xCE, 0x0A, 0x08, 0x72, 0x3C),
3161*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x15, 0x8C, 0x3D, 0xC6, 0x82, 0xC3, 0x7B),
3162*b0563631STom Van Eyck };
3163*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_b[] = {
3164*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x4C, 0x50, 0xFA, 0x96, 0x86, 0xB7, 0x3A),
3165*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0xC9, 0xDB, 0x95, 0x02, 0x39, 0xB4, 0x7C),
3166*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x62, 0xEB, 0x3E, 0xA5, 0x0E, 0x88, 0x2E),
3167*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xD2, 0xDC, 0x07, 0xE1, 0x7D, 0xB7, 0x2F),
3168*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x44, 0xF0, 0x16, 0x54, 0xB5, 0x39, 0x8B),
3169*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04),
3170*b0563631STom Van Eyck };
3171*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_gx[] = {
3172*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xAF, 0xD4, 0x47, 0xE2, 0xB2, 0x87, 0xEF),
3173*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x46, 0xD6, 0x36, 0x34, 0xE0, 0x26, 0xE8),
3174*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x10, 0xBD, 0x0C, 0xFE, 0xCA, 0x7F, 0xDB),
3175*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x4F, 0xF1, 0x7E, 0xE7, 0xA3, 0x47, 0x88),
3176*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x3F, 0xC1, 0xB7, 0x81, 0x3A, 0xA6, 0xA2),
3177*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x45, 0xCF, 0x68, 0xF0, 0x64, 0x1C, 0x1D),
3178*b0563631STom Van Eyck };
3179*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_gy[] = {
3180*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x53, 0x3C, 0x26, 0x41, 0x03, 0x82, 0x42),
3181*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x91, 0x77, 0x21, 0x46, 0x46, 0x0E),
3182*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x29, 0x91, 0xF9, 0x4F, 0x05, 0x9C, 0xE1),
3183*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x58, 0xEC, 0xFE, 0x29, 0x0B, 0xB7, 0x62),
3184*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xD5, 0xCF, 0x95, 0x8E, 0xEB, 0xB1, 0x5C),
3185*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xC2, 0xF9, 0x20, 0x75, 0x1D, 0xBE, 0x8A),
3186*b0563631STom Van Eyck };
3187*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_n[] = {
3188*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x65, 0x04, 0xE9, 0x02, 0x32, 0x88, 0x3B),
3189*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xC3, 0x7F, 0x6B, 0xAF, 0xB6, 0x3A, 0xCF),
3190*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x25, 0x04, 0xAC, 0x6C, 0x6E, 0x16, 0x1F),
3191*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15),
3192*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F),
3193*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C),
3194*b0563631STom Van Eyck };
3195*b0563631STom Van Eyck
3196*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
3197*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_0_X[] = {
3198*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xAF, 0xD4, 0x47, 0xE2, 0xB2, 0x87, 0xEF),
3199*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x46, 0xD6, 0x36, 0x34, 0xE0, 0x26, 0xE8),
3200*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x10, 0xBD, 0x0C, 0xFE, 0xCA, 0x7F, 0xDB),
3201*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x4F, 0xF1, 0x7E, 0xE7, 0xA3, 0x47, 0x88),
3202*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x3F, 0xC1, 0xB7, 0x81, 0x3A, 0xA6, 0xA2),
3203*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x45, 0xCF, 0x68, 0xF0, 0x64, 0x1C, 0x1D),
3204*b0563631STom Van Eyck };
3205*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_0_Y[] = {
3206*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x53, 0x3C, 0x26, 0x41, 0x03, 0x82, 0x42),
3207*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x91, 0x77, 0x21, 0x46, 0x46, 0x0E),
3208*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x29, 0x91, 0xF9, 0x4F, 0x05, 0x9C, 0xE1),
3209*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x58, 0xEC, 0xFE, 0x29, 0x0B, 0xB7, 0x62),
3210*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xD5, 0xCF, 0x95, 0x8E, 0xEB, 0xB1, 0x5C),
3211*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xC2, 0xF9, 0x20, 0x75, 0x1D, 0xBE, 0x8A),
3212*b0563631STom Van Eyck };
3213*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_1_X[] = {
3214*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0xD8, 0x8A, 0x54, 0x41, 0xD6, 0x6B, 0x1D),
3215*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x3B, 0xF1, 0x22, 0xFD, 0x2D, 0x4B, 0x03),
3216*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x55, 0xE3, 0x33, 0xF0, 0x73, 0x52, 0x5A),
3217*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x3F, 0x30, 0x26, 0xCA, 0x7F, 0x52, 0xA3),
3218*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x6E, 0x17, 0x9B, 0xD5, 0x2A, 0x4A, 0x31),
3219*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xDA, 0x6B, 0xE5, 0x03, 0x07, 0x1D, 0x2E),
3220*b0563631STom Van Eyck };
3221*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_1_Y[] = {
3222*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x7A, 0xAF, 0x98, 0xE3, 0xA4, 0xF6, 0x19),
3223*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x7D, 0xFE, 0x51, 0x40, 0x3B, 0x47, 0xD2),
3224*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x88, 0xEC, 0xC4, 0xE2, 0x8F, 0xCB, 0xA4),
3225*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0xE2, 0x88, 0x2D, 0x4E, 0x50, 0xEB, 0x9A),
3226*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x54, 0x94, 0x5E, 0xF4, 0x7F, 0x3A, 0x04),
3227*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x07, 0x1C, 0xE1, 0xBD, 0x0F, 0xF8, 0x63),
3228*b0563631STom Van Eyck };
3229*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_2_X[] = {
3230*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x92, 0x28, 0x2E, 0x32, 0x04, 0xB1, 0x4D),
3231*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x82, 0x44, 0x43, 0x76, 0x0D, 0x55, 0xBF),
3232*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0xE3, 0xFF, 0x89, 0x46, 0xDE, 0x4E, 0xFE),
3233*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x22, 0xBB, 0x67, 0x1A, 0x81, 0xEE, 0x27),
3234*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x54, 0xE2, 0x7A, 0xAE, 0xDA, 0x2C, 0xD0),
3235*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x9A, 0x90, 0xAA, 0x6E, 0x8B, 0xCC, 0x5F),
3236*b0563631STom Van Eyck };
3237*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_2_Y[] = {
3238*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x40, 0xAC, 0xED, 0x7D, 0x37, 0x87, 0xAC),
3239*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xF8, 0xB1, 0x80, 0x4C, 0x8C, 0x04, 0x42),
3240*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x98, 0x2C, 0xAD, 0x30, 0x69, 0x35, 0xC0),
3241*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x2E, 0x00, 0x2F, 0x44, 0x8C, 0xF0, 0xC0),
3242*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x58, 0x07, 0xD7, 0xCD, 0x60, 0xA1, 0x5B),
3243*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xFB, 0x7B, 0x03, 0x05, 0x5E, 0x79, 0x73),
3244*b0563631STom Van Eyck };
3245*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_3_X[] = {
3246*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x17, 0xCE, 0x38, 0x4B, 0x5E, 0x5B, 0xC8),
3247*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x0E, 0x0A, 0x61, 0x9D, 0x7C, 0x62, 0x08),
3248*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0xF0, 0x98, 0x71, 0x7F, 0x17, 0x26, 0xD7),
3249*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xD3, 0xFA, 0x3C, 0xF0, 0x70, 0x07, 0x82),
3250*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x47, 0x5C, 0x09, 0x43, 0xB7, 0x65, 0x15),
3251*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xA9, 0xA7, 0x3E, 0xFA, 0xF3, 0xEC, 0x22),
3252*b0563631STom Van Eyck };
3253*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_3_Y[] = {
3254*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x78, 0x22, 0x2B, 0x58, 0x71, 0xFA, 0xAA),
3255*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x30, 0xCE, 0x6A, 0xB3, 0xB0, 0x4F, 0x83),
3256*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0x95, 0x20, 0xA9, 0x23, 0xC2, 0x65, 0xE7),
3257*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xCF, 0x03, 0x5B, 0x8A, 0x80, 0x44, 0xBB),
3258*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xF8, 0x91, 0xF7, 0xD5, 0xED, 0xEA, 0x81),
3259*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x5B, 0x16, 0x10, 0x25, 0xAC, 0x2A, 0x17),
3260*b0563631STom Van Eyck };
3261*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_4_X[] = {
3262*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xEC, 0xDC, 0xC4, 0x7B, 0x8C, 0x6B, 0xE9),
3263*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xBB, 0x1C, 0xD3, 0x5A, 0xEE, 0xD9, 0x97),
3264*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x5D, 0x30, 0x5E, 0xF7, 0xB2, 0x41, 0x9D),
3265*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xCE, 0x0F, 0x1A, 0xC6, 0x41, 0x64, 0x62),
3266*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x18, 0xE1, 0xE3, 0x82, 0x15, 0x66, 0x4B),
3267*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xE2, 0x24, 0x04, 0x72, 0x39, 0xA0, 0x7C),
3268*b0563631STom Van Eyck };
3269*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_4_Y[] = {
3270*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x51, 0xA2, 0x58, 0x88, 0x62, 0xE1, 0x02),
3271*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xD2, 0x65, 0x14, 0xE9, 0x4C, 0x82, 0x30),
3272*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xE1, 0xAC, 0x87, 0xAE, 0x31, 0x1A, 0x7A),
3273*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x4F, 0x96, 0x1E, 0x85, 0x7A, 0xC3, 0x2B),
3274*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x86, 0xBB, 0xF0, 0xC0, 0x9D, 0x08, 0x7B),
3275*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x53, 0x03, 0x09, 0x80, 0x91, 0xEF, 0x68),
3276*b0563631STom Van Eyck };
3277*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_5_X[] = {
3278*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xD7, 0xAF, 0x6F, 0x69, 0x7B, 0x88, 0xA1),
3279*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x13, 0xE4, 0x30, 0xA2, 0x47, 0xB5, 0xC1),
3280*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xD2, 0xC0, 0xDD, 0x8A, 0x1C, 0x3C, 0xF2),
3281*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x8C, 0xB3, 0x4C, 0xBA, 0x8B, 0x6D, 0xCF),
3282*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0xC7, 0xA1, 0xA8, 0x6E, 0x3C, 0x4F, 0xF1),
3283*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x4A, 0x97, 0xC8, 0x03, 0x6F, 0x01, 0x82),
3284*b0563631STom Van Eyck };
3285*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_5_Y[] = {
3286*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x18, 0x12, 0xA9, 0x39, 0xD5, 0x22, 0x26),
3287*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xA7, 0xC0, 0xBD, 0x9D, 0x8D, 0x78, 0x38),
3288*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xB3, 0xD0, 0x7F, 0xDF, 0xD0, 0x30, 0xDE),
3289*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x25, 0x73, 0x96, 0xEC, 0xA8, 0x1D, 0x7C),
3290*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xD1, 0x65, 0x66, 0xDC, 0xD9, 0xCF, 0xDF),
3291*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0xED, 0x7B, 0x37, 0xAD, 0xE2, 0xBE, 0x2D),
3292*b0563631STom Van Eyck };
3293*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_6_X[] = {
3294*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x79, 0x42, 0x6A, 0x07, 0x66, 0xB1, 0xBD),
3295*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x53, 0x62, 0x65, 0x92, 0x09, 0x4C, 0xA1),
3296*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xAF, 0xC3, 0x03, 0xF6, 0xF4, 0x2D, 0x9B),
3297*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xCA, 0x41, 0xD9, 0xA2, 0x69, 0x9B, 0xC9),
3298*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xB2, 0xA6, 0x8D, 0xE1, 0xAA, 0x61, 0x76),
3299*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xBA, 0x4D, 0x12, 0xB6, 0xBE, 0xF3, 0x7E),
3300*b0563631STom Van Eyck };
3301*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_6_Y[] = {
3302*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xD9, 0x92, 0x22, 0x07, 0xCE, 0xC9, 0x26),
3303*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0xA1, 0x7C, 0x91, 0xDB, 0x32, 0xF7, 0xE5),
3304*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x49, 0x4B, 0x6D, 0xFB, 0xD9, 0x70, 0x3B),
3305*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xFB, 0x4E, 0x4C, 0x5E, 0x66, 0x81, 0x1D),
3306*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0xB3, 0xE1, 0x00, 0xB7, 0xD9, 0xCC, 0x58),
3307*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x36, 0x8B, 0xC4, 0x39, 0x20, 0xFD, 0x30),
3308*b0563631STom Van Eyck };
3309*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_7_X[] = {
3310*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x1F, 0x60, 0x03, 0xBB, 0xD7, 0x60, 0x57),
3311*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x3C, 0x62, 0xDD, 0x71, 0x95, 0xE9, 0x61),
3312*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x5B, 0x7A, 0x5F, 0x68, 0x81, 0xC5, 0x90),
3313*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xAF, 0xB5, 0xB9, 0x98, 0x42, 0x28, 0xA5),
3314*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x29, 0x8E, 0x11, 0x49, 0xB4, 0xD7, 0x20),
3315*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x3E, 0xD2, 0x30, 0xA1, 0xBA, 0xCA, 0x03),
3316*b0563631STom Van Eyck };
3317*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_7_Y[] = {
3318*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x37, 0x64, 0x44, 0x2F, 0x03, 0xE5, 0x41),
3319*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x42, 0xBC, 0xFF, 0xA2, 0x1A, 0x5F, 0x06),
3320*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x04, 0xAB, 0x04, 0xE0, 0x24, 0xAD, 0x2A),
3321*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x45, 0x17, 0x67, 0x1F, 0x3E, 0x53, 0xF8),
3322*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x0F, 0xB3, 0x1B, 0x57, 0x54, 0xC2, 0x03),
3323*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xD3, 0xF8, 0xC4, 0x1B, 0x9B, 0xFA, 0x30),
3324*b0563631STom Van Eyck };
3325*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_8_X[] = {
3326*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x90, 0xFD, 0xFB, 0xCA, 0x49, 0x38, 0x4E),
3327*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0xCF, 0xC6, 0xDD, 0xF0, 0xFF, 0x8C, 0x11),
3328*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x69, 0x9D, 0xBD, 0x5F, 0x33, 0xE9, 0xB4),
3329*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x19, 0x82, 0x3D, 0xAC, 0x1C, 0x40, 0x23),
3330*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xC7, 0x02, 0x46, 0x14, 0x77, 0x00, 0xBE),
3331*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x05, 0xF2, 0x77, 0x3A, 0x66, 0x5C, 0x39),
3332*b0563631STom Van Eyck };
3333*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_8_Y[] = {
3334*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xE6, 0x17, 0xDE, 0xB2, 0xA1, 0xE5, 0xB8),
3335*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x71, 0xEC, 0x9D, 0xD8, 0xF5, 0xD4, 0x66),
3336*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0xC6, 0x42, 0x5E, 0xE7, 0x18, 0xBA, 0xD0),
3337*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x21, 0x68, 0x5A, 0x26, 0xFB, 0xD7, 0x17),
3338*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x00, 0x5C, 0xBA, 0x8A, 0x34, 0xEC, 0x75),
3339*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x9C, 0x3C, 0xAF, 0x53, 0xE8, 0x65, 0x35),
3340*b0563631STom Van Eyck };
3341*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_9_X[] = {
3342*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xEF, 0x28, 0xDC, 0x67, 0x05, 0xC8, 0xDF),
3343*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x78, 0xC3, 0x85, 0x49, 0xA0, 0xBC, 0x0F),
3344*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x3E, 0x2D, 0xA0, 0xCF, 0xD4, 0x7A, 0xF5),
3345*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x93, 0xFE, 0x60, 0xB3, 0x6E, 0x99, 0xE2),
3346*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0xAD, 0x04, 0xE7, 0x49, 0xAF, 0x5E, 0xE3),
3347*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x7A, 0xED, 0xA6, 0x9E, 0x18, 0x09, 0x31),
3348*b0563631STom Van Eyck };
3349*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_9_Y[] = {
3350*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x05, 0x94, 0x44, 0xDC, 0xB8, 0x85, 0x94),
3351*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xB7, 0x37, 0xC2, 0x50, 0x75, 0x15, 0xDA),
3352*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xC6, 0x0F, 0xB2, 0xA9, 0x91, 0x3E, 0xE8),
3353*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x81, 0xAD, 0x25, 0xA1, 0x26, 0x73, 0x15),
3354*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xF1, 0xD1, 0x61, 0x7C, 0x76, 0x8F, 0x13),
3355*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xDB, 0x4A, 0xFF, 0x14, 0xA7, 0x48, 0x0B),
3356*b0563631STom Van Eyck };
3357*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_10_X[] = {
3358*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x73, 0xC6, 0xC2, 0xCC, 0xF1, 0x57, 0x04),
3359*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0xED, 0x73, 0x27, 0x70, 0x82, 0xB6, 0x5E),
3360*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xBA, 0xAC, 0x3A, 0xCF, 0xF4, 0xEA, 0xA6),
3361*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xD6, 0xB1, 0x8F, 0x0E, 0x08, 0x2C, 0x5E),
3362*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xE3, 0x8F, 0x2F, 0x0E, 0xA1, 0xF3, 0x07),
3363*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0xF5, 0x7C, 0x9B, 0x29, 0x0A, 0xF6, 0x28),
3364*b0563631STom Van Eyck };
3365*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_10_Y[] = {
3366*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0xEE, 0x17, 0x47, 0x34, 0x15, 0xA3, 0xAF),
3367*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xBE, 0x88, 0x48, 0xE7, 0xA2, 0xBB, 0xDE),
3368*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0xAD, 0xDC, 0x65, 0x61, 0x37, 0x0F, 0xC1),
3369*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x67, 0xAD, 0xA2, 0x3A, 0x1C, 0x91, 0x78),
3370*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x07, 0x0C, 0x3A, 0x41, 0x6E, 0x13, 0x28),
3371*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0xBD, 0x7E, 0xED, 0xAA, 0x14, 0xDD, 0x61),
3372*b0563631STom Van Eyck };
3373*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_11_X[] = {
3374*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0xDC, 0x20, 0x01, 0x72, 0x11, 0x48, 0x55),
3375*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xC4, 0x7B, 0xF8, 0x62, 0x3D, 0xF0, 0x9F),
3376*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xC2, 0x3D, 0x2E, 0x52, 0xA3, 0x4A, 0x89),
3377*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xE2, 0x53, 0x46, 0x5E, 0x21, 0xF8, 0xCE),
3378*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xC7, 0x8F, 0xA9, 0x26, 0x42, 0x32, 0x3A),
3379*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xA6, 0xA0, 0x8D, 0x4B, 0x9A, 0x19, 0x03),
3380*b0563631STom Van Eyck };
3381*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_11_Y[] = {
3382*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xAB, 0x6D, 0x1E, 0xFB, 0xEE, 0x60, 0x0C),
3383*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x56, 0x3C, 0xC5, 0x5D, 0x10, 0x79, 0x1C),
3384*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0xBC, 0x41, 0x9F, 0x71, 0xEF, 0x02, 0xF9),
3385*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x36, 0xC4, 0xD0, 0x88, 0x9B, 0x32, 0xFC),
3386*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xD4, 0x5D, 0x17, 0x39, 0xE6, 0x22, 0x2C),
3387*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x26, 0x01, 0xCE, 0xBE, 0x4A, 0x9C, 0x27),
3388*b0563631STom Van Eyck };
3389*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_12_X[] = {
3390*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x6D, 0x11, 0xCA, 0x6C, 0x5A, 0x93, 0x0C),
3391*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x96, 0x26, 0xAF, 0x2F, 0xE4, 0x30, 0x98),
3392*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xC1, 0x4C, 0xC6, 0x30, 0x1F, 0x5C, 0x04),
3393*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xB3, 0xE8, 0xFC, 0x35, 0xEB, 0x63, 0x6C),
3394*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x1D, 0xCA, 0xFC, 0x50, 0x36, 0x4B, 0x96),
3395*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x0E, 0x23, 0x5B, 0xAF, 0xEB, 0x2D, 0x31),
3396*b0563631STom Van Eyck };
3397*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_12_Y[] = {
3398*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x88, 0xB6, 0xD7, 0x74, 0x4A, 0x23, 0xB6),
3399*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x66, 0xE2, 0xBB, 0x29, 0xA6, 0x4F, 0x55),
3400*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x6F, 0x7E, 0x68, 0x6E, 0xA0, 0x14, 0x94),
3401*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x73, 0xD4, 0xE8, 0xAB, 0x5B, 0xF6, 0x0D),
3402*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xE0, 0x3C, 0x24, 0x00, 0x95, 0xE9, 0xAD),
3403*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x0D, 0x4F, 0x81, 0xD0, 0xF2, 0x3F, 0x00),
3404*b0563631STom Van Eyck };
3405*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_13_X[] = {
3406*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x1D, 0xCD, 0x78, 0x39, 0xC4, 0x6B, 0xD9),
3407*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x45, 0xC7, 0xB8, 0x2F, 0xAA, 0x5D, 0xE3),
3408*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x8C, 0x6E, 0xA3, 0x24, 0xB2, 0xDB, 0x4B),
3409*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x2D, 0xD9, 0xF1, 0xC7, 0x9B, 0x8A, 0xAF),
3410*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0xE1, 0x2C, 0xB9, 0x40, 0x37, 0x91, 0x75),
3411*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x2C, 0xB5, 0x23, 0x03, 0x2B, 0xAF, 0x2F),
3412*b0563631STom Van Eyck };
3413*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_13_Y[] = {
3414*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x9D, 0x5A, 0x20, 0x10, 0xA9, 0x84, 0xDA),
3415*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x30, 0x89, 0x20, 0x13, 0xE9, 0xB2, 0xCA),
3416*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x6E, 0x52, 0xEB, 0x03, 0x18, 0x1F, 0xA6),
3417*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x9E, 0x1C, 0x35, 0x87, 0x92, 0x69, 0xC7),
3418*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0xC9, 0x88, 0xAF, 0xC6, 0x6C, 0x83, 0x72),
3419*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0xD5, 0x7A, 0x54, 0x34, 0x99, 0xB6, 0x6F),
3420*b0563631STom Van Eyck };
3421*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_14_X[] = {
3422*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0xAD, 0x45, 0x9B, 0x4B, 0x41, 0x4D, 0x50),
3423*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x5D, 0xAB, 0x7F, 0x35, 0x34, 0xE9, 0x29),
3424*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0xBE, 0x78, 0x34, 0x44, 0xF3, 0x4A, 0x87),
3425*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xDE, 0xE3, 0xC4, 0xEE, 0x0B, 0xF9, 0xEB),
3426*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x86, 0x16, 0x48, 0x32, 0xB8, 0x74, 0x41),
3427*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xEE, 0x7C, 0xBA, 0xBD, 0x81, 0xE3, 0x55),
3428*b0563631STom Van Eyck };
3429*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_14_Y[] = {
3430*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x6A, 0xFA, 0x84, 0xDA, 0xB8, 0xD5, 0x14),
3431*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0x9F, 0x8A, 0xD5, 0x1B, 0x2E, 0x1A, 0x0B),
3432*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x0C, 0x61, 0xE2, 0xFF, 0x5B, 0xE6, 0xD5),
3433*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0x62, 0xC1, 0x87, 0x53, 0x1B, 0x92, 0xA3),
3434*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x90, 0x00, 0xD1, 0x6A, 0x0C, 0x0E, 0x28),
3435*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x2E, 0xB5, 0x3B, 0x44, 0xB5, 0xA0, 0x78),
3436*b0563631STom Van Eyck };
3437*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_15_X[] = {
3438*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x5D, 0x02, 0x58, 0xB5, 0xBE, 0x45, 0x14),
3439*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xEF, 0x8E, 0x90, 0x4D, 0x2A, 0x32, 0xAC),
3440*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x99, 0x75, 0x5C, 0x0A, 0x33, 0x8F, 0x36),
3441*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x6C, 0x95, 0xD4, 0x1F, 0xF3, 0xEB, 0xDA),
3442*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xE4, 0x4C, 0x91, 0x20, 0xF3, 0x25, 0xEB),
3443*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x95, 0xEB, 0x29, 0x6F, 0x20, 0x34, 0x81),
3444*b0563631STom Van Eyck };
3445*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_15_Y[] = {
3446*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x15, 0xE5, 0x13, 0x7E, 0x64, 0x8B, 0xAD),
3447*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xBC, 0x0D, 0x18, 0x7E, 0x37, 0x9E, 0xFA),
3448*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x82, 0x20, 0xF7, 0x2D, 0x7A, 0x77, 0x52),
3449*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x29, 0xA2, 0xDB, 0x7A, 0xE6, 0x6F, 0xA5),
3450*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xC6, 0x50, 0x5C, 0xBC, 0xE6, 0x4F, 0xBD),
3451*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x9F, 0xD5, 0xE8, 0xC5, 0x3D, 0xB7, 0x30),
3452*b0563631STom Van Eyck };
3453*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_16_X[] = {
3454*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x03, 0x55, 0x10, 0xDB, 0xA6, 0x8B, 0x22),
3455*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x17, 0xAE, 0x78, 0xC9, 0x1D, 0x43, 0xCA),
3456*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x35, 0x49, 0xD4, 0x47, 0x84, 0x8D, 0x20),
3457*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x95, 0x2F, 0xEA, 0xBC, 0xB4, 0x18, 0xB3),
3458*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x48, 0xAE, 0x89, 0xF5, 0x65, 0x3D, 0x89),
3459*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xF2, 0x2B, 0x20, 0xD1, 0x75, 0x50, 0x63),
3460*b0563631STom Van Eyck };
3461*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_16_Y[] = {
3462*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xE6, 0x5C, 0x2C, 0xE0, 0x7D, 0xDF, 0x2D),
3463*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x07, 0x3E, 0xCE, 0x9F, 0x18, 0xB6, 0x05),
3464*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0xF8, 0xF0, 0xD5, 0xFA, 0x42, 0x1D, 0x6D),
3465*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x6C, 0x1D, 0x03, 0xC9, 0x0E, 0x2B, 0x2F),
3466*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x18, 0x52, 0xA5, 0xB4, 0x63, 0xE1, 0x06),
3467*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x0A, 0xD9, 0xC4, 0xFD, 0x16, 0x60, 0x54),
3468*b0563631STom Van Eyck };
3469*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_17_X[] = {
3470*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x7D, 0xDE, 0xDF, 0x4B, 0x4A, 0xB0, 0xCB),
3471*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x4E, 0x8C, 0x94, 0xC1, 0xE2, 0x85, 0xDF),
3472*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0xF0, 0xEA, 0xB5, 0x9B, 0x70, 0xEF, 0x10),
3473*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xC2, 0x39, 0x5D, 0xF3, 0x2C, 0xD9, 0x2C),
3474*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x1C, 0x2E, 0xCC, 0x2F, 0x54, 0x87, 0x80),
3475*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x72, 0xC7, 0xB5, 0x50, 0xA3, 0x84, 0x77),
3476*b0563631STom Van Eyck };
3477*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_17_Y[] = {
3478*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xD1, 0xAF, 0xA9, 0xB4, 0x8B, 0x5D, 0xFA),
3479*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xF6, 0x52, 0x8A, 0xC3, 0x56, 0xA5, 0x5E),
3480*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x52, 0xFF, 0xEA, 0x05, 0x42, 0x77, 0x83),
3481*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x08, 0x90, 0x72, 0x86, 0xC4, 0xC3, 0xB8),
3482*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x15, 0xF8, 0xF1, 0x16, 0x67, 0xC6, 0xD5),
3483*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x87, 0xAC, 0x8F, 0x71, 0xEC, 0x83, 0x81),
3484*b0563631STom Van Eyck };
3485*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_18_X[] = {
3486*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xE1, 0xE6, 0x2D, 0x0E, 0x11, 0xA1, 0x62),
3487*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xE2, 0xA8, 0x32, 0xE6, 0xE3, 0x83, 0xD1),
3488*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x56, 0xE5, 0xCD, 0xB7, 0x2B, 0x67, 0x6F),
3489*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xED, 0xC9, 0x65, 0x6D, 0x87, 0xE1, 0x8E),
3490*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x8E, 0xFD, 0x9A, 0x53, 0x0E, 0xFA, 0xA3),
3491*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0x4C, 0x4A, 0xE2, 0x23, 0x84, 0xFA, 0x01),
3492*b0563631STom Van Eyck };
3493*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_18_Y[] = {
3494*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xFE, 0x49, 0x81, 0xD1, 0x3E, 0xF4, 0x7C),
3495*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x72, 0xE0, 0xEF, 0x0D, 0xB8, 0x3E, 0x6F),
3496*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x00, 0x0F, 0x5F, 0xCE, 0x60, 0x72, 0x2C),
3497*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xCC, 0xD8, 0x03, 0x07, 0x6E, 0x5A, 0xCD),
3498*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x3A, 0x35, 0x50, 0x4E, 0x1F, 0xCA, 0x5F),
3499*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xEA, 0x88, 0x55, 0xBD, 0x6E, 0x05, 0x7F),
3500*b0563631STom Van Eyck };
3501*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_19_X[] = {
3502*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x6D, 0xF1, 0x97, 0xA6, 0x69, 0x39, 0x24),
3503*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x41, 0x99, 0xFF, 0x3B, 0xA1, 0x26, 0xEC),
3504*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x2F, 0x95, 0x80, 0x12, 0x4A, 0x1B, 0xCB),
3505*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xBF, 0x51, 0xAA, 0xAE, 0x2D, 0xDA, 0xCF),
3506*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x1C, 0xB3, 0x52, 0x36, 0x49, 0xD4, 0x86),
3507*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xC1, 0x1F, 0x3A, 0xD3, 0x3E, 0x5C, 0x1A),
3508*b0563631STom Van Eyck };
3509*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_19_Y[] = {
3510*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x51, 0xF7, 0x2B, 0xC8, 0xA9, 0xA7, 0x15),
3511*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x4E, 0x7F, 0x98, 0x41, 0x66, 0xB0, 0x03),
3512*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x1D, 0xC0, 0x42, 0xCD, 0xF8, 0xC3, 0x2B),
3513*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x41, 0x91, 0x7D, 0xCC, 0x8B, 0xCC, 0x41),
3514*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xAE, 0x76, 0xED, 0x56, 0x18, 0xC5, 0xAB),
3515*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x6A, 0x06, 0xA3, 0x7F, 0x65, 0x10, 0x1F),
3516*b0563631STom Van Eyck };
3517*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_20_X[] = {
3518*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xEC, 0x3C, 0x05, 0x05, 0xCA, 0xF6, 0xED),
3519*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0xCD, 0x02, 0x51, 0x12, 0x16, 0x3C, 0x63),
3520*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0xEB, 0xB3, 0x43, 0x7B, 0xDD, 0xB2, 0x7C),
3521*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x59, 0x90, 0x41, 0xDB, 0xE4, 0xF5, 0x91),
3522*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x0E, 0x18, 0x2A, 0x5A, 0x83, 0x7C, 0x2F),
3523*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x37, 0xA1, 0x0D, 0xF1, 0x2F, 0x63, 0x79),
3524*b0563631STom Van Eyck };
3525*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_20_Y[] = {
3526*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xC0, 0xFA, 0x6F, 0x1F, 0x67, 0xCF, 0xEC),
3527*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x34, 0x45, 0xBB, 0xF4, 0xF9, 0x9B, 0x89),
3528*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x69, 0xFE, 0x67, 0x1D, 0x64, 0x8F, 0xB9),
3529*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x39, 0xBF, 0xD8, 0xB3, 0xC7, 0xAD, 0x8A),
3530*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x93, 0xFF, 0xF3, 0x28, 0xFA, 0x39, 0xF6),
3531*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xF9, 0xC3, 0x85, 0x26, 0x7A, 0x88, 0x89),
3532*b0563631STom Van Eyck };
3533*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_21_X[] = {
3534*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xD5, 0x79, 0xD8, 0x11, 0xDE, 0xEB, 0x4E),
3535*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x46, 0xA4, 0x6A, 0xDA, 0x74, 0x34, 0xA8),
3536*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xBD, 0xD3, 0xF5, 0x14, 0xEE, 0xFE, 0xAE),
3537*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x4C, 0xA3, 0x71, 0x43, 0x65, 0xF8, 0x94),
3538*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x6C, 0x35, 0xFA, 0x90, 0x25, 0xD8, 0xE2),
3539*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x34, 0x84, 0x96, 0xA1, 0x43, 0x03, 0x4D),
3540*b0563631STom Van Eyck };
3541*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_21_Y[] = {
3542*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x3B, 0x3B, 0x2F, 0xCA, 0x59, 0xF2, 0x42),
3543*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x48, 0x24, 0x74, 0xD8, 0x72, 0x90, 0xA3),
3544*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x42, 0x74, 0x8C, 0x6F, 0x52, 0x19, 0x3D),
3545*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x9E, 0x41, 0x63, 0x68, 0x78, 0x4C, 0x2F),
3546*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0x94, 0xB6, 0x6B, 0x38, 0x52, 0xA8, 0x9F),
3547*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x30, 0x25, 0x93, 0xA1, 0x6F, 0x6E, 0x68),
3548*b0563631STom Van Eyck };
3549*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_22_X[] = {
3550*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x2F, 0x4B, 0x64, 0x79, 0x50, 0xFF, 0x01),
3551*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x36, 0xED, 0x57, 0x39, 0x3B, 0xE7, 0xF3),
3552*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x85, 0xEA, 0x35, 0xD6, 0xC0, 0xA0, 0x52),
3553*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x89, 0x3A, 0xCC, 0x22, 0x1C, 0x46, 0x02),
3554*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x7A, 0xB0, 0xA1, 0x1B, 0x69, 0x62, 0x55),
3555*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xB8, 0x8A, 0x6C, 0x18, 0x85, 0x0D, 0x88),
3556*b0563631STom Van Eyck };
3557*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_22_Y[] = {
3558*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xB6, 0x50, 0xE9, 0x4E, 0x7F, 0xE8, 0x07),
3559*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x5B, 0x5C, 0xD1, 0x4B, 0x11, 0x9A, 0xD8),
3560*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x25, 0x56, 0x74, 0x51, 0x9C, 0xEC, 0x9C),
3561*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x7F, 0xB6, 0x8A, 0xCB, 0x3A, 0x10, 0x6A),
3562*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x33, 0x07, 0x01, 0xE9, 0x49, 0x59, 0xE6),
3563*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xA5, 0x2E, 0xF2, 0xBA, 0x32, 0x63, 0x44),
3564*b0563631STom Van Eyck };
3565*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_23_X[] = {
3566*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x06, 0x0B, 0xA5, 0x44, 0x27, 0x7F, 0x22),
3567*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x74, 0xAC, 0x0F, 0xCC, 0x4F, 0x13, 0x61),
3568*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xB1, 0xBF, 0x97, 0x49, 0xA5, 0x1C, 0x1D),
3569*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x64, 0x68, 0x7B, 0x0F, 0xCC, 0x77, 0xF8),
3570*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x39, 0xF9, 0x4E, 0x84, 0x9C, 0xF6, 0x96),
3571*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xCF, 0x6D, 0xE2, 0xA1, 0x2D, 0xF9, 0x2B),
3572*b0563631STom Van Eyck };
3573*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_23_Y[] = {
3574*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0xC4, 0x90, 0x57, 0x31, 0x01, 0x05, 0x5E),
3575*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x1E, 0xBB, 0xBF, 0x98, 0xA4, 0x7C, 0xE3),
3576*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0xE3, 0xA0, 0xB2, 0xCD, 0x39, 0x9A, 0x3F),
3577*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x34, 0x60, 0x7A, 0x89, 0x98, 0xB5, 0x52),
3578*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0x20, 0x3D, 0x3A, 0x04, 0x8F, 0x5A, 0xAC),
3579*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x26, 0xB6, 0x49, 0x09, 0x9C, 0x0F, 0x59),
3580*b0563631STom Van Eyck };
3581*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_24_X[] = {
3582*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x66, 0xD2, 0x38, 0x2A, 0x62, 0x81, 0xCA),
3583*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0xC8, 0x20, 0x5E, 0x28, 0xA3, 0x81, 0xA7),
3584*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x31, 0xA4, 0xF1, 0xEA, 0x7D, 0x87, 0x45),
3585*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0x2C, 0x99, 0x09, 0x6F, 0x63, 0xEB, 0x2F),
3586*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x76, 0xDA, 0x1A, 0x06, 0xBE, 0xDE, 0xA2),
3587*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x09, 0x2E, 0x75, 0x39, 0x30, 0x2D, 0x42),
3588*b0563631STom Van Eyck };
3589*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_24_Y[] = {
3590*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x9B, 0xC1, 0x5A, 0x17, 0xC3, 0x8C, 0x31),
3591*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x8D, 0x94, 0x4D, 0x3D, 0xAB, 0x60, 0xD4),
3592*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFD, 0x1E, 0x0F, 0x43, 0xAE, 0x9D, 0x62),
3593*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0xF2, 0xF3, 0x20, 0x1B, 0xAA, 0xB7, 0x41),
3594*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x5B, 0xA4, 0xF4, 0x90, 0x3B, 0xE3, 0x71),
3595*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x78, 0x72, 0xBD, 0x65, 0x09, 0x0B, 0x01),
3596*b0563631STom Van Eyck };
3597*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_25_X[] = {
3598*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x37, 0x2A, 0x6C, 0x16, 0x4F, 0x64, 0x59),
3599*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0xCE, 0xA3, 0x90, 0xB4, 0x9A, 0xBC, 0xF7),
3600*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x38, 0x55, 0x63, 0x1D, 0x3A, 0x6E, 0x18),
3601*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xB4, 0xAA, 0x99, 0x22, 0x45, 0x89, 0x2C),
3602*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x7C, 0x8C, 0xA6, 0x3D, 0xA7, 0x3E, 0xE8),
3603*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x06, 0x42, 0xDC, 0xA6, 0xE3, 0xC6, 0x12),
3604*b0563631STom Van Eyck };
3605*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_25_Y[] = {
3606*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x8C, 0x3D, 0x5D, 0x47, 0x31, 0x7C, 0xEB),
3607*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x85, 0xEE, 0x46, 0x7E, 0x13, 0x04, 0x41),
3608*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x3C, 0x8B, 0x43, 0x2E, 0x74, 0xF5, 0xF6),
3609*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x88, 0x8E, 0x07, 0x29, 0x08, 0x03, 0x26),
3610*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x9B, 0x89, 0xEB, 0x08, 0xE8, 0x43, 0xB5),
3611*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x07, 0x67, 0xFD, 0xD9, 0x73, 0x6F, 0x18),
3612*b0563631STom Van Eyck };
3613*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_26_X[] = {
3614*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xEB, 0x21, 0x8D, 0x98, 0x43, 0x74, 0x98),
3615*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xCC, 0x14, 0xD8, 0x08, 0xBB, 0xA6, 0xE3),
3616*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x98, 0xF2, 0x6A, 0x18, 0xC3, 0xDD, 0x9E),
3617*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x38, 0x91, 0xA0, 0x03, 0xF2, 0x04, 0x62),
3618*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xAF, 0xE8, 0xFD, 0xFB, 0x13, 0x70, 0x74),
3619*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x93, 0x87, 0x98, 0x4A, 0xE0, 0x00, 0x12),
3620*b0563631STom Van Eyck };
3621*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_26_Y[] = {
3622*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x2E, 0x69, 0x9C, 0xA2, 0x2D, 0x03, 0x3F),
3623*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xFE, 0xF3, 0xB9, 0xC1, 0x85, 0x2A, 0xEE),
3624*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xFD, 0x86, 0xB1, 0xCD, 0xBF, 0x41, 0xB7),
3625*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xD8, 0x9A, 0x21, 0xF3, 0xFE, 0xCB, 0xF1),
3626*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x78, 0x04, 0x60, 0xB7, 0xA9, 0xA2, 0x84),
3627*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x1E, 0x66, 0x2A, 0x54, 0x51, 0xBD, 0x8B),
3628*b0563631STom Van Eyck };
3629*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_27_X[] = {
3630*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x16, 0x36, 0xEF, 0x61, 0x2D, 0xEE, 0x3B),
3631*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x5F, 0x88, 0xA0, 0x13, 0x12, 0xF7, 0x23),
3632*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xC6, 0xAD, 0x4A, 0x4A, 0x07, 0x01, 0x5B),
3633*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x74, 0xB1, 0x4F, 0xEB, 0xBD, 0xD5, 0x6B),
3634*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xF9, 0x71, 0xA2, 0x06, 0x4F, 0xD7, 0xBC),
3635*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x8B, 0x4D, 0x48, 0xE0, 0x98, 0xFB, 0x6A),
3636*b0563631STom Van Eyck };
3637*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_27_Y[] = {
3638*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0xBA, 0x10, 0xA3, 0x0D, 0x52, 0xAC, 0x3A),
3639*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xD0, 0xE0, 0x36, 0xE6, 0x07, 0x3A, 0x30),
3640*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x80, 0xF0, 0xAA, 0x49, 0x22, 0x4B, 0xDD),
3641*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xC7, 0xAB, 0x1C, 0x89, 0xCD, 0x24, 0x40),
3642*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x2A, 0xFC, 0xB3, 0x6D, 0x45, 0x96, 0x49),
3643*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0xE4, 0xDB, 0x52, 0x3F, 0xC4, 0xB4, 0x19),
3644*b0563631STom Van Eyck };
3645*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_28_X[] = {
3646*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0xCC, 0xC8, 0x7F, 0xBB, 0x6B, 0x87, 0x47),
3647*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x21, 0x3C, 0x69, 0x7D, 0x38, 0x57, 0x50),
3648*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x4C, 0x18, 0x3C, 0x53, 0xA5, 0x48, 0x6D),
3649*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xC3, 0x64, 0x45, 0xDB, 0xC4, 0x6D, 0x15),
3650*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xCC, 0xD1, 0xBB, 0x17, 0xB8, 0x34, 0x2D),
3651*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x69, 0x71, 0xFA, 0xA0, 0x28, 0x4A, 0x3D),
3652*b0563631STom Van Eyck };
3653*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_28_Y[] = {
3654*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xE8, 0x9E, 0x39, 0xEA, 0x8D, 0x38, 0xDB),
3655*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x9C, 0xBB, 0xCD, 0x80, 0x1A, 0xEE, 0xB7),
3656*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xA0, 0x45, 0xBF, 0xD9, 0x22, 0x11, 0x32),
3657*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x7C, 0x5C, 0xD9, 0xC0, 0x9F, 0x69, 0xF5),
3658*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x8A, 0xA6, 0x79, 0x4E, 0x35, 0xB9, 0xD5),
3659*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x8B, 0x9A, 0x3E, 0xA1, 0xB8, 0x28, 0x10),
3660*b0563631STom Van Eyck };
3661*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_29_X[] = {
3662*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x2F, 0xEF, 0xBB, 0xA9, 0x72, 0x7F, 0xEA),
3663*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x34, 0xB7, 0x12, 0xB9, 0xE7, 0xC3, 0x2A),
3664*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x1D, 0xD9, 0x42, 0x77, 0x0C, 0x71, 0x6E),
3665*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x01, 0x59, 0xA7, 0x56, 0x03, 0x91, 0x8D),
3666*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x91, 0x99, 0x33, 0x30, 0x3E, 0xEF, 0x13),
3667*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0xC9, 0x5A, 0x9A, 0x54, 0x66, 0xF1, 0x70),
3668*b0563631STom Van Eyck };
3669*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_29_Y[] = {
3670*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x2C, 0xB7, 0x6E, 0x71, 0x7D, 0x35, 0x30),
3671*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x0D, 0xEF, 0xD1, 0x2D, 0x99, 0x63, 0x2F),
3672*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x31, 0xAF, 0x2D, 0xC9, 0xC6, 0xC2, 0xAE),
3673*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0xC0, 0xDF, 0x80, 0x54, 0xC4, 0xAC, 0xF3),
3674*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x6B, 0xA0, 0x84, 0x96, 0xF7, 0x31, 0xC8),
3675*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0xE2, 0x7C, 0x7A, 0x41, 0x45, 0x75, 0x6A),
3676*b0563631STom Van Eyck };
3677*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_30_X[] = {
3678*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xEE, 0x58, 0x31, 0xE8, 0x68, 0xD6, 0x76),
3679*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x2E, 0x48, 0xB7, 0x09, 0x9F, 0xD4, 0xCA),
3680*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xA9, 0x5C, 0xE7, 0x64, 0x43, 0x5D, 0xC9),
3681*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x58, 0x9F, 0x50, 0xAB, 0x68, 0xFF, 0x6D),
3682*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x88, 0x2D, 0xBA, 0x12, 0xBF, 0x8D, 0x7D),
3683*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xDF, 0x6F, 0xB3, 0x75, 0xA4, 0x55, 0x73),
3684*b0563631STom Van Eyck };
3685*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_30_Y[] = {
3686*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x17, 0x92, 0x39, 0xB7, 0x13, 0x37, 0x6F),
3687*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x43, 0x71, 0xA7, 0xCA, 0x17, 0x1B, 0x32),
3688*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xB9, 0xB0, 0x78, 0xEF, 0xA0, 0xDA, 0x83),
3689*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x84, 0xF2, 0x0F, 0x85, 0xA2, 0xB6, 0x1F),
3690*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x65, 0x2E, 0x6E, 0x45, 0xB9, 0x4C, 0x3C),
3691*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x6A, 0x8C, 0x2B, 0x77, 0x96, 0x36, 0x22),
3692*b0563631STom Van Eyck };
3693*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_31_X[] = {
3694*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x7A, 0x13, 0x4A, 0x97, 0x63, 0x02, 0x10),
3695*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x1E, 0x06, 0x03, 0x8F, 0xB9, 0xEE, 0x64),
3696*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0xEE, 0x8B, 0x89, 0xA9, 0x70, 0xDB, 0xCE),
3697*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x7B, 0x81, 0xC9, 0x70, 0x8D, 0x62, 0x32),
3698*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0xDA, 0x46, 0xF8, 0xF9, 0x3A, 0xBE, 0x55),
3699*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x9C, 0x7A, 0x97, 0x62, 0xEB, 0xFA, 0x0F),
3700*b0563631STom Van Eyck };
3701*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP384r1_T_31_Y[] = {
3702*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0x03, 0x3D, 0x3C, 0x46, 0x27, 0x9E, 0x65),
3703*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x08, 0x1C, 0xD5, 0x25, 0xAF, 0xE9, 0x40),
3704*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x69, 0xDC, 0x59, 0xF4, 0x8A, 0x7C, 0x1F),
3705*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x9A, 0x7A, 0x99, 0x21, 0x0C, 0x4E, 0xE3),
3706*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xCE, 0x85, 0x5F, 0xAC, 0xAA, 0x82, 0x10),
3707*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x57, 0x69, 0x90, 0x76, 0xF3, 0x53, 0x3F),
3708*b0563631STom Van Eyck };
3709*b0563631STom Van Eyck static const mbedtls_ecp_point brainpoolP384r1_T[32] = {
3710*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(brainpoolP384r1_T_0_X, brainpoolP384r1_T_0_Y),
3711*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_1_X, brainpoolP384r1_T_1_Y),
3712*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_2_X, brainpoolP384r1_T_2_Y),
3713*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_3_X, brainpoolP384r1_T_3_Y),
3714*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_4_X, brainpoolP384r1_T_4_Y),
3715*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_5_X, brainpoolP384r1_T_5_Y),
3716*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_6_X, brainpoolP384r1_T_6_Y),
3717*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_7_X, brainpoolP384r1_T_7_Y),
3718*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_8_X, brainpoolP384r1_T_8_Y),
3719*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_9_X, brainpoolP384r1_T_9_Y),
3720*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_10_X, brainpoolP384r1_T_10_Y),
3721*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_11_X, brainpoolP384r1_T_11_Y),
3722*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_12_X, brainpoolP384r1_T_12_Y),
3723*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_13_X, brainpoolP384r1_T_13_Y),
3724*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_14_X, brainpoolP384r1_T_14_Y),
3725*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_15_X, brainpoolP384r1_T_15_Y),
3726*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_16_X, brainpoolP384r1_T_16_Y),
3727*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_17_X, brainpoolP384r1_T_17_Y),
3728*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_18_X, brainpoolP384r1_T_18_Y),
3729*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_19_X, brainpoolP384r1_T_19_Y),
3730*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_20_X, brainpoolP384r1_T_20_Y),
3731*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_21_X, brainpoolP384r1_T_21_Y),
3732*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_22_X, brainpoolP384r1_T_22_Y),
3733*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_23_X, brainpoolP384r1_T_23_Y),
3734*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_24_X, brainpoolP384r1_T_24_Y),
3735*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_25_X, brainpoolP384r1_T_25_Y),
3736*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_26_X, brainpoolP384r1_T_26_Y),
3737*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_27_X, brainpoolP384r1_T_27_Y),
3738*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_28_X, brainpoolP384r1_T_28_Y),
3739*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_29_X, brainpoolP384r1_T_29_Y),
3740*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_30_X, brainpoolP384r1_T_30_Y),
3741*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_31_X, brainpoolP384r1_T_31_Y),
3742*b0563631STom Van Eyck };
3743*b0563631STom Van Eyck #else
3744*b0563631STom Van Eyck #define brainpoolP384r1_T NULL
3745*b0563631STom Van Eyck #endif
3746*b0563631STom Van Eyck
3747*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
3748*b0563631STom Van Eyck
3749*b0563631STom Van Eyck /*
3750*b0563631STom Van Eyck * Domain parameters for brainpoolP512r1 (RFC 5639 3.7)
3751*b0563631STom Van Eyck */
3752*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
3753*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_p[] = {
3754*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x48, 0x3A, 0x58, 0x56, 0x60, 0xAA, 0x28),
3755*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0xC6, 0x82, 0x2D, 0x2F, 0xFF, 0x81, 0x28),
3756*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x80, 0xA3, 0xE6, 0x2A, 0xA1, 0xCD, 0xAE),
3757*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x68, 0xC6, 0x9B, 0x00, 0x9B, 0x4D, 0x7D),
3758*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6),
3759*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB),
3760*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F),
3761*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA),
3762*b0563631STom Van Eyck };
3763*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_a[] = {
3764*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x94, 0xFC, 0x77, 0x4D, 0xAC, 0xC1, 0xE7),
3765*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xC7, 0xF2, 0x2B, 0xA7, 0x17, 0x11, 0x7F),
3766*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0xC8, 0x9A, 0x8B, 0xC9, 0xF1, 0x2E, 0x0A),
3767*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x3A, 0x25, 0xA8, 0x5A, 0x5D, 0xED, 0x2D),
3768*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x63, 0x98, 0xEA, 0xCA, 0x41, 0x34, 0xA8),
3769*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x16, 0xF9, 0x3D, 0x8D, 0xDD, 0xCB, 0x94),
3770*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x4C, 0x23, 0xAC, 0x45, 0x71, 0x32, 0xE2),
3771*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x3B, 0x60, 0x8B, 0x31, 0xA3, 0x30, 0x78),
3772*b0563631STom Van Eyck };
3773*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_b[] = {
3774*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0xF7, 0x16, 0x80, 0x63, 0xBD, 0x09, 0x28),
3775*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0xE5, 0xBA, 0x5E, 0xB7, 0x50, 0x40, 0x98),
3776*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x3E, 0x08, 0xDC, 0xCA, 0x94, 0xFC, 0x77),
3777*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xAC, 0xC1, 0xE7, 0xB9, 0xC7, 0xF2, 0x2B),
3778*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x17, 0x11, 0x7F, 0xB5, 0xC8, 0x9A, 0x8B),
3779*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xF1, 0x2E, 0x0A, 0xA1, 0x3A, 0x25, 0xA8),
3780*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x5D, 0xED, 0x2D, 0xBC, 0x63, 0x98, 0xEA),
3781*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x41, 0x34, 0xA8, 0x10, 0x16, 0xF9, 0x3D),
3782*b0563631STom Van Eyck };
3783*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_gx[] = {
3784*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xF8, 0xB9, 0xBC, 0x09, 0x22, 0x35, 0x8B),
3785*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x5E, 0x6A, 0x40, 0x47, 0x50, 0x6D, 0x7C),
3786*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x7D, 0xB9, 0x93, 0x7B, 0x68, 0xD1, 0x50),
3787*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xD4, 0xD0, 0xE2, 0x78, 0x1F, 0x3B, 0xFF),
3788*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x09, 0xD0, 0xF4, 0xEE, 0x62, 0x3B, 0xB4),
3789*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x16, 0xD9, 0xB5, 0x70, 0x9F, 0xED, 0x85),
3790*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x6A, 0x4C, 0x9C, 0x2E, 0x32, 0x21, 0x5A),
3791*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0xD9, 0x2E, 0xD8, 0xBD, 0xE4, 0xAE, 0x81),
3792*b0563631STom Van Eyck };
3793*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_gy[] = {
3794*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x08, 0xD8, 0x3A, 0x0F, 0x1E, 0xCD, 0x78),
3795*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x54, 0xF0, 0xA8, 0x2F, 0x2B, 0xCA, 0xD1),
3796*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x63, 0x27, 0x8A, 0xD8, 0x4B, 0xCA, 0x5B),
3797*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x48, 0x5F, 0x4A, 0x49, 0xDE, 0xDC, 0xB2),
3798*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x1F, 0x88, 0x5B, 0xC5, 0x00, 0xA0),
3799*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x7B, 0xA5, 0x24, 0x00, 0xF7, 0x09, 0xF2),
3800*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x22, 0x78, 0xCF, 0xA9, 0xBF, 0xEA, 0xC0),
3801*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x32, 0x63, 0x56, 0x5D, 0x38, 0xDE, 0x7D),
3802*b0563631STom Van Eyck };
3803*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_n[] = {
3804*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x00, 0xA9, 0x9C, 0x82, 0x96, 0x87, 0xB5),
3805*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0xDA, 0x5D, 0x08, 0x81, 0xD3, 0xB1, 0x1D),
3806*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x10, 0xAC, 0x7F, 0x19, 0x61, 0x86, 0x41),
3807*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x26, 0xA9, 0x4C, 0x41, 0x5C, 0x3E, 0x55),
3808*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6),
3809*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB),
3810*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F),
3811*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA),
3812*b0563631STom Van Eyck };
3813*b0563631STom Van Eyck
3814*b0563631STom Van Eyck #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
3815*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_0_X[] = {
3816*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xF8, 0xB9, 0xBC, 0x09, 0x22, 0x35, 0x8B),
3817*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x5E, 0x6A, 0x40, 0x47, 0x50, 0x6D, 0x7C),
3818*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x7D, 0xB9, 0x93, 0x7B, 0x68, 0xD1, 0x50),
3819*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xD4, 0xD0, 0xE2, 0x78, 0x1F, 0x3B, 0xFF),
3820*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x09, 0xD0, 0xF4, 0xEE, 0x62, 0x3B, 0xB4),
3821*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x16, 0xD9, 0xB5, 0x70, 0x9F, 0xED, 0x85),
3822*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x6A, 0x4C, 0x9C, 0x2E, 0x32, 0x21, 0x5A),
3823*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0xD9, 0x2E, 0xD8, 0xBD, 0xE4, 0xAE, 0x81),
3824*b0563631STom Van Eyck };
3825*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_0_Y[] = {
3826*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x08, 0xD8, 0x3A, 0x0F, 0x1E, 0xCD, 0x78),
3827*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x54, 0xF0, 0xA8, 0x2F, 0x2B, 0xCA, 0xD1),
3828*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x63, 0x27, 0x8A, 0xD8, 0x4B, 0xCA, 0x5B),
3829*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x48, 0x5F, 0x4A, 0x49, 0xDE, 0xDC, 0xB2),
3830*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x1F, 0x88, 0x5B, 0xC5, 0x00, 0xA0),
3831*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x7B, 0xA5, 0x24, 0x00, 0xF7, 0x09, 0xF2),
3832*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x22, 0x78, 0xCF, 0xA9, 0xBF, 0xEA, 0xC0),
3833*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x32, 0x63, 0x56, 0x5D, 0x38, 0xDE, 0x7D),
3834*b0563631STom Van Eyck };
3835*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_1_X[] = {
3836*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xE9, 0x6B, 0x8C, 0x6F, 0x9D, 0x88, 0x43),
3837*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x4F, 0x86, 0x96, 0xA7, 0x56, 0xD1, 0x37),
3838*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xAB, 0xFA, 0xEE, 0xA7, 0xF5, 0x0E, 0xA6),
3839*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x40, 0xEF, 0x9E, 0x6D, 0xD6, 0x32, 0x33),
3840*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xED, 0x56, 0x14, 0x57, 0x1A, 0x8D, 0x69),
3841*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xED, 0x4D, 0x3A, 0xFA, 0x71, 0x75, 0x6B),
3842*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xC5, 0x76, 0x1C, 0x14, 0xBE, 0xB5, 0xCD),
3843*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x5A, 0xCB, 0xE7, 0x36, 0x1D, 0x52, 0x1C),
3844*b0563631STom Van Eyck };
3845*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_1_Y[] = {
3846*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x8D, 0x7A, 0xEB, 0xA3, 0x8B, 0xD5, 0xB0),
3847*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xA3, 0x41, 0xF8, 0xAC, 0x9E, 0xAB, 0x74),
3848*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0xE3, 0x65, 0x0D, 0x1C, 0xFE, 0x09, 0x2B),
3849*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0xCA, 0x13, 0x3F, 0xC5, 0xF9, 0x7E, 0xEC),
3850*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x5D, 0x63, 0x28, 0xA6, 0x89, 0xD3, 0x91),
3851*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x95, 0x3F, 0x7A, 0x82, 0xD4, 0x77, 0xE3),
3852*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xBB, 0x92, 0x32, 0x00, 0xF4, 0x66, 0x42),
3853*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x58, 0x31, 0xD1, 0x17, 0x9F, 0x2A, 0x22),
3854*b0563631STom Van Eyck };
3855*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_2_X[] = {
3856*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x36, 0xA9, 0xCD, 0x80, 0xA5, 0x2D, 0x78),
3857*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x44, 0xAB, 0xCE, 0x71, 0xFF, 0x0C, 0x9B),
3858*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x24, 0x58, 0x35, 0x5A, 0x21, 0x32, 0x93),
3859*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0xA6, 0x28, 0xF8, 0x7A, 0x97, 0xAE, 0x8B),
3860*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0xE7, 0x08, 0xFA, 0x47, 0xC9, 0x55, 0x09),
3861*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xAC, 0x2E, 0x84, 0xA4, 0xF5, 0x52, 0xC4),
3862*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x58, 0x05, 0x9D, 0xA7, 0xC8, 0x71, 0xBF),
3863*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x92, 0xB4, 0x92, 0xC1, 0x92, 0xEC, 0x6B),
3864*b0563631STom Van Eyck };
3865*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_2_Y[] = {
3866*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x48, 0x2D, 0x79, 0x5E, 0x58, 0xE5, 0x69),
3867*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x85, 0x26, 0xEC, 0xE9, 0x6E, 0xD4, 0x06),
3868*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x68, 0x26, 0x87, 0x38, 0xA2, 0xD2, 0x0B),
3869*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x17, 0x60, 0xCE, 0x75, 0xF8, 0xA5, 0x6F),
3870*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x51, 0xDB, 0xA9, 0xAE, 0x87, 0xF1, 0x15),
3871*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x49, 0x92, 0x3B, 0x19, 0x96, 0xF5, 0xB0),
3872*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0xD5, 0x52, 0x52, 0x8C, 0xCE, 0xFD, 0xFA),
3873*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x18, 0x0A, 0xE6, 0xF6, 0xAE, 0x08, 0x41),
3874*b0563631STom Van Eyck };
3875*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_3_X[] = {
3876*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x2B, 0xD8, 0x54, 0xCE, 0xB0, 0x57, 0xFE),
3877*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xB0, 0xF8, 0x9E, 0x03, 0x03, 0x3C, 0x5D),
3878*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x0E, 0x29, 0x29, 0x00, 0xF3, 0x70, 0xBF),
3879*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x33, 0x99, 0x0E, 0x00, 0x5D, 0xFE, 0x4B),
3880*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x2D, 0xF2, 0x59, 0x32, 0xCF, 0x03, 0xF4),
3881*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0xC9, 0x72, 0xAE, 0x0C, 0xEF, 0xD1, 0x5B),
3882*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x5A, 0x27, 0xBF, 0x2F, 0x45, 0xF9, 0x51),
3883*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xBE, 0xE5, 0x2C, 0xFF, 0x5B, 0x1E, 0x88),
3884*b0563631STom Van Eyck };
3885*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_3_Y[] = {
3886*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0xAC, 0xBB, 0xD8, 0x83, 0xC2, 0x46, 0xF6),
3887*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xDC, 0xCE, 0x15, 0xB4, 0xEF, 0xCF, 0x46),
3888*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xDB, 0x5E, 0x94, 0x31, 0x0B, 0xB2, 0x7A),
3889*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xB9, 0xE3, 0xE3, 0x11, 0x71, 0x41, 0x1E),
3890*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xE3, 0x01, 0xB7, 0x7D, 0xBC, 0x65, 0xBE),
3891*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x07, 0x65, 0x87, 0xA7, 0xE8, 0x48, 0xE3),
3892*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x48, 0x8F, 0xD4, 0x30, 0x8E, 0xB4, 0x6C),
3893*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xE0, 0x73, 0xBE, 0x1E, 0xBF, 0x56, 0x36),
3894*b0563631STom Van Eyck };
3895*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_4_X[] = {
3896*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x0E, 0x5E, 0x87, 0xC5, 0xAB, 0x0E, 0x3C),
3897*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xF9, 0x5F, 0x80, 0x24, 0x4C, 0x2A, 0xF1),
3898*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0x15, 0x21, 0x54, 0x92, 0x84, 0x8D, 0x6A),
3899*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x8A, 0x47, 0x74, 0xDC, 0x42, 0xB1, 0xF8),
3900*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0xF7, 0x30, 0xFD, 0xC1, 0x9B, 0x0C, 0x5B),
3901*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x6C, 0xCC, 0xDF, 0xC5, 0xE3, 0xA9, 0xD5),
3902*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x67, 0x59, 0x10, 0x5C, 0x51, 0x54, 0x40),
3903*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x37, 0xFB, 0x6E, 0xB0, 0x78, 0x63, 0x8E),
3904*b0563631STom Van Eyck };
3905*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_4_Y[] = {
3906*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0xEF, 0xC4, 0x39, 0x20, 0xF1, 0x46, 0x66),
3907*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x62, 0xAE, 0xFF, 0x10, 0xE4, 0xE2, 0xE9),
3908*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x5C, 0xF5, 0x2E, 0x22, 0x89, 0xE5, 0x82),
3909*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x0C, 0x29, 0xA8, 0x62, 0xAE, 0xDB, 0x65),
3910*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x9E, 0x0F, 0xCA, 0x87, 0x2A, 0x6F, 0x7B),
3911*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xDC, 0x9B, 0x9F, 0x65, 0xD4, 0xAD, 0x27),
3912*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xC3, 0x08, 0x0F, 0xCF, 0x67, 0xE9, 0xF4),
3913*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x5C, 0xD7, 0xFF, 0x41, 0x9C, 0xCB, 0x26),
3914*b0563631STom Van Eyck };
3915*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_5_X[] = {
3916*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x25, 0x05, 0x12, 0xAD, 0x73, 0x63, 0x90),
3917*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x99, 0x07, 0x86, 0x57, 0xE7, 0x94, 0xB1),
3918*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x4B, 0xA5, 0xBF, 0x18, 0xA9, 0xEF, 0x6A),
3919*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x4C, 0xC4, 0x09, 0xF2, 0x2F, 0x0C, 0xAA),
3920*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x3A, 0x04, 0xEA, 0x89, 0x6C, 0x91, 0xB9),
3921*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x6C, 0x3A, 0xE7, 0xA3, 0xEC, 0x24, 0x7B),
3922*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xA1, 0x26, 0x21, 0x04, 0xE3, 0xB9, 0x40),
3923*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0x71, 0x4B, 0x7B, 0xC2, 0x89, 0xCD, 0xA2),
3924*b0563631STom Van Eyck };
3925*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_5_Y[] = {
3926*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xB9, 0xA8, 0x9D, 0xFD, 0x00, 0x3A, 0x1F),
3927*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x41, 0x6C, 0xBB, 0x5A, 0xCA, 0x1F, 0x74),
3928*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xD7, 0xE2, 0x6C, 0x6B, 0xA7, 0x48, 0xC9),
3929*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x19, 0xAD, 0xA7, 0xC1, 0x7E, 0x4F, 0x6E),
3930*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xF7, 0x19, 0x3C, 0x06, 0x74, 0x2C, 0x3A),
3931*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x23, 0x4F, 0x0C, 0x09, 0xB0, 0x80, 0x4A),
3932*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x74, 0x34, 0x08, 0x44, 0x7E, 0xA3, 0xDD),
3933*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xCC, 0x8D, 0x12, 0x6E, 0xE1, 0x3D, 0x0B),
3934*b0563631STom Van Eyck };
3935*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_6_X[] = {
3936*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x18, 0xB1, 0x71, 0x02, 0x93, 0xC2, 0xA4),
3937*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x89, 0x40, 0xE2, 0x1F, 0xE7, 0x5E, 0x68),
3938*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x8E, 0xAE, 0x89, 0x01, 0xD4, 0x0C, 0xEB),
3939*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xDA, 0x58, 0x70, 0x24, 0xF2, 0xE4, 0x5F),
3940*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0xC7, 0x1D, 0xD6, 0x4A, 0x6F, 0x66, 0x4F),
3941*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x1D, 0x7E, 0x4A, 0x2C, 0xCA, 0xEC, 0x3B),
3942*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x06, 0x7F, 0xA8, 0x99, 0xE4, 0xD3, 0x4E),
3943*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x1D, 0x5A, 0xDF, 0x5E, 0x58, 0x36, 0x49),
3944*b0563631STom Van Eyck };
3945*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_6_Y[] = {
3946*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xB9, 0x32, 0x69, 0x1F, 0x72, 0x2A, 0xB3),
3947*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x73, 0xE2, 0x03, 0x39, 0x35, 0xAA, 0xA8),
3948*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x5E, 0x5D, 0x48, 0xEF, 0xAE, 0x30, 0xF5),
3949*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x7F, 0x60, 0x19, 0xAF, 0xEC, 0x9D, 0xFC),
3950*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xD9, 0x19, 0xE4, 0x1B, 0x56, 0x15, 0x5F),
3951*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xD7, 0x33, 0x59, 0x1F, 0x43, 0x59, 0x2C),
3952*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xCE, 0xEE, 0xCA, 0xA4, 0x7F, 0x63, 0xD4),
3953*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x40, 0xC0, 0xF6, 0x19, 0x89, 0x43, 0x20),
3954*b0563631STom Van Eyck };
3955*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_7_X[] = {
3956*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x92, 0xEA, 0x07, 0x65, 0x79, 0x86, 0xD3),
3957*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xB7, 0x13, 0x75, 0xD3, 0xC5, 0x0A, 0xC9),
3958*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x9E, 0xFA, 0xE1, 0x1F, 0x0C, 0xF9, 0x74),
3959*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x8C, 0xED, 0x5C, 0x21, 0xE9, 0x09, 0xDD),
3960*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x4D, 0xD8, 0x18, 0xC4, 0xF6, 0x36, 0x39),
3961*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xC9, 0xAC, 0x5C, 0xFA, 0x69, 0xA4, 0xA0),
3962*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x8C, 0x94, 0x1C, 0x7B, 0x71, 0x36, 0x58),
3963*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xBD, 0x46, 0xCE, 0xB7, 0x1D, 0x9C, 0x5E),
3964*b0563631STom Van Eyck };
3965*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_7_Y[] = {
3966*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xD6, 0x96, 0x4B, 0xA6, 0x47, 0xEB, 0xE5),
3967*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0xF1, 0x5F, 0x15, 0xDE, 0x99, 0x6F, 0x66),
3968*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xBD, 0xE5, 0x04, 0xB8, 0xE6, 0xC0, 0x0B),
3969*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xD3, 0xF0, 0x04, 0x00, 0xE4, 0x05, 0xDB),
3970*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xF3, 0x06, 0xA3, 0x1A, 0xFF, 0xEA, 0x73),
3971*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x32, 0xAA, 0x99, 0x33, 0x09, 0xB6, 0x34),
3972*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xEF, 0xFC, 0x61, 0x10, 0x42, 0x31, 0x94),
3973*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xF1, 0xF4, 0x33, 0xCF, 0x28, 0x90, 0x9C),
3974*b0563631STom Van Eyck };
3975*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_8_X[] = {
3976*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xDE, 0xF9, 0x88, 0x87, 0x7B, 0xEB, 0xC9),
3977*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xB8, 0xDA, 0xFA, 0xDA, 0x3D, 0xA6, 0x17),
3978*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xF0, 0x62, 0x82, 0x53, 0x32, 0x55, 0x03),
3979*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xA5, 0x32, 0x4A, 0x19, 0x11, 0x9C, 0x10),
3980*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xB3, 0x27, 0xE9, 0x75, 0x90, 0x05, 0x2D),
3981*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x1C, 0x90, 0x48, 0x77, 0x01, 0x85, 0x1B),
3982*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xD6, 0x9B, 0x84, 0xA8, 0xD7, 0xC5, 0x28),
3983*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x7A, 0xCB, 0xB3, 0x11, 0x46, 0xD7, 0x99),
3984*b0563631STom Van Eyck };
3985*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_8_Y[] = {
3986*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x23, 0xBF, 0x75, 0x75, 0xA1, 0x95, 0x90),
3987*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x66, 0x5D, 0x34, 0x13, 0xA9, 0x03, 0xBE),
3988*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x80, 0x9D, 0x5F, 0xD2, 0x44, 0xE1, 0x62),
3989*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x5D, 0xBD, 0xA8, 0xBF, 0xB4, 0x25, 0x1F),
3990*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x99, 0x1F, 0x53, 0xF1, 0x57, 0xDB, 0xE7),
3991*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x7C, 0xE5, 0xC5, 0x51, 0x0B, 0x4C, 0x9B),
3992*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0xB0, 0x1A, 0x9C, 0x16, 0xB0, 0x32, 0x1F),
3993*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0xE3, 0xCF, 0xDD, 0x48, 0xB4, 0x7B, 0x33),
3994*b0563631STom Van Eyck };
3995*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_9_X[] = {
3996*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xDD, 0x9E, 0x3C, 0x98, 0x0E, 0x77, 0x65),
3997*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xAB, 0x01, 0xD3, 0x87, 0x74, 0x25, 0x4A),
3998*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0xA3, 0xE3, 0x76, 0x43, 0x87, 0x12, 0xBD),
3999*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0xB1, 0x3B, 0x60, 0x66, 0xEB, 0x98, 0x54),
4000*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x78, 0xC8, 0xD7, 0x4E, 0x75, 0xCA, 0x69),
4001*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xDF, 0x71, 0x19, 0xE7, 0x07, 0x36, 0xB5),
4002*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xC9, 0xA8, 0x5F, 0x91, 0xBF, 0x47, 0xB2),
4003*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x96, 0x58, 0x96, 0x18, 0xB6, 0xFA, 0x01),
4004*b0563631STom Van Eyck };
4005*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_9_Y[] = {
4006*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x2D, 0xA9, 0x9B, 0x86, 0xDB, 0x0C, 0x4C),
4007*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x0B, 0x2D, 0x56, 0x4A, 0xD3, 0x93, 0x8A),
4008*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x15, 0xE2, 0x65, 0x12, 0x86, 0x0E, 0xB2),
4009*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x41, 0x4D, 0xC1, 0xCB, 0xE4, 0xC3, 0xD7),
4010*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x53, 0x10, 0xCA, 0xA3, 0xAC, 0x83, 0x26),
4011*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x01, 0x22, 0x96, 0x10, 0xAD, 0x69, 0xDB),
4012*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x46, 0x4E, 0xD8, 0xEA, 0xD6, 0x9D, 0xF3),
4013*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x2F, 0x7F, 0x62, 0x62, 0x80, 0xD0, 0x14),
4014*b0563631STom Van Eyck };
4015*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_10_X[] = {
4016*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xDA, 0x00, 0x63, 0x09, 0xBD, 0x6A, 0x83),
4017*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xD4, 0x6E, 0x48, 0x05, 0xB7, 0xF7, 0x17),
4018*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x4D, 0xD7, 0x00, 0x4A, 0x15, 0x27, 0x7A),
4019*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x15, 0xAA, 0x37, 0x27, 0x34, 0x18, 0x24),
4020*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x20, 0x2C, 0x84, 0x1B, 0x88, 0xBA, 0x05),
4021*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x09, 0xD6, 0x04, 0xA2, 0x60, 0x84, 0x72),
4022*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x04, 0x94, 0x08, 0xD4, 0xED, 0x47, 0xDB),
4023*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xF3, 0xE4, 0x3E, 0xB9, 0x5B, 0x35, 0x42),
4024*b0563631STom Van Eyck };
4025*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_10_Y[] = {
4026*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0xD8, 0xB6, 0x80, 0xD6, 0xF1, 0x30, 0xDD),
4027*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x14, 0xA6, 0x85, 0xEE, 0xA7, 0xD8, 0x61),
4028*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x49, 0x2A, 0x1E, 0x7C, 0xE9, 0x2D, 0xEC),
4029*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x87, 0x56, 0x91, 0x03, 0x77, 0x4D, 0x55),
4030*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0x52, 0xD4, 0xAA, 0xF7, 0xFA, 0xB0, 0xC5),
4031*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x5D, 0x11, 0x39, 0xB1, 0xE7, 0x76, 0xAD),
4032*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x13, 0xBC, 0x37, 0x5D, 0x74, 0xCD, 0xC2),
4033*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x48, 0x14, 0x23, 0x30, 0xF8, 0x46, 0x37),
4034*b0563631STom Van Eyck };
4035*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_11_X[] = {
4036*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x27, 0xB0, 0xD9, 0xB2, 0x74, 0xB4, 0xC0),
4037*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xA6, 0xB9, 0x6F, 0x9F, 0x64, 0x36, 0x92),
4038*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0x2B, 0x78, 0x40, 0x05, 0x2B, 0x7B, 0xA9),
4039*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x68, 0x3A, 0xB6, 0x4A, 0xE2, 0xDB, 0xB8),
4040*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x33, 0xD7, 0x34, 0x8B, 0x25, 0x45, 0xEF),
4041*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0xCE, 0xA8, 0xC9, 0x01, 0xFB, 0x0E, 0x7B),
4042*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xF9, 0x51, 0x4C, 0x12, 0x9F, 0x60, 0xE4),
4043*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x85, 0xBD, 0x30, 0x37, 0x84, 0x39, 0x44),
4044*b0563631STom Van Eyck };
4045*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_11_Y[] = {
4046*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x33, 0xAF, 0x2E, 0xB8, 0x2E, 0xCC, 0x3C),
4047*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xB1, 0x73, 0x59, 0x4E, 0x0C, 0x09, 0x4A),
4048*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x24, 0x89, 0x81, 0x12, 0xFF, 0xBB, 0x6E),
4049*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x37, 0x1A, 0x66, 0xEE, 0xED, 0xB6, 0x9B),
4050*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xBD, 0x04, 0x20, 0x5D, 0xFB, 0xBF, 0x95),
4051*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xF8, 0x34, 0xA3, 0xFF, 0x45, 0xDE, 0x92),
4052*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x18, 0x73, 0xF1, 0x32, 0x25, 0x58, 0xEB),
4053*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0xC1, 0x14, 0xE3, 0x9E, 0x40, 0x0F, 0x12),
4054*b0563631STom Van Eyck };
4055*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_12_X[] = {
4056*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x07, 0x9D, 0x9C, 0x00, 0xF7, 0x56, 0x19),
4057*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xBA, 0x87, 0xF9, 0x15, 0x0C, 0x66, 0x5D),
4058*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x1F, 0xC1, 0x28, 0xB0, 0x47, 0x0D, 0xF5),
4059*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xCA, 0x27, 0xEE, 0x4B, 0x23, 0x2B, 0x89),
4060*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0xB5, 0x68, 0xC8, 0x17, 0x5D, 0xC3, 0xAA),
4061*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x02, 0x08, 0xEE, 0x20, 0x9D, 0xEA, 0x64),
4062*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x14, 0x50, 0xD4, 0x7D, 0x5F, 0xCF, 0xA0),
4063*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xFA, 0xF8, 0xA7, 0xC6, 0xDC, 0x14, 0x8C),
4064*b0563631STom Van Eyck };
4065*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_12_Y[] = {
4066*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xBD, 0x0A, 0x1A, 0x18, 0x98, 0xDC, 0xB0),
4067*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x63, 0x02, 0xB7, 0xD5, 0x5B, 0x5A, 0xC6),
4068*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xB1, 0xD7, 0x4B, 0x15, 0x39, 0x61, 0x5D),
4069*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x32, 0xE1, 0x9E, 0x70, 0x1B, 0xCE, 0x51),
4070*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0xD8, 0x18, 0x83, 0x52, 0x9B, 0x6D, 0xA2),
4071*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x55, 0x56, 0x19, 0x34, 0xA4, 0xEA, 0xFC),
4072*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0xA9, 0x55, 0x80, 0xE3, 0x15, 0x36, 0x8B),
4073*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x06, 0xC8, 0x1D, 0x17, 0x0D, 0xAD, 0x16),
4074*b0563631STom Van Eyck };
4075*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_13_X[] = {
4076*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0xD6, 0xF0, 0xCC, 0xF3, 0x63, 0x53, 0xD2),
4077*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x5A, 0xDC, 0x46, 0xBD, 0x0D, 0xAD, 0x96),
4078*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x2F, 0x11, 0x60, 0x15, 0x51, 0x4A, 0xEA),
4079*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xE3, 0x93, 0x38, 0xD5, 0x83, 0xAA, 0x0D),
4080*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xA6, 0xCC, 0xB1, 0xFD, 0xBB, 0x1A, 0x0F),
4081*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x54, 0xC8, 0x54, 0x6F, 0x79, 0x1A, 0x59),
4082*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x4A, 0xDA, 0x28, 0x92, 0x97, 0x9D, 0x7F),
4083*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x4B, 0xDB, 0xC7, 0x52, 0xC5, 0x66, 0x34),
4084*b0563631STom Van Eyck };
4085*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_13_Y[] = {
4086*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x7E, 0x92, 0x53, 0x30, 0x93, 0xFD, 0xFF),
4087*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x16, 0x6A, 0xB1, 0x91, 0x0A, 0xB4, 0x52),
4088*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x9D, 0x40, 0x3F, 0xE3, 0xF1, 0x01, 0x46),
4089*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x0E, 0xD8, 0xED, 0x11, 0x8E, 0x4C, 0xED),
4090*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x4A, 0x1B, 0x88, 0xDF, 0x8D, 0x29, 0xE7),
4091*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x23, 0x21, 0x11, 0xAB, 0x77, 0x81, 0x62),
4092*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xAF, 0x11, 0xFA, 0xBA, 0x40, 0x63, 0xE7),
4093*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x6F, 0x8D, 0x80, 0xDF, 0x67, 0xF5, 0x44),
4094*b0563631STom Van Eyck };
4095*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_14_X[] = {
4096*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0x8B, 0xB7, 0x08, 0xF4, 0xD7, 0x2D, 0xA8),
4097*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x2B, 0x30, 0x02, 0x45, 0x71, 0x08, 0x49),
4098*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x3A, 0xCA, 0x50, 0xF6, 0xC2, 0x19, 0x8C),
4099*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xB9, 0x9B, 0x3E, 0x73, 0x95, 0x1D, 0x49),
4100*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x60, 0x59, 0x48, 0xCB, 0xD8, 0xD6, 0xAA),
4101*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xB9, 0x6C, 0x89, 0xAB, 0x99, 0xA8, 0xF8),
4102*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0xA1, 0x8B, 0x4E, 0x06, 0x19, 0xEC, 0x99),
4103*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x95, 0x04, 0xCF, 0xD5, 0x94, 0xB3, 0x02),
4104*b0563631STom Van Eyck };
4105*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_14_Y[] = {
4106*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x35, 0x93, 0x7C, 0xB3, 0xB8, 0x9E, 0x1B),
4107*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x45, 0x5C, 0x7E, 0xBF, 0x75, 0x81, 0x0F),
4108*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xE8, 0x24, 0xDF, 0xEC, 0x2F, 0x7D, 0xB9),
4109*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x8B, 0xD5, 0x6A, 0x9B, 0xA0, 0xE0, 0x4F),
4110*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xE3, 0x27, 0x82, 0xDE, 0xDD, 0xCA, 0x4B),
4111*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x57, 0x56, 0x46, 0x05, 0x06, 0x01, 0x2E),
4112*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x35, 0xA7, 0x47, 0xE2, 0x6B, 0x2C, 0x4F),
4113*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x9D, 0x4C, 0xEC, 0x1F, 0x11, 0x75, 0x2B),
4114*b0563631STom Van Eyck };
4115*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_15_X[] = {
4116*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xAA, 0x41, 0xC1, 0xE9, 0x0E, 0xE9, 0xAA),
4117*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xCF, 0x9C, 0x4B, 0xE8, 0xED, 0x0A, 0x49),
4118*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x73, 0xCA, 0x0C, 0x46, 0x0A, 0x9C, 0xE4),
4119*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xE1, 0x9E, 0xBC, 0xFE, 0x44, 0x63, 0x6D),
4120*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x43, 0x71, 0xEE, 0xF8, 0xC1, 0x8C, 0x5C),
4121*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x4B, 0xF0, 0x69, 0x25, 0xBD, 0x71, 0x1A),
4122*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x9A, 0xFE, 0x82, 0xE7, 0xC1, 0xC1, 0xEE),
4123*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x5A, 0x6E, 0x5E, 0x97, 0x6A, 0x35, 0x8D),
4124*b0563631STom Van Eyck };
4125*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_15_Y[] = {
4126*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x18, 0x6C, 0x7E, 0xB8, 0x9E, 0x57, 0x32),
4127*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xB9, 0xC1, 0xD0, 0xFE, 0x78, 0xFB, 0x32),
4128*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x08, 0xAE, 0x46, 0x34, 0xEA, 0x7A, 0x7F),
4129*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x1C, 0x56, 0xA9, 0x18, 0x37, 0xD4, 0x9E),
4130*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x63, 0xE9, 0x0A, 0xB6, 0x38, 0x3C, 0xC1),
4131*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x4F, 0xA4, 0x6E, 0x85, 0x31, 0x23, 0x52),
4132*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0xAD, 0xC4, 0xC3, 0xB1, 0x4B, 0x1C, 0x82),
4133*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x56, 0x4A, 0x38, 0xB3, 0x6B, 0x6F, 0x2C),
4134*b0563631STom Van Eyck };
4135*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_16_X[] = {
4136*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0xC7, 0x19, 0xDE, 0x21, 0xED, 0x89, 0xD0),
4137*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xBE, 0xA6, 0xAE, 0xEB, 0x9D, 0xA7, 0x2A),
4138*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x0E, 0x13, 0x1E, 0x86, 0x57, 0xC3, 0x3B),
4139*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x4B, 0x30, 0x46, 0x52, 0xC1, 0xEC, 0x52),
4140*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xD5, 0x44, 0x31, 0x96, 0x3B, 0x26, 0x27),
4141*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x68, 0xA8, 0x67, 0x78, 0x39, 0xE8, 0x68),
4142*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x78, 0xB7, 0xDD, 0xF2, 0x58, 0xB6, 0x3D),
4143*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x3C, 0xB3, 0x26, 0xC4, 0x2C, 0x8C, 0xA5),
4144*b0563631STom Van Eyck };
4145*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_16_Y[] = {
4146*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x24, 0xE5, 0x73, 0xEE, 0x9A, 0x02, 0xA9),
4147*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x6A, 0x65, 0x60, 0xF3, 0x62, 0xE3, 0xE9),
4148*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0x07, 0x84, 0xE6, 0x3B, 0x46, 0x65, 0x9F),
4149*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x8F, 0x0C, 0xB0, 0xE1, 0x04, 0x82, 0x9D),
4150*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x13, 0xBF, 0x3D, 0xA0, 0x48, 0xA2, 0x74),
4151*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x26, 0x76, 0x74, 0xAB, 0x0B, 0x29, 0xE8),
4152*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x6E, 0x5F, 0x03, 0x34, 0x7C, 0x38, 0xCE),
4153*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x72, 0xF9, 0x3B, 0x3C, 0xA4, 0xBC, 0x7C),
4154*b0563631STom Van Eyck };
4155*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_17_X[] = {
4156*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xCE, 0x18, 0x80, 0xB8, 0x24, 0x45, 0x81),
4157*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x09, 0x03, 0xB8, 0x06, 0x64, 0xF7, 0xEC),
4158*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x26, 0xB1, 0x10, 0x6D, 0x71, 0x12, 0x2E),
4159*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x12, 0xC6, 0x6E, 0x1E, 0x6A, 0xC3, 0x80),
4160*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xD3, 0x0A, 0xDE, 0xD8, 0x6B, 0x04, 0x5C),
4161*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x87, 0x5B, 0xAE, 0xDB, 0x3C, 0xC0, 0xC5),
4162*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0xF5, 0xF9, 0xC1, 0x9A, 0x89, 0xBB, 0x7E),
4163*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x69, 0x72, 0x8B, 0xAE, 0x32, 0x13, 0x11),
4164*b0563631STom Van Eyck };
4165*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_17_Y[] = {
4166*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x16, 0x07, 0x50, 0xFA, 0x4C, 0xCF, 0xE8),
4167*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x50, 0x21, 0xE9, 0xDE, 0xEC, 0x7E, 0xDF),
4168*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x2F, 0xE8, 0x83, 0x30, 0x0B, 0x65, 0x0E),
4169*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x0B, 0x99, 0xAC, 0xC9, 0xBA, 0x6C, 0x2A),
4170*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x59, 0x5A, 0x0D, 0x7B, 0x9E, 0x08, 0xAD),
4171*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x91, 0xB2, 0xDC, 0x90, 0xCE, 0x67, 0xED),
4172*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x93, 0x60, 0x0C, 0xD7, 0x1F, 0x2F, 0x17),
4173*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x7F, 0x9D, 0x40, 0xF8, 0x78, 0x7A, 0x54),
4174*b0563631STom Van Eyck };
4175*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_18_X[] = {
4176*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x22, 0x95, 0xE8, 0xEF, 0x31, 0x57, 0x35),
4177*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x88, 0x53, 0xFE, 0xAF, 0x7C, 0x47, 0x14),
4178*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xCE, 0xCC, 0x79, 0xE8, 0x9F, 0x8C, 0xC4),
4179*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x16, 0xDD, 0x77, 0x6E, 0x8A, 0x73, 0x97),
4180*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x07, 0x97, 0x21, 0x3B, 0xF8, 0x5F, 0xA8),
4181*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xB5, 0xD2, 0x81, 0x84, 0xF0, 0xE7, 0x9F),
4182*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x8F, 0x75, 0x09, 0x6A, 0x0E, 0x53, 0xAD),
4183*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x4F, 0x70, 0x97, 0xC7, 0xAC, 0x7D, 0x3F),
4184*b0563631STom Van Eyck };
4185*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_18_Y[] = {
4186*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x3C, 0x6A, 0xB4, 0x10, 0xA9, 0xC8, 0x1D),
4187*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xC5, 0xD6, 0x69, 0x16, 0xB8, 0xAC, 0x25),
4188*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x44, 0xDC, 0xEB, 0x48, 0x54, 0x5D, 0x5F),
4189*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x48, 0x9B, 0xD7, 0x72, 0x69, 0xA4, 0x8A),
4190*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x0D, 0x36, 0x9A, 0x66, 0x0B, 0xEC, 0x24),
4191*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xC6, 0xD4, 0xB6, 0x60, 0xE5, 0xC3, 0x3A),
4192*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x29, 0x42, 0xE0, 0x9D, 0xFD, 0x7C, 0x3E),
4193*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x10, 0xBA, 0x55, 0xBC, 0x3B, 0x38, 0x5D),
4194*b0563631STom Van Eyck };
4195*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_19_X[] = {
4196*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x66, 0xFA, 0x05, 0x73, 0x03, 0x1B, 0x69),
4197*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xA4, 0x66, 0x12, 0x96, 0x7B, 0x02, 0x4C),
4198*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0xB5, 0xDE, 0x6D, 0x98, 0xD1, 0xD5, 0xA8),
4199*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xF5, 0x44, 0xB8, 0x8E, 0xF6, 0x8C, 0x05),
4200*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x15, 0x2B, 0x72, 0xBC, 0x49, 0xE5, 0xDF),
4201*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x44, 0xD7, 0xDF, 0x8F, 0xEB, 0x8D, 0x80),
4202*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x64, 0x88, 0xAA, 0xB7, 0xE4, 0x70, 0x1D),
4203*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x14, 0xBB, 0xE9, 0x9B, 0xB9, 0x65, 0x5D),
4204*b0563631STom Van Eyck };
4205*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_19_Y[] = {
4206*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x8E, 0x88, 0xF5, 0xF1, 0xC1, 0x89, 0xA2),
4207*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x30, 0x53, 0xE6, 0xFB, 0x2D, 0x82, 0xB4),
4208*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xE4, 0xFF, 0xBA, 0x31, 0x79, 0xAB, 0xC2),
4209*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x09, 0xF7, 0xB7, 0x09, 0x78, 0x4C, 0x90),
4210*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xAE, 0xC2, 0x44, 0xDC, 0x17, 0x78, 0x47),
4211*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xD4, 0x17, 0x43, 0x19, 0x74, 0x9E, 0x23),
4212*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x64, 0x3B, 0x73, 0xA2, 0x99, 0x27, 0x76),
4213*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x74, 0x36, 0x5F, 0xD3, 0x14, 0xB1, 0x31),
4214*b0563631STom Van Eyck };
4215*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_20_X[] = {
4216*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x07, 0xAB, 0xFD, 0x9B, 0x03, 0xC5, 0xD5),
4217*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xBE, 0xB0, 0x1D, 0xF2, 0x0C, 0x73, 0x73),
4218*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xE7, 0x7B, 0x87, 0xD3, 0x34, 0xFD, 0xE2),
4219*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x25, 0x3D, 0xC7, 0x36, 0x83, 0x53, 0xDC),
4220*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x7C, 0xCF, 0x63, 0x55, 0x12, 0x11, 0xB0),
4221*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x34, 0x4D, 0x27, 0x92, 0xAC, 0x18, 0x16),
4222*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x42, 0x61, 0x9D, 0x2E, 0xFF, 0x13, 0x16),
4223*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0xDE, 0x92, 0x65, 0x57, 0x0D, 0xBC, 0x0A),
4224*b0563631STom Van Eyck };
4225*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_20_Y[] = {
4226*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x7B, 0x6E, 0xC6, 0x2A, 0x21, 0x74, 0x0A),
4227*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xA7, 0x53, 0x4D, 0x29, 0x36, 0xEF, 0xE5),
4228*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0xD6, 0x41, 0xC7, 0x99, 0xAD, 0x50, 0x53),
4229*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xAC, 0x41, 0x9F, 0xFB, 0x4C, 0x86, 0xF1),
4230*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xBB, 0xE6, 0x25, 0x28, 0xAA, 0xEB, 0x1E),
4231*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x04, 0xA2, 0xC3, 0xAA, 0x08, 0x8A, 0xCC),
4232*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x2B, 0x5B, 0xE2, 0x8D, 0x76, 0xEA, 0x34),
4233*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x33, 0xD2, 0x21, 0x4D, 0x62, 0xE3, 0x8E),
4234*b0563631STom Van Eyck };
4235*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_21_X[] = {
4236*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x06, 0x8B, 0x2B, 0xC2, 0xC4, 0xB1, 0xD2),
4237*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xF5, 0xA1, 0xC0, 0x03, 0x6A, 0x29, 0x12),
4238*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xA9, 0xEF, 0x55, 0xB6, 0x1A, 0x9F, 0x6B),
4239*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x54, 0x32, 0xBE, 0x06, 0x43, 0xB5, 0xFD),
4240*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xD6, 0xD9, 0x20, 0x89, 0xBE, 0xD4, 0x1B),
4241*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x26, 0x95, 0x10, 0xCE, 0xB4, 0x88, 0x79),
4242*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xA6, 0x27, 0xAC, 0x32, 0xBA, 0xBD, 0xC7),
4243*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xA6, 0xAE, 0x9C, 0x7B, 0xBE, 0xA1, 0x63),
4244*b0563631STom Van Eyck };
4245*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_21_Y[] = {
4246*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xCD, 0x4D, 0x3D, 0xDF, 0x96, 0xBB, 0x7D),
4247*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0xA7, 0x11, 0x06, 0xCC, 0x0E, 0x31, 0x81),
4248*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0xE4, 0xF4, 0xAD, 0x7B, 0x5F, 0xF1, 0xEF),
4249*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x54, 0xBE, 0xF4, 0x8A, 0x03, 0x47, 0xDF),
4250*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x53, 0x00, 0x7F, 0xB0, 0x8A, 0x68, 0xA6),
4251*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x16, 0xB1, 0x73, 0x6F, 0x5B, 0x0E, 0xC3),
4252*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x32, 0xE3, 0x43, 0x64, 0x75, 0xFB, 0xFB),
4253*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x18, 0x55, 0x8A, 0x4E, 0x6E, 0x35, 0x54),
4254*b0563631STom Van Eyck };
4255*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_22_X[] = {
4256*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x97, 0x15, 0x1E, 0xCB, 0xF2, 0x9C, 0xA5),
4257*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xD1, 0xBB, 0xF3, 0x70, 0xAD, 0x13, 0xAD),
4258*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x96, 0xA4, 0xC5, 0x5E, 0xDA, 0xD5, 0x57),
4259*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x81, 0xE9, 0x65, 0x66, 0x76, 0x47, 0x45),
4260*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x35, 0x87, 0x06, 0x73, 0xCF, 0x34, 0xD2),
4261*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x81, 0x15, 0x42, 0xA2, 0x79, 0x5B, 0x42),
4262*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xA2, 0x7D, 0x09, 0x14, 0x64, 0xC6, 0xAE),
4263*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x6D, 0xC4, 0xED, 0xF1, 0xD6, 0xE9, 0x24),
4264*b0563631STom Van Eyck };
4265*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_22_Y[] = {
4266*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xD5, 0xBB, 0x25, 0xA3, 0xDD, 0xA3, 0x88),
4267*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xF2, 0x68, 0x67, 0x39, 0x8F, 0x73, 0x93),
4268*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x76, 0x28, 0x89, 0xAD, 0x32, 0xE0, 0xDF),
4269*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x90, 0xCC, 0x57, 0x58, 0xAA, 0xC9, 0x75),
4270*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xD7, 0x43, 0xD2, 0xCE, 0x5E, 0xA0, 0x08),
4271*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xB0, 0xB8, 0xA4, 0x9E, 0x96, 0x26, 0x86),
4272*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x61, 0x1D, 0xF3, 0x65, 0x5E, 0x60, 0xCA),
4273*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x1E, 0x65, 0xED, 0xCF, 0x07, 0x60, 0x20),
4274*b0563631STom Van Eyck };
4275*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_23_X[] = {
4276*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x30, 0x17, 0x8A, 0x91, 0x88, 0x0A, 0xA4),
4277*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x7D, 0x18, 0xA4, 0xAC, 0x59, 0xFC, 0x5F),
4278*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x31, 0x8B, 0x25, 0x65, 0x39, 0x9A, 0xDC),
4279*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x16, 0x4B, 0x68, 0xBA, 0x59, 0x13, 0x2F),
4280*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xFD, 0xD3, 0xC5, 0x56, 0xC9, 0x8C, 0x5E),
4281*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xC6, 0x9F, 0xF4, 0xE6, 0xF7, 0xB4, 0x01),
4282*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x7C, 0x03, 0x00, 0x26, 0x9F, 0xD8, 0x7B),
4283*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x1D, 0x6E, 0x00, 0xB9, 0x00, 0x6E, 0x93),
4284*b0563631STom Van Eyck };
4285*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_23_Y[] = {
4286*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x63, 0xDA, 0x03, 0x2B, 0xD5, 0x0B, 0xFE),
4287*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xFC, 0xE2, 0xC8, 0x47, 0xF0, 0xAE, 0xF2),
4288*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x4C, 0xF7, 0x50, 0x0C, 0x48, 0x06, 0x2A),
4289*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x2B, 0x32, 0x98, 0x0E, 0x7E, 0x61, 0x41),
4290*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x02, 0x27, 0xFE, 0x75, 0x86, 0xDF, 0x24),
4291*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x30, 0xB1, 0x22, 0x32, 0x1B, 0xFE, 0x24),
4292*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x27, 0xF7, 0x78, 0x6F, 0xD7, 0xFD, 0xE4),
4293*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x78, 0xCC, 0xEA, 0xC0, 0x50, 0x24, 0x44),
4294*b0563631STom Van Eyck };
4295*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_24_X[] = {
4296*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x2B, 0x4F, 0x7F, 0x58, 0xE6, 0xC2, 0x70),
4297*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x43, 0xD5, 0xA7, 0x35, 0x3C, 0x80, 0xB8),
4298*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x6D, 0x4B, 0x12, 0x00, 0x7B, 0xE6, 0xA6),
4299*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x15, 0xBD, 0xD0, 0x9B, 0xCA, 0xAA, 0x81),
4300*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xCE, 0x9C, 0xE3, 0x8B, 0x60, 0x7A, 0x53),
4301*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xDA, 0x4B, 0x03, 0xA7, 0x8D, 0x43, 0x22),
4302*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xAF, 0x00, 0x2B, 0x32, 0xF0, 0x22, 0x68),
4303*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xD9, 0x99, 0x99, 0xBE, 0x43, 0x99, 0x3E),
4304*b0563631STom Van Eyck };
4305*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_24_Y[] = {
4306*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x71, 0x41, 0xF4, 0xB5, 0xFD, 0xDD, 0x36),
4307*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xE2, 0x20, 0x4C, 0xD1, 0x2E, 0x1F, 0x06),
4308*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x43, 0x48, 0x76, 0x8A, 0x49, 0xAC, 0x87),
4309*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x1A, 0x55, 0xA8, 0xA3, 0xD4, 0x57, 0x75),
4310*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xA6, 0x84, 0x39, 0xC9, 0x13, 0xBB, 0x60),
4311*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0xFA, 0xA9, 0x70, 0xDE, 0x83, 0xDD, 0xC9),
4312*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0xC9, 0xD9, 0x3E, 0x44, 0x91, 0x68, 0x7B),
4313*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x9F, 0x85, 0x6D, 0xF7, 0x54, 0x36, 0x82),
4314*b0563631STom Van Eyck };
4315*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_25_X[] = {
4316*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x6B, 0xA6, 0xA3, 0xE5, 0xD4, 0x46, 0xDB),
4317*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x3E, 0xDC, 0x84, 0x7C, 0x7B, 0x24, 0x34),
4318*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xED, 0x7F, 0x86, 0x07, 0x6C, 0x57, 0xCA),
4319*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x06, 0xFE, 0x52, 0x12, 0x79, 0x69, 0x56),
4320*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0xD1, 0x44, 0x5F, 0x21, 0x3A, 0xC3, 0x84),
4321*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xD9, 0x4A, 0xC0, 0x75, 0xAB, 0x17, 0xAC),
4322*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x81, 0x94, 0xB6, 0x80, 0x6B, 0x6F, 0xC3),
4323*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xBE, 0x8E, 0xA5, 0xAA, 0xBC, 0x1E, 0x3E),
4324*b0563631STom Van Eyck };
4325*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_25_Y[] = {
4326*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0xC7, 0x85, 0xA6, 0x59, 0x9B, 0xB1, 0x52),
4327*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xCE, 0x40, 0xD1, 0xFB, 0xDF, 0x94, 0xF7),
4328*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xB8, 0x5E, 0xBF, 0x45, 0xA8, 0x2D, 0x2D),
4329*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x9C, 0x06, 0x1B, 0xA9, 0x57, 0xB9, 0x79),
4330*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xE9, 0xCE, 0xA2, 0xD3, 0x74, 0xA1, 0x3C),
4331*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x5F, 0x34, 0x78, 0xDB, 0xAE, 0x3A, 0x14),
4332*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x32, 0x84, 0x3E, 0x68, 0x6A, 0x43, 0x0F),
4333*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xBC, 0x39, 0x36, 0xA4, 0xC5, 0xBB, 0x11),
4334*b0563631STom Van Eyck };
4335*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_26_X[] = {
4336*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x07, 0xA2, 0xB5, 0xC9, 0x0F, 0x4D, 0x0F),
4337*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x1D, 0x67, 0xE6, 0xF1, 0x46, 0xEB, 0x71),
4338*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x41, 0x23, 0x95, 0xE7, 0xE0, 0x10, 0xDD),
4339*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x69, 0xFE, 0x68, 0x8C, 0xC6, 0x5F, 0xB6),
4340*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xB9, 0x2B, 0x3D, 0xD2, 0x4F, 0xD8, 0x1A),
4341*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x09, 0xF5, 0x5F, 0xCF, 0xF6, 0x91, 0x57),
4342*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x15, 0x42, 0x6B, 0x6D, 0xB5, 0xF3, 0xB6),
4343*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x56, 0x9D, 0xC5, 0xFF, 0xCA, 0x13, 0x9B),
4344*b0563631STom Van Eyck };
4345*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_26_Y[] = {
4346*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x38, 0xE6, 0x23, 0x63, 0x48, 0x3C, 0xCA),
4347*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x68, 0x3C, 0xD1, 0x3B, 0xE9, 0x3B, 0x82),
4348*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x08, 0x54, 0x49, 0xD1, 0x46, 0x45, 0x13),
4349*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x70, 0x52, 0x6E, 0x79, 0xC4, 0x5E, 0x95),
4350*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xDF, 0xE8, 0x5A, 0x32, 0x81, 0xDA, 0xD3),
4351*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x2D, 0x94, 0x5B, 0xB5, 0x35, 0x9F, 0x0A),
4352*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x12, 0x8D, 0xC3, 0x36, 0x36, 0xB2, 0x2A),
4353*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x2F, 0x22, 0x38, 0x5B, 0x18, 0x4C, 0x35),
4354*b0563631STom Van Eyck };
4355*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_27_X[] = {
4356*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xC1, 0x22, 0x0E, 0xF0, 0x73, 0x11, 0x05),
4357*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xAE, 0xA4, 0x56, 0x18, 0x61, 0x66, 0x12),
4358*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xFB, 0x72, 0x08, 0x84, 0x38, 0x51, 0xB0),
4359*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x86, 0xA8, 0xB9, 0x31, 0x99, 0x29, 0xC3),
4360*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xFB, 0xC3, 0x42, 0xB3, 0xC7, 0x6F, 0x3A),
4361*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xF8, 0xE1, 0x09, 0xBE, 0x75, 0xB0, 0x22),
4362*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x7D, 0xFF, 0xF4, 0x99, 0xFC, 0x13, 0xAB),
4363*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x1B, 0x84, 0x81, 0x42, 0x22, 0xC6, 0x3D),
4364*b0563631STom Van Eyck };
4365*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_27_Y[] = {
4366*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xE0, 0x37, 0xA4, 0xA0, 0x2F, 0x38, 0x7F),
4367*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x3D, 0xB7, 0x40, 0x2F, 0x39, 0x3C, 0x7A),
4368*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0x3B, 0x8A, 0x51, 0xAE, 0x40, 0x49, 0x7A),
4369*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x20, 0x9F, 0xDD, 0xA9, 0xD0, 0x77, 0xC7),
4370*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0x1D, 0x64, 0xDA, 0xA0, 0x53, 0xC7, 0x7D),
4371*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x7B, 0x66, 0x55, 0x94, 0xD1, 0x51, 0x44),
4372*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xA9, 0xB5, 0x5B, 0x38, 0x35, 0x40, 0xC0),
4373*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xC9, 0x0F, 0xF0, 0x73, 0x79, 0x43, 0x61),
4374*b0563631STom Van Eyck };
4375*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_28_X[] = {
4376*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x47, 0x45, 0x69, 0x80, 0x72, 0x72, 0x42),
4377*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x11, 0x99, 0x59, 0xDB, 0x48, 0x80, 0x39),
4378*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x6E, 0x3D, 0xFC, 0x37, 0x15, 0xF4, 0xBF),
4379*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xBB, 0x5B, 0xA6, 0x35, 0x8D, 0x28, 0x20),
4380*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x1A, 0x3B, 0x2C, 0x8F, 0xD3, 0xAA, 0x2D),
4381*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x1C, 0x1A, 0xF8, 0x02, 0xD9, 0x7B, 0x41),
4382*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x69, 0xAC, 0xF8, 0x54, 0x31, 0x14, 0xA1),
4383*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x8A, 0xE6, 0xDE, 0x58, 0xB9, 0xC4, 0x7A),
4384*b0563631STom Van Eyck };
4385*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_28_Y[] = {
4386*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x83, 0x52, 0xFE, 0xF9, 0x7B, 0xE9, 0x1F),
4387*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xA2, 0x55, 0x46, 0x15, 0x49, 0xC1, 0x3A),
4388*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xBC, 0x5C, 0x91, 0xBD, 0xB9, 0x9C, 0xF4),
4389*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xFD, 0xB1, 0x4E, 0x5F, 0x74, 0xEE, 0x53),
4390*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x8B, 0xD8, 0x8B, 0x17, 0x73, 0x1B, 0x96),
4391*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x92, 0xD7, 0x67, 0x06, 0xAD, 0x25, 0xCD),
4392*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x0F, 0x80, 0x24, 0xE2, 0x27, 0x5F, 0x8B),
4393*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x1C, 0xCE, 0xD0, 0x67, 0xCA, 0xD4, 0x0B),
4394*b0563631STom Van Eyck };
4395*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_29_X[] = {
4396*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0xF1, 0xDD, 0x33, 0x66, 0xF9, 0x05, 0xD6),
4397*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xE5, 0x6B, 0x79, 0xBD, 0x48, 0x42, 0xAA),
4398*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x14, 0x52, 0xE3, 0x53, 0xB4, 0x50, 0xD4),
4399*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x84, 0x6C, 0xCF, 0xDA, 0xB2, 0x20, 0x0A),
4400*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xD6, 0x1A, 0xE5, 0xE2, 0x29, 0x70, 0xCE),
4401*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x61, 0xFE, 0xBB, 0x21, 0x82, 0xD1, 0xFE),
4402*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0xF0, 0x9C, 0x8B, 0x1A, 0x42, 0x30, 0x06),
4403*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0xD6, 0x49, 0x81, 0x92, 0xF1, 0xD0, 0x90),
4404*b0563631STom Van Eyck };
4405*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_29_Y[] = {
4406*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x91, 0x93, 0x6A, 0xA6, 0x22, 0xE9, 0xD6),
4407*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0xDC, 0xC3, 0x69, 0x11, 0x95, 0x7D, 0xEC),
4408*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xA3, 0x9D, 0x87, 0x5E, 0x64, 0x41, 0xA2),
4409*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x87, 0x5A, 0x15, 0xBD, 0x6E, 0x3C, 0x8D),
4410*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x8D, 0x50, 0xCC, 0xCF, 0xB7, 0x8F, 0x0B),
4411*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x65, 0xCD, 0x31, 0x30, 0xF1, 0x68, 0x13),
4412*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x5C, 0x66, 0x67, 0x92, 0x30, 0x57, 0x95),
4413*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x9B, 0x01, 0x3D, 0x20, 0x8B, 0xD1, 0x0D),
4414*b0563631STom Van Eyck };
4415*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_30_X[] = {
4416*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0xC0, 0xE6, 0x4F, 0xDE, 0x62, 0xAB, 0xB3),
4417*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x48, 0xB3, 0x1C, 0x0F, 0x16, 0x93, 0x45),
4418*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x63, 0xBD, 0x1F, 0x16, 0x50, 0x56, 0x98),
4419*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x06, 0xBC, 0xE9, 0x27, 0x1C, 0x9A, 0x7B),
4420*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xFE, 0x21, 0xC5, 0x39, 0x55, 0xE1, 0xFD),
4421*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xA8, 0xD0, 0x96, 0x0E, 0xB5, 0xB2, 0x84),
4422*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xE7, 0x4B, 0xF3, 0x11, 0x0C, 0xC9, 0x5B),
4423*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x3A, 0xC4, 0x87, 0x71, 0xEE, 0xFA, 0x18),
4424*b0563631STom Van Eyck };
4425*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_30_Y[] = {
4426*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x77, 0xEE, 0x81, 0x5E, 0x96, 0xEA, 0x4B),
4427*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xDF, 0xA9, 0xF4, 0x4F, 0x7C, 0xB2, 0x43),
4428*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0xD4, 0xDF, 0x35, 0x63, 0x47, 0x25, 0x8A),
4429*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x3D, 0xFF, 0xA4, 0x02, 0xC3, 0x95, 0x11),
4430*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x10, 0x78, 0xD1, 0x2B, 0xB7, 0xBE, 0x0E),
4431*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xE9, 0x57, 0xF9, 0xE0, 0xD8, 0xFC, 0xBC),
4432*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0xC4, 0x01, 0xD6, 0xB4, 0xE7, 0x78, 0xE2),
4433*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x6C, 0xB9, 0x13, 0xA4, 0xE8, 0x6D, 0x6F),
4434*b0563631STom Van Eyck };
4435*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_31_X[] = {
4436*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xB0, 0xC9, 0xCD, 0xBF, 0xA2, 0x1E, 0x63),
4437*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x4F, 0x86, 0x22, 0x9B, 0xEA, 0xE8, 0xBB),
4438*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x46, 0xDF, 0x43, 0xB9, 0x82, 0x2D, 0x0A),
4439*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x32, 0xF1, 0x4E, 0x95, 0x41, 0xAE, 0x8E),
4440*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x93, 0x26, 0xFC, 0xD3, 0x90, 0xDC, 0xEB),
4441*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x05, 0x45, 0xCA, 0xF9, 0x5A, 0x89, 0x93),
4442*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x82, 0x63, 0x4E, 0x55, 0x1D, 0x3A, 0x08),
4443*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x69, 0x52, 0x49, 0xE9, 0xED, 0x57, 0x34),
4444*b0563631STom Van Eyck };
4445*b0563631STom Van Eyck static const mbedtls_mpi_uint brainpoolP512r1_T_31_Y[] = {
4446*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x64, 0xE9, 0xAC, 0x4C, 0x4A, 0xEA, 0x25),
4447*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xE9, 0x0B, 0x99, 0xE7, 0xF9, 0xA9, 0x2C),
4448*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x0C, 0xC1, 0xF4, 0x8D, 0x07, 0xB6, 0xB1),
4449*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x68, 0xFA, 0x35, 0xE4, 0x9E, 0xAE, 0xD9),
4450*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x2D, 0x1A, 0x13, 0x8E, 0x02, 0xE2, 0x63),
4451*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x38, 0x28, 0x86, 0x46, 0x7B, 0x3A, 0xE1),
4452*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x4C, 0x64, 0x59, 0x0A, 0xF9, 0x02, 0xC4),
4453*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x4F, 0x23, 0xA2, 0xC3, 0xD5, 0xEF, 0x42),
4454*b0563631STom Van Eyck };
4455*b0563631STom Van Eyck static const mbedtls_ecp_point brainpoolP512r1_T[32] = {
4456*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z1(brainpoolP512r1_T_0_X, brainpoolP512r1_T_0_Y),
4457*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_1_X, brainpoolP512r1_T_1_Y),
4458*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_2_X, brainpoolP512r1_T_2_Y),
4459*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_3_X, brainpoolP512r1_T_3_Y),
4460*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_4_X, brainpoolP512r1_T_4_Y),
4461*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_5_X, brainpoolP512r1_T_5_Y),
4462*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_6_X, brainpoolP512r1_T_6_Y),
4463*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_7_X, brainpoolP512r1_T_7_Y),
4464*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_8_X, brainpoolP512r1_T_8_Y),
4465*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_9_X, brainpoolP512r1_T_9_Y),
4466*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_10_X, brainpoolP512r1_T_10_Y),
4467*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_11_X, brainpoolP512r1_T_11_Y),
4468*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_12_X, brainpoolP512r1_T_12_Y),
4469*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_13_X, brainpoolP512r1_T_13_Y),
4470*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_14_X, brainpoolP512r1_T_14_Y),
4471*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_15_X, brainpoolP512r1_T_15_Y),
4472*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_16_X, brainpoolP512r1_T_16_Y),
4473*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_17_X, brainpoolP512r1_T_17_Y),
4474*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_18_X, brainpoolP512r1_T_18_Y),
4475*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_19_X, brainpoolP512r1_T_19_Y),
4476*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_20_X, brainpoolP512r1_T_20_Y),
4477*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_21_X, brainpoolP512r1_T_21_Y),
4478*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_22_X, brainpoolP512r1_T_22_Y),
4479*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_23_X, brainpoolP512r1_T_23_Y),
4480*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_24_X, brainpoolP512r1_T_24_Y),
4481*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_25_X, brainpoolP512r1_T_25_Y),
4482*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_26_X, brainpoolP512r1_T_26_Y),
4483*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_27_X, brainpoolP512r1_T_27_Y),
4484*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_28_X, brainpoolP512r1_T_28_Y),
4485*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_29_X, brainpoolP512r1_T_29_Y),
4486*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_30_X, brainpoolP512r1_T_30_Y),
4487*b0563631STom Van Eyck ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_31_X, brainpoolP512r1_T_31_Y),
4488*b0563631STom Van Eyck };
4489*b0563631STom Van Eyck #else
4490*b0563631STom Van Eyck #define brainpoolP512r1_T NULL
4491*b0563631STom Van Eyck #endif
4492*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
4493*b0563631STom Van Eyck
4494*b0563631STom Van Eyck
4495*b0563631STom Van Eyck #if defined(ECP_LOAD_GROUP) || defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) || \
4496*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4497*b0563631STom Van Eyck /*
4498*b0563631STom Van Eyck * Create an MPI from embedded constants
4499*b0563631STom Van Eyck * (assumes len is an exact multiple of sizeof(mbedtls_mpi_uint) and
4500*b0563631STom Van Eyck * len < 1048576)
4501*b0563631STom Van Eyck */
ecp_mpi_load(mbedtls_mpi * X,const mbedtls_mpi_uint * p,size_t len)4502*b0563631STom Van Eyck static inline void ecp_mpi_load(mbedtls_mpi *X, const mbedtls_mpi_uint *p, size_t len)
4503*b0563631STom Van Eyck {
4504*b0563631STom Van Eyck X->s = 1;
4505*b0563631STom Van Eyck X->n = (unsigned short) (len / sizeof(mbedtls_mpi_uint));
4506*b0563631STom Van Eyck X->p = (mbedtls_mpi_uint *) p;
4507*b0563631STom Van Eyck }
4508*b0563631STom Van Eyck #endif
4509*b0563631STom Van Eyck
4510*b0563631STom Van Eyck #if defined(ECP_LOAD_GROUP)
4511*b0563631STom Van Eyck /*
4512*b0563631STom Van Eyck * Set an MPI to static value 1
4513*b0563631STom Van Eyck */
ecp_mpi_set1(mbedtls_mpi * X)4514*b0563631STom Van Eyck static inline void ecp_mpi_set1(mbedtls_mpi *X)
4515*b0563631STom Van Eyck {
4516*b0563631STom Van Eyck X->s = 1;
4517*b0563631STom Van Eyck X->n = 1;
4518*b0563631STom Van Eyck X->p = mpi_one;
4519*b0563631STom Van Eyck }
4520*b0563631STom Van Eyck
4521*b0563631STom Van Eyck /*
4522*b0563631STom Van Eyck * Make group available from embedded constants
4523*b0563631STom Van Eyck */
ecp_group_load(mbedtls_ecp_group * grp,const mbedtls_mpi_uint * p,size_t plen,const mbedtls_mpi_uint * a,size_t alen,const mbedtls_mpi_uint * b,size_t blen,const mbedtls_mpi_uint * gx,size_t gxlen,const mbedtls_mpi_uint * gy,size_t gylen,const mbedtls_mpi_uint * n,size_t nlen,const mbedtls_ecp_point * T)4524*b0563631STom Van Eyck static int ecp_group_load(mbedtls_ecp_group *grp,
4525*b0563631STom Van Eyck const mbedtls_mpi_uint *p, size_t plen,
4526*b0563631STom Van Eyck const mbedtls_mpi_uint *a, size_t alen,
4527*b0563631STom Van Eyck const mbedtls_mpi_uint *b, size_t blen,
4528*b0563631STom Van Eyck const mbedtls_mpi_uint *gx, size_t gxlen,
4529*b0563631STom Van Eyck const mbedtls_mpi_uint *gy, size_t gylen,
4530*b0563631STom Van Eyck const mbedtls_mpi_uint *n, size_t nlen,
4531*b0563631STom Van Eyck const mbedtls_ecp_point *T)
4532*b0563631STom Van Eyck {
4533*b0563631STom Van Eyck ecp_mpi_load(&grp->P, p, plen);
4534*b0563631STom Van Eyck if (a != NULL) {
4535*b0563631STom Van Eyck ecp_mpi_load(&grp->A, a, alen);
4536*b0563631STom Van Eyck }
4537*b0563631STom Van Eyck ecp_mpi_load(&grp->B, b, blen);
4538*b0563631STom Van Eyck ecp_mpi_load(&grp->N, n, nlen);
4539*b0563631STom Van Eyck
4540*b0563631STom Van Eyck ecp_mpi_load(&grp->G.X, gx, gxlen);
4541*b0563631STom Van Eyck ecp_mpi_load(&grp->G.Y, gy, gylen);
4542*b0563631STom Van Eyck ecp_mpi_set1(&grp->G.Z);
4543*b0563631STom Van Eyck
4544*b0563631STom Van Eyck grp->pbits = mbedtls_mpi_bitlen(&grp->P);
4545*b0563631STom Van Eyck grp->nbits = mbedtls_mpi_bitlen(&grp->N);
4546*b0563631STom Van Eyck
4547*b0563631STom Van Eyck grp->h = 1;
4548*b0563631STom Van Eyck
4549*b0563631STom Van Eyck grp->T = (mbedtls_ecp_point *) T;
4550*b0563631STom Van Eyck /*
4551*b0563631STom Van Eyck * Set T_size to 0 to prevent T free by mbedtls_ecp_group_free.
4552*b0563631STom Van Eyck */
4553*b0563631STom Van Eyck grp->T_size = 0;
4554*b0563631STom Van Eyck
4555*b0563631STom Van Eyck return 0;
4556*b0563631STom Van Eyck }
4557*b0563631STom Van Eyck #endif /* ECP_LOAD_GROUP */
4558*b0563631STom Van Eyck
4559*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_NIST_OPTIM)
4560*b0563631STom Van Eyck /* Forward declarations */
4561*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
4562*b0563631STom Van Eyck static int ecp_mod_p192(mbedtls_mpi *);
4563*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4564*b0563631STom Van Eyck int mbedtls_ecp_mod_p192_raw(mbedtls_mpi_uint *Np, size_t Nn);
4565*b0563631STom Van Eyck #endif
4566*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
4567*b0563631STom Van Eyck static int ecp_mod_p224(mbedtls_mpi *);
4568*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4569*b0563631STom Van Eyck int mbedtls_ecp_mod_p224_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4570*b0563631STom Van Eyck #endif
4571*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
4572*b0563631STom Van Eyck static int ecp_mod_p256(mbedtls_mpi *);
4573*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4574*b0563631STom Van Eyck int mbedtls_ecp_mod_p256_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4575*b0563631STom Van Eyck #endif
4576*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
4577*b0563631STom Van Eyck static int ecp_mod_p384(mbedtls_mpi *);
4578*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4579*b0563631STom Van Eyck int mbedtls_ecp_mod_p384_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4580*b0563631STom Van Eyck #endif
4581*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
4582*b0563631STom Van Eyck static int ecp_mod_p521(mbedtls_mpi *);
4583*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4584*b0563631STom Van Eyck int mbedtls_ecp_mod_p521_raw(mbedtls_mpi_uint *N_p, size_t N_n);
4585*b0563631STom Van Eyck #endif
4586*b0563631STom Van Eyck
4587*b0563631STom Van Eyck #define NIST_MODP(P) grp->modp = ecp_mod_ ## P;
4588*b0563631STom Van Eyck #else
4589*b0563631STom Van Eyck #define NIST_MODP(P)
4590*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_NIST_OPTIM */
4591*b0563631STom Van Eyck
4592*b0563631STom Van Eyck /* Additional forward declarations */
4593*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
4594*b0563631STom Van Eyck static int ecp_mod_p255(mbedtls_mpi *);
4595*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4596*b0563631STom Van Eyck int mbedtls_ecp_mod_p255_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4597*b0563631STom Van Eyck #endif
4598*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4599*b0563631STom Van Eyck static int ecp_mod_p448(mbedtls_mpi *);
4600*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4601*b0563631STom Van Eyck int mbedtls_ecp_mod_p448_raw(mbedtls_mpi_uint *, size_t);
4602*b0563631STom Van Eyck #endif
4603*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
4604*b0563631STom Van Eyck static int ecp_mod_p192k1(mbedtls_mpi *);
4605*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4606*b0563631STom Van Eyck int mbedtls_ecp_mod_p192k1_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4607*b0563631STom Van Eyck #endif
4608*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
4609*b0563631STom Van Eyck static int ecp_mod_p224k1(mbedtls_mpi *);
4610*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4611*b0563631STom Van Eyck int mbedtls_ecp_mod_p224k1_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4612*b0563631STom Van Eyck #endif
4613*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
4614*b0563631STom Van Eyck static int ecp_mod_p256k1(mbedtls_mpi *);
4615*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
4616*b0563631STom Van Eyck int mbedtls_ecp_mod_p256k1_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4617*b0563631STom Van Eyck #endif
4618*b0563631STom Van Eyck
4619*b0563631STom Van Eyck #if defined(ECP_LOAD_GROUP)
4620*b0563631STom Van Eyck #define LOAD_GROUP_A(G) ecp_group_load(grp, \
4621*b0563631STom Van Eyck G ## _p, sizeof(G ## _p), \
4622*b0563631STom Van Eyck G ## _a, sizeof(G ## _a), \
4623*b0563631STom Van Eyck G ## _b, sizeof(G ## _b), \
4624*b0563631STom Van Eyck G ## _gx, sizeof(G ## _gx), \
4625*b0563631STom Van Eyck G ## _gy, sizeof(G ## _gy), \
4626*b0563631STom Van Eyck G ## _n, sizeof(G ## _n), \
4627*b0563631STom Van Eyck G ## _T \
4628*b0563631STom Van Eyck )
4629*b0563631STom Van Eyck
4630*b0563631STom Van Eyck #define LOAD_GROUP(G) ecp_group_load(grp, \
4631*b0563631STom Van Eyck G ## _p, sizeof(G ## _p), \
4632*b0563631STom Van Eyck NULL, 0, \
4633*b0563631STom Van Eyck G ## _b, sizeof(G ## _b), \
4634*b0563631STom Van Eyck G ## _gx, sizeof(G ## _gx), \
4635*b0563631STom Van Eyck G ## _gy, sizeof(G ## _gy), \
4636*b0563631STom Van Eyck G ## _n, sizeof(G ## _n), \
4637*b0563631STom Van Eyck G ## _T \
4638*b0563631STom Van Eyck )
4639*b0563631STom Van Eyck #endif /* ECP_LOAD_GROUP */
4640*b0563631STom Van Eyck
4641*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
4642*b0563631STom Van Eyck /* Constants used by ecp_use_curve25519() */
4643*b0563631STom Van Eyck static const mbedtls_mpi_sint curve25519_a24 = 0x01DB42;
4644*b0563631STom Van Eyck
4645*b0563631STom Van Eyck /* P = 2^255 - 19 */
4646*b0563631STom Van Eyck static const mbedtls_mpi_uint curve25519_p[] = {
4647*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4648*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4649*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4650*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7F)
4651*b0563631STom Van Eyck };
4652*b0563631STom Van Eyck
4653*b0563631STom Van Eyck /* N = 2^252 + 27742317777372353535851937790883648493 */
4654*b0563631STom Van Eyck static const mbedtls_mpi_uint curve25519_n[] = {
4655*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XED, 0XD3, 0XF5, 0X5C, 0X1A, 0X63, 0X12, 0X58),
4656*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XD6, 0X9C, 0XF7, 0XA2, 0XDE, 0XF9, 0XDE, 0X14),
4657*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0X00, 0X00, 0X00, 0X00, 0x00, 0x00, 0x00, 0x00),
4658*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10)
4659*b0563631STom Van Eyck };
4660*b0563631STom Van Eyck
4661*b0563631STom Van Eyck /*
4662*b0563631STom Van Eyck * Specialized function for creating the Curve25519 group
4663*b0563631STom Van Eyck */
ecp_use_curve25519(mbedtls_ecp_group * grp)4664*b0563631STom Van Eyck static int ecp_use_curve25519(mbedtls_ecp_group *grp)
4665*b0563631STom Van Eyck {
4666*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
4667*b0563631STom Van Eyck
4668*b0563631STom Van Eyck /* Actually ( A + 2 ) / 4 */
4669*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->A, curve25519_a24));
4670*b0563631STom Van Eyck
4671*b0563631STom Van Eyck ecp_mpi_load(&grp->P, curve25519_p, sizeof(curve25519_p));
4672*b0563631STom Van Eyck
4673*b0563631STom Van Eyck grp->pbits = mbedtls_mpi_bitlen(&grp->P);
4674*b0563631STom Van Eyck
4675*b0563631STom Van Eyck ecp_mpi_load(&grp->N, curve25519_n, sizeof(curve25519_n));
4676*b0563631STom Van Eyck
4677*b0563631STom Van Eyck /* Y intentionally not set, since we use x/z coordinates.
4678*b0563631STom Van Eyck * This is used as a marker to identify Montgomery curves! */
4679*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.X, 9));
4680*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.Z, 1));
4681*b0563631STom Van Eyck mbedtls_mpi_free(&grp->G.Y);
4682*b0563631STom Van Eyck
4683*b0563631STom Van Eyck /* Actually, the required msb for private keys */
4684*b0563631STom Van Eyck grp->nbits = 254;
4685*b0563631STom Van Eyck
4686*b0563631STom Van Eyck cleanup:
4687*b0563631STom Van Eyck if (ret != 0) {
4688*b0563631STom Van Eyck mbedtls_ecp_group_free(grp);
4689*b0563631STom Van Eyck }
4690*b0563631STom Van Eyck
4691*b0563631STom Van Eyck return ret;
4692*b0563631STom Van Eyck }
4693*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
4694*b0563631STom Van Eyck
4695*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4696*b0563631STom Van Eyck /* Constants used by ecp_use_curve448() */
4697*b0563631STom Van Eyck static const mbedtls_mpi_sint curve448_a24 = 0x98AA;
4698*b0563631STom Van Eyck
4699*b0563631STom Van Eyck /* P = 2^448 - 2^224 - 1 */
4700*b0563631STom Van Eyck static const mbedtls_mpi_uint curve448_p[] = {
4701*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4702*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4703*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4704*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFF, 0XFF, 0XFF),
4705*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4706*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4707*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4708*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00)
4709*b0563631STom Van Eyck };
4710*b0563631STom Van Eyck
4711*b0563631STom Van Eyck /* N = 2^446 - 13818066809895115352007386748515426880336692474882178609894547503885 */
4712*b0563631STom Van Eyck static const mbedtls_mpi_uint curve448_n[] = {
4713*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XF3, 0X44, 0X58, 0XAB, 0X92, 0XC2, 0X78, 0X23),
4714*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0X55, 0X8F, 0XC5, 0X8D, 0X72, 0XC2, 0X6C, 0X21),
4715*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0X90, 0X36, 0XD6, 0XAE, 0X49, 0XDB, 0X4E, 0XC4),
4716*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XE9, 0X23, 0XCA, 0X7C, 0XFF, 0XFF, 0XFF, 0XFF),
4717*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4718*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4719*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X3F),
4720*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00)
4721*b0563631STom Van Eyck };
4722*b0563631STom Van Eyck
4723*b0563631STom Van Eyck /*
4724*b0563631STom Van Eyck * Specialized function for creating the Curve448 group
4725*b0563631STom Van Eyck */
ecp_use_curve448(mbedtls_ecp_group * grp)4726*b0563631STom Van Eyck static int ecp_use_curve448(mbedtls_ecp_group *grp)
4727*b0563631STom Van Eyck {
4728*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
4729*b0563631STom Van Eyck
4730*b0563631STom Van Eyck /* Actually ( A + 2 ) / 4 */
4731*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->A, curve448_a24));
4732*b0563631STom Van Eyck
4733*b0563631STom Van Eyck ecp_mpi_load(&grp->P, curve448_p, sizeof(curve448_p));
4734*b0563631STom Van Eyck grp->pbits = mbedtls_mpi_bitlen(&grp->P);
4735*b0563631STom Van Eyck
4736*b0563631STom Van Eyck /* Y intentionally not set, since we use x/z coordinates.
4737*b0563631STom Van Eyck * This is used as a marker to identify Montgomery curves! */
4738*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.X, 5));
4739*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.Z, 1));
4740*b0563631STom Van Eyck mbedtls_mpi_free(&grp->G.Y);
4741*b0563631STom Van Eyck
4742*b0563631STom Van Eyck ecp_mpi_load(&grp->N, curve448_n, sizeof(curve448_n));
4743*b0563631STom Van Eyck
4744*b0563631STom Van Eyck /* Actually, the required msb for private keys */
4745*b0563631STom Van Eyck grp->nbits = 447;
4746*b0563631STom Van Eyck
4747*b0563631STom Van Eyck cleanup:
4748*b0563631STom Van Eyck if (ret != 0) {
4749*b0563631STom Van Eyck mbedtls_ecp_group_free(grp);
4750*b0563631STom Van Eyck }
4751*b0563631STom Van Eyck
4752*b0563631STom Van Eyck return ret;
4753*b0563631STom Van Eyck }
4754*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
4755*b0563631STom Van Eyck
4756*b0563631STom Van Eyck /*
4757*b0563631STom Van Eyck * Set a group using well-known domain parameters
4758*b0563631STom Van Eyck */
mbedtls_ecp_group_load(mbedtls_ecp_group * grp,mbedtls_ecp_group_id id)4759*b0563631STom Van Eyck int mbedtls_ecp_group_load(mbedtls_ecp_group *grp, mbedtls_ecp_group_id id)
4760*b0563631STom Van Eyck {
4761*b0563631STom Van Eyck mbedtls_ecp_group_free(grp);
4762*b0563631STom Van Eyck
4763*b0563631STom Van Eyck mbedtls_ecp_group_init(grp);
4764*b0563631STom Van Eyck
4765*b0563631STom Van Eyck grp->id = id;
4766*b0563631STom Van Eyck
4767*b0563631STom Van Eyck switch (id) {
4768*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
4769*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP192R1:
4770*b0563631STom Van Eyck NIST_MODP(p192);
4771*b0563631STom Van Eyck return LOAD_GROUP(secp192r1);
4772*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
4773*b0563631STom Van Eyck
4774*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
4775*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP224R1:
4776*b0563631STom Van Eyck NIST_MODP(p224);
4777*b0563631STom Van Eyck return LOAD_GROUP(secp224r1);
4778*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
4779*b0563631STom Van Eyck
4780*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
4781*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP256R1:
4782*b0563631STom Van Eyck NIST_MODP(p256);
4783*b0563631STom Van Eyck return LOAD_GROUP(secp256r1);
4784*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
4785*b0563631STom Van Eyck
4786*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
4787*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP384R1:
4788*b0563631STom Van Eyck NIST_MODP(p384);
4789*b0563631STom Van Eyck return LOAD_GROUP(secp384r1);
4790*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
4791*b0563631STom Van Eyck
4792*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
4793*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP521R1:
4794*b0563631STom Van Eyck NIST_MODP(p521);
4795*b0563631STom Van Eyck return LOAD_GROUP(secp521r1);
4796*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
4797*b0563631STom Van Eyck
4798*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
4799*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP192K1:
4800*b0563631STom Van Eyck grp->modp = ecp_mod_p192k1;
4801*b0563631STom Van Eyck return LOAD_GROUP_A(secp192k1);
4802*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
4803*b0563631STom Van Eyck
4804*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
4805*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP224K1:
4806*b0563631STom Van Eyck grp->modp = ecp_mod_p224k1;
4807*b0563631STom Van Eyck return LOAD_GROUP_A(secp224k1);
4808*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
4809*b0563631STom Van Eyck
4810*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
4811*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP256K1:
4812*b0563631STom Van Eyck grp->modp = ecp_mod_p256k1;
4813*b0563631STom Van Eyck return LOAD_GROUP_A(secp256k1);
4814*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
4815*b0563631STom Van Eyck
4816*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
4817*b0563631STom Van Eyck case MBEDTLS_ECP_DP_BP256R1:
4818*b0563631STom Van Eyck return LOAD_GROUP_A(brainpoolP256r1);
4819*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
4820*b0563631STom Van Eyck
4821*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
4822*b0563631STom Van Eyck case MBEDTLS_ECP_DP_BP384R1:
4823*b0563631STom Van Eyck return LOAD_GROUP_A(brainpoolP384r1);
4824*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
4825*b0563631STom Van Eyck
4826*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
4827*b0563631STom Van Eyck case MBEDTLS_ECP_DP_BP512R1:
4828*b0563631STom Van Eyck return LOAD_GROUP_A(brainpoolP512r1);
4829*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
4830*b0563631STom Van Eyck
4831*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
4832*b0563631STom Van Eyck case MBEDTLS_ECP_DP_CURVE25519:
4833*b0563631STom Van Eyck grp->modp = ecp_mod_p255;
4834*b0563631STom Van Eyck return ecp_use_curve25519(grp);
4835*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
4836*b0563631STom Van Eyck
4837*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4838*b0563631STom Van Eyck case MBEDTLS_ECP_DP_CURVE448:
4839*b0563631STom Van Eyck grp->modp = ecp_mod_p448;
4840*b0563631STom Van Eyck return ecp_use_curve448(grp);
4841*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
4842*b0563631STom Van Eyck
4843*b0563631STom Van Eyck default:
4844*b0563631STom Van Eyck grp->id = MBEDTLS_ECP_DP_NONE;
4845*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE;
4846*b0563631STom Van Eyck }
4847*b0563631STom Van Eyck }
4848*b0563631STom Van Eyck
4849*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_NIST_OPTIM)
4850*b0563631STom Van Eyck /*
4851*b0563631STom Van Eyck * Fast reduction modulo the primes used by the NIST curves.
4852*b0563631STom Van Eyck *
4853*b0563631STom Van Eyck * These functions are critical for speed, but not needed for correct
4854*b0563631STom Van Eyck * operations. So, we make the choice to heavily rely on the internals of our
4855*b0563631STom Van Eyck * bignum library, which creates a tight coupling between these functions and
4856*b0563631STom Van Eyck * our MPI implementation. However, the coupling between the ECP module and
4857*b0563631STom Van Eyck * MPI remains loose, since these functions can be deactivated at will.
4858*b0563631STom Van Eyck */
4859*b0563631STom Van Eyck
4860*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
4861*b0563631STom Van Eyck /*
4862*b0563631STom Van Eyck * Compared to the way things are presented in FIPS 186-3 D.2,
4863*b0563631STom Van Eyck * we proceed in columns, from right (least significant chunk) to left,
4864*b0563631STom Van Eyck * adding chunks to N in place, and keeping a carry for the next chunk.
4865*b0563631STom Van Eyck * This avoids moving things around in memory, and uselessly adding zeros,
4866*b0563631STom Van Eyck * compared to the more straightforward, line-oriented approach.
4867*b0563631STom Van Eyck *
4868*b0563631STom Van Eyck * For this prime we need to handle data in chunks of 64 bits.
4869*b0563631STom Van Eyck * Since this is always a multiple of our basic mbedtls_mpi_uint, we can
4870*b0563631STom Van Eyck * use a mbedtls_mpi_uint * to designate such a chunk, and small loops to handle it.
4871*b0563631STom Van Eyck */
4872*b0563631STom Van Eyck
4873*b0563631STom Van Eyck /* Add 64-bit chunks (dst += src) and update carry */
add64(mbedtls_mpi_uint * dst,mbedtls_mpi_uint * src,mbedtls_mpi_uint * carry)4874*b0563631STom Van Eyck static inline void add64(mbedtls_mpi_uint *dst, mbedtls_mpi_uint *src, mbedtls_mpi_uint *carry)
4875*b0563631STom Van Eyck {
4876*b0563631STom Van Eyck unsigned char i;
4877*b0563631STom Van Eyck mbedtls_mpi_uint c = 0;
4878*b0563631STom Van Eyck for (i = 0; i < 8 / sizeof(mbedtls_mpi_uint); i++, dst++, src++) {
4879*b0563631STom Van Eyck *dst += c; c = (*dst < c);
4880*b0563631STom Van Eyck *dst += *src; c += (*dst < *src);
4881*b0563631STom Van Eyck }
4882*b0563631STom Van Eyck *carry += c;
4883*b0563631STom Van Eyck }
4884*b0563631STom Van Eyck
4885*b0563631STom Van Eyck /* Add carry to a 64-bit chunk and update carry */
carry64(mbedtls_mpi_uint * dst,mbedtls_mpi_uint * carry)4886*b0563631STom Van Eyck static inline void carry64(mbedtls_mpi_uint *dst, mbedtls_mpi_uint *carry)
4887*b0563631STom Van Eyck {
4888*b0563631STom Van Eyck unsigned char i;
4889*b0563631STom Van Eyck for (i = 0; i < 8 / sizeof(mbedtls_mpi_uint); i++, dst++) {
4890*b0563631STom Van Eyck *dst += *carry;
4891*b0563631STom Van Eyck *carry = (*dst < *carry);
4892*b0563631STom Van Eyck }
4893*b0563631STom Van Eyck }
4894*b0563631STom Van Eyck
4895*b0563631STom Van Eyck #define WIDTH 8 / sizeof(mbedtls_mpi_uint)
4896*b0563631STom Van Eyck #define A(i) Np + (i) * WIDTH
4897*b0563631STom Van Eyck #define ADD(i) add64(p, A(i), &c)
4898*b0563631STom Van Eyck #define NEXT p += WIDTH; carry64(p, &c)
4899*b0563631STom Van Eyck #define LAST p += WIDTH; do *p = 0; while (++p < end)
4900*b0563631STom Van Eyck #define RESET last_carry[0] = c; c = 0; p = Np
4901*b0563631STom Van Eyck #define ADD_LAST add64(p, last_carry, &c)
4902*b0563631STom Van Eyck
4903*b0563631STom Van Eyck /*
4904*b0563631STom Van Eyck * Fast quasi-reduction modulo p192 (FIPS 186-3 D.2.1)
4905*b0563631STom Van Eyck */
ecp_mod_p192(mbedtls_mpi * N)4906*b0563631STom Van Eyck static int ecp_mod_p192(mbedtls_mpi *N)
4907*b0563631STom Van Eyck {
4908*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
4909*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(192) * 2;
4910*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
4911*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p192_raw(N->p, expected_width);
4912*b0563631STom Van Eyck
4913*b0563631STom Van Eyck cleanup:
4914*b0563631STom Van Eyck return ret;
4915*b0563631STom Van Eyck }
4916*b0563631STom Van Eyck
4917*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p192_raw(mbedtls_mpi_uint * Np,size_t Nn)4918*b0563631STom Van Eyck int mbedtls_ecp_mod_p192_raw(mbedtls_mpi_uint *Np, size_t Nn)
4919*b0563631STom Van Eyck {
4920*b0563631STom Van Eyck mbedtls_mpi_uint c = 0, last_carry[WIDTH] = { 0 };
4921*b0563631STom Van Eyck mbedtls_mpi_uint *p, *end;
4922*b0563631STom Van Eyck
4923*b0563631STom Van Eyck if (Nn != BITS_TO_LIMBS(192) * 2) {
4924*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
4925*b0563631STom Van Eyck }
4926*b0563631STom Van Eyck
4927*b0563631STom Van Eyck p = Np;
4928*b0563631STom Van Eyck end = p + Nn;
4929*b0563631STom Van Eyck
4930*b0563631STom Van Eyck ADD(3); ADD(5); NEXT; // A0 += A3 + A5
4931*b0563631STom Van Eyck ADD(3); ADD(4); ADD(5); NEXT; // A1 += A3 + A4 + A5
4932*b0563631STom Van Eyck ADD(4); ADD(5); // A2 += A4 + A5
4933*b0563631STom Van Eyck
4934*b0563631STom Van Eyck RESET;
4935*b0563631STom Van Eyck
4936*b0563631STom Van Eyck /* Use the reduction for the carry as well:
4937*b0563631STom Van Eyck * 2^192 * last_carry = 2^64 * last_carry + last_carry mod P192
4938*b0563631STom Van Eyck * It can generate a carry. */
4939*b0563631STom Van Eyck ADD_LAST; NEXT; // A0 += last_carry
4940*b0563631STom Van Eyck ADD_LAST; NEXT; // A1 += last_carry
4941*b0563631STom Van Eyck // A2 += carry
4942*b0563631STom Van Eyck
4943*b0563631STom Van Eyck RESET;
4944*b0563631STom Van Eyck
4945*b0563631STom Van Eyck /* Use the reduction for the carry as well:
4946*b0563631STom Van Eyck * 2^192 * last_carry = 2^64 * last_carry + last_carry mod P192
4947*b0563631STom Van Eyck */
4948*b0563631STom Van Eyck ADD_LAST; NEXT; // A0 += last_carry
4949*b0563631STom Van Eyck ADD_LAST; NEXT; // A1 += last_carry
4950*b0563631STom Van Eyck // A2 += carry
4951*b0563631STom Van Eyck
4952*b0563631STom Van Eyck LAST;
4953*b0563631STom Van Eyck
4954*b0563631STom Van Eyck return 0;
4955*b0563631STom Van Eyck }
4956*b0563631STom Van Eyck
4957*b0563631STom Van Eyck #undef WIDTH
4958*b0563631STom Van Eyck #undef A
4959*b0563631STom Van Eyck #undef ADD
4960*b0563631STom Van Eyck #undef NEXT
4961*b0563631STom Van Eyck #undef LAST
4962*b0563631STom Van Eyck #undef RESET
4963*b0563631STom Van Eyck #undef ADD_LAST
4964*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
4965*b0563631STom Van Eyck
4966*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \
4967*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \
4968*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
4969*b0563631STom Van Eyck
4970*b0563631STom Van Eyck /*
4971*b0563631STom Van Eyck * The reader is advised to first understand ecp_mod_p192() since the same
4972*b0563631STom Van Eyck * general structure is used here, but with additional complications:
4973*b0563631STom Van Eyck * (1) chunks of 32 bits, and (2) subtractions.
4974*b0563631STom Van Eyck */
4975*b0563631STom Van Eyck
4976*b0563631STom Van Eyck /*
4977*b0563631STom Van Eyck * For these primes, we need to handle data in chunks of 32 bits.
4978*b0563631STom Van Eyck * This makes it more complicated if we use 64 bits limbs in MPI,
4979*b0563631STom Van Eyck * which prevents us from using a uniform access method as for p192.
4980*b0563631STom Van Eyck *
4981*b0563631STom Van Eyck * So, we define a mini abstraction layer to access 32 bit chunks,
4982*b0563631STom Van Eyck * load them in 'cur' for work, and store them back from 'cur' when done.
4983*b0563631STom Van Eyck *
4984*b0563631STom Van Eyck * While at it, also define the size of N in terms of 32-bit chunks.
4985*b0563631STom Van Eyck */
4986*b0563631STom Van Eyck #define LOAD32 cur = A(i);
4987*b0563631STom Van Eyck
4988*b0563631STom Van Eyck #if defined(MBEDTLS_HAVE_INT32) /* 32 bit */
4989*b0563631STom Van Eyck
4990*b0563631STom Van Eyck #define MAX32 X_limbs
4991*b0563631STom Van Eyck #define A(j) X[j]
4992*b0563631STom Van Eyck #define STORE32 X[i] = (mbedtls_mpi_uint) cur;
4993*b0563631STom Van Eyck #define STORE0 X[i] = 0;
4994*b0563631STom Van Eyck
4995*b0563631STom Van Eyck #else /* 64 bit */
4996*b0563631STom Van Eyck
4997*b0563631STom Van Eyck #define MAX32 X_limbs * 2
4998*b0563631STom Van Eyck #define A(j) \
4999*b0563631STom Van Eyck (j) % 2 ? \
5000*b0563631STom Van Eyck (uint32_t) (X[(j) / 2] >> 32) : \
5001*b0563631STom Van Eyck (uint32_t) (X[(j) / 2])
5002*b0563631STom Van Eyck #define STORE32 \
5003*b0563631STom Van Eyck if (i % 2) { \
5004*b0563631STom Van Eyck X[i/2] &= 0x00000000FFFFFFFF; \
5005*b0563631STom Van Eyck X[i/2] |= (uint64_t) (cur) << 32; \
5006*b0563631STom Van Eyck } else { \
5007*b0563631STom Van Eyck X[i/2] &= 0xFFFFFFFF00000000; \
5008*b0563631STom Van Eyck X[i/2] |= (uint32_t) cur; \
5009*b0563631STom Van Eyck }
5010*b0563631STom Van Eyck
5011*b0563631STom Van Eyck #define STORE0 \
5012*b0563631STom Van Eyck if (i % 2) { \
5013*b0563631STom Van Eyck X[i/2] &= 0x00000000FFFFFFFF; \
5014*b0563631STom Van Eyck } else { \
5015*b0563631STom Van Eyck X[i/2] &= 0xFFFFFFFF00000000; \
5016*b0563631STom Van Eyck }
5017*b0563631STom Van Eyck
5018*b0563631STom Van Eyck #endif
5019*b0563631STom Van Eyck
extract_carry(int64_t cur)5020*b0563631STom Van Eyck static inline int8_t extract_carry(int64_t cur)
5021*b0563631STom Van Eyck {
5022*b0563631STom Van Eyck return (int8_t) (cur >> 32);
5023*b0563631STom Van Eyck }
5024*b0563631STom Van Eyck
5025*b0563631STom Van Eyck #define ADD(j) cur += A(j)
5026*b0563631STom Van Eyck #define SUB(j) cur -= A(j)
5027*b0563631STom Van Eyck
5028*b0563631STom Van Eyck #define ADD_CARRY(cc) cur += (cc)
5029*b0563631STom Van Eyck #define SUB_CARRY(cc) cur -= (cc)
5030*b0563631STom Van Eyck
5031*b0563631STom Van Eyck #define ADD_LAST ADD_CARRY(last_c)
5032*b0563631STom Van Eyck #define SUB_LAST SUB_CARRY(last_c)
5033*b0563631STom Van Eyck
5034*b0563631STom Van Eyck /*
5035*b0563631STom Van Eyck * Helpers for the main 'loop'
5036*b0563631STom Van Eyck */
5037*b0563631STom Van Eyck #define INIT(b) \
5038*b0563631STom Van Eyck int8_t c = 0, last_c; \
5039*b0563631STom Van Eyck int64_t cur; \
5040*b0563631STom Van Eyck size_t i = 0; \
5041*b0563631STom Van Eyck LOAD32;
5042*b0563631STom Van Eyck
5043*b0563631STom Van Eyck #define NEXT \
5044*b0563631STom Van Eyck c = extract_carry(cur); \
5045*b0563631STom Van Eyck STORE32; i++; LOAD32; \
5046*b0563631STom Van Eyck ADD_CARRY(c);
5047*b0563631STom Van Eyck
5048*b0563631STom Van Eyck #define RESET \
5049*b0563631STom Van Eyck c = extract_carry(cur); \
5050*b0563631STom Van Eyck last_c = c; \
5051*b0563631STom Van Eyck STORE32; i = 0; LOAD32; \
5052*b0563631STom Van Eyck c = 0; \
5053*b0563631STom Van Eyck
5054*b0563631STom Van Eyck #define LAST \
5055*b0563631STom Van Eyck c = extract_carry(cur); \
5056*b0563631STom Van Eyck STORE32; i++; \
5057*b0563631STom Van Eyck if (c != 0) \
5058*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA; \
5059*b0563631STom Van Eyck while (i < MAX32) { STORE0; i++; }
5060*b0563631STom Van Eyck
5061*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
5062*b0563631STom Van Eyck
5063*b0563631STom Van Eyck /*
5064*b0563631STom Van Eyck * Fast quasi-reduction modulo p224 (FIPS 186-3 D.2.2)
5065*b0563631STom Van Eyck */
ecp_mod_p224(mbedtls_mpi * N)5066*b0563631STom Van Eyck static int ecp_mod_p224(mbedtls_mpi *N)
5067*b0563631STom Van Eyck {
5068*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5069*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(224) * 2;
5070*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5071*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p224_raw(N->p, expected_width);
5072*b0563631STom Van Eyck cleanup:
5073*b0563631STom Van Eyck return ret;
5074*b0563631STom Van Eyck }
5075*b0563631STom Van Eyck
5076*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p224_raw(mbedtls_mpi_uint * X,size_t X_limbs)5077*b0563631STom Van Eyck int mbedtls_ecp_mod_p224_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5078*b0563631STom Van Eyck {
5079*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(224) * 2) {
5080*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5081*b0563631STom Van Eyck }
5082*b0563631STom Van Eyck
5083*b0563631STom Van Eyck INIT(224);
5084*b0563631STom Van Eyck
5085*b0563631STom Van Eyck SUB(7); SUB(11); NEXT; // A0 += -A7 - A11
5086*b0563631STom Van Eyck SUB(8); SUB(12); NEXT; // A1 += -A8 - A12
5087*b0563631STom Van Eyck SUB(9); SUB(13); NEXT; // A2 += -A9 - A13
5088*b0563631STom Van Eyck SUB(10); ADD(7); ADD(11); NEXT; // A3 += -A10 + A7 + A11
5089*b0563631STom Van Eyck SUB(11); ADD(8); ADD(12); NEXT; // A4 += -A11 + A8 + A12
5090*b0563631STom Van Eyck SUB(12); ADD(9); ADD(13); NEXT; // A5 += -A12 + A9 + A13
5091*b0563631STom Van Eyck SUB(13); ADD(10); // A6 += -A13 + A10
5092*b0563631STom Van Eyck
5093*b0563631STom Van Eyck RESET;
5094*b0563631STom Van Eyck
5095*b0563631STom Van Eyck /* Use 2^224 = P + 2^96 - 1 to modulo reduce the final carry */
5096*b0563631STom Van Eyck SUB_LAST; NEXT; // A0 -= last_c
5097*b0563631STom Van Eyck ; NEXT; // A1
5098*b0563631STom Van Eyck ; NEXT; // A2
5099*b0563631STom Van Eyck ADD_LAST; NEXT; // A3 += last_c
5100*b0563631STom Van Eyck ; NEXT; // A4
5101*b0563631STom Van Eyck ; NEXT; // A5
5102*b0563631STom Van Eyck // A6
5103*b0563631STom Van Eyck
5104*b0563631STom Van Eyck /* The carry reduction cannot generate a carry
5105*b0563631STom Van Eyck * (see commit 73e8553 for details)*/
5106*b0563631STom Van Eyck
5107*b0563631STom Van Eyck LAST;
5108*b0563631STom Van Eyck
5109*b0563631STom Van Eyck return 0;
5110*b0563631STom Van Eyck }
5111*b0563631STom Van Eyck
5112*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
5113*b0563631STom Van Eyck
5114*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
5115*b0563631STom Van Eyck
5116*b0563631STom Van Eyck /*
5117*b0563631STom Van Eyck * Fast quasi-reduction modulo p256 (FIPS 186-3 D.2.3)
5118*b0563631STom Van Eyck */
ecp_mod_p256(mbedtls_mpi * N)5119*b0563631STom Van Eyck static int ecp_mod_p256(mbedtls_mpi *N)
5120*b0563631STom Van Eyck {
5121*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5122*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(256) * 2;
5123*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5124*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p256_raw(N->p, expected_width);
5125*b0563631STom Van Eyck cleanup:
5126*b0563631STom Van Eyck return ret;
5127*b0563631STom Van Eyck }
5128*b0563631STom Van Eyck
5129*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p256_raw(mbedtls_mpi_uint * X,size_t X_limbs)5130*b0563631STom Van Eyck int mbedtls_ecp_mod_p256_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5131*b0563631STom Van Eyck {
5132*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(256) * 2) {
5133*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5134*b0563631STom Van Eyck }
5135*b0563631STom Van Eyck
5136*b0563631STom Van Eyck INIT(256);
5137*b0563631STom Van Eyck
5138*b0563631STom Van Eyck ADD(8); ADD(9);
5139*b0563631STom Van Eyck SUB(11); SUB(12); SUB(13); SUB(14); NEXT; // A0
5140*b0563631STom Van Eyck
5141*b0563631STom Van Eyck ADD(9); ADD(10);
5142*b0563631STom Van Eyck SUB(12); SUB(13); SUB(14); SUB(15); NEXT; // A1
5143*b0563631STom Van Eyck
5144*b0563631STom Van Eyck ADD(10); ADD(11);
5145*b0563631STom Van Eyck SUB(13); SUB(14); SUB(15); NEXT; // A2
5146*b0563631STom Van Eyck
5147*b0563631STom Van Eyck ADD(11); ADD(11); ADD(12); ADD(12); ADD(13);
5148*b0563631STom Van Eyck SUB(15); SUB(8); SUB(9); NEXT; // A3
5149*b0563631STom Van Eyck
5150*b0563631STom Van Eyck ADD(12); ADD(12); ADD(13); ADD(13); ADD(14);
5151*b0563631STom Van Eyck SUB(9); SUB(10); NEXT; // A4
5152*b0563631STom Van Eyck
5153*b0563631STom Van Eyck ADD(13); ADD(13); ADD(14); ADD(14); ADD(15);
5154*b0563631STom Van Eyck SUB(10); SUB(11); NEXT; // A5
5155*b0563631STom Van Eyck
5156*b0563631STom Van Eyck ADD(14); ADD(14); ADD(15); ADD(15); ADD(14); ADD(13);
5157*b0563631STom Van Eyck SUB(8); SUB(9); NEXT; // A6
5158*b0563631STom Van Eyck
5159*b0563631STom Van Eyck ADD(15); ADD(15); ADD(15); ADD(8);
5160*b0563631STom Van Eyck SUB(10); SUB(11); SUB(12); SUB(13); // A7
5161*b0563631STom Van Eyck
5162*b0563631STom Van Eyck RESET;
5163*b0563631STom Van Eyck
5164*b0563631STom Van Eyck /* Use 2^224 * (2^32 - 1) + 2^192 + 2^96 - 1
5165*b0563631STom Van Eyck * to modulo reduce the final carry. */
5166*b0563631STom Van Eyck ADD_LAST; NEXT; // A0
5167*b0563631STom Van Eyck ; NEXT; // A1
5168*b0563631STom Van Eyck ; NEXT; // A2
5169*b0563631STom Van Eyck SUB_LAST; NEXT; // A3
5170*b0563631STom Van Eyck ; NEXT; // A4
5171*b0563631STom Van Eyck ; NEXT; // A5
5172*b0563631STom Van Eyck SUB_LAST; NEXT; // A6
5173*b0563631STom Van Eyck ADD_LAST; // A7
5174*b0563631STom Van Eyck
5175*b0563631STom Van Eyck RESET;
5176*b0563631STom Van Eyck
5177*b0563631STom Van Eyck /* Use 2^224 * (2^32 - 1) + 2^192 + 2^96 - 1
5178*b0563631STom Van Eyck * to modulo reduce the carry generated by the previous reduction. */
5179*b0563631STom Van Eyck ADD_LAST; NEXT; // A0
5180*b0563631STom Van Eyck ; NEXT; // A1
5181*b0563631STom Van Eyck ; NEXT; // A2
5182*b0563631STom Van Eyck SUB_LAST; NEXT; // A3
5183*b0563631STom Van Eyck ; NEXT; // A4
5184*b0563631STom Van Eyck ; NEXT; // A5
5185*b0563631STom Van Eyck SUB_LAST; NEXT; // A6
5186*b0563631STom Van Eyck ADD_LAST; // A7
5187*b0563631STom Van Eyck
5188*b0563631STom Van Eyck LAST;
5189*b0563631STom Van Eyck
5190*b0563631STom Van Eyck return 0;
5191*b0563631STom Van Eyck }
5192*b0563631STom Van Eyck
5193*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
5194*b0563631STom Van Eyck
5195*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
5196*b0563631STom Van Eyck /*
5197*b0563631STom Van Eyck * Fast quasi-reduction modulo p384 (FIPS 186-3 D.2.4)
5198*b0563631STom Van Eyck */
ecp_mod_p384(mbedtls_mpi * N)5199*b0563631STom Van Eyck static int ecp_mod_p384(mbedtls_mpi *N)
5200*b0563631STom Van Eyck {
5201*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5202*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(384) * 2;
5203*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5204*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p384_raw(N->p, expected_width);
5205*b0563631STom Van Eyck cleanup:
5206*b0563631STom Van Eyck return ret;
5207*b0563631STom Van Eyck }
5208*b0563631STom Van Eyck
5209*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p384_raw(mbedtls_mpi_uint * X,size_t X_limbs)5210*b0563631STom Van Eyck int mbedtls_ecp_mod_p384_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5211*b0563631STom Van Eyck {
5212*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(384) * 2) {
5213*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5214*b0563631STom Van Eyck }
5215*b0563631STom Van Eyck
5216*b0563631STom Van Eyck INIT(384);
5217*b0563631STom Van Eyck
5218*b0563631STom Van Eyck ADD(12); ADD(21); ADD(20);
5219*b0563631STom Van Eyck SUB(23); NEXT; // A0
5220*b0563631STom Van Eyck
5221*b0563631STom Van Eyck ADD(13); ADD(22); ADD(23);
5222*b0563631STom Van Eyck SUB(12); SUB(20); NEXT; // A1
5223*b0563631STom Van Eyck
5224*b0563631STom Van Eyck ADD(14); ADD(23);
5225*b0563631STom Van Eyck SUB(13); SUB(21); NEXT; // A2
5226*b0563631STom Van Eyck
5227*b0563631STom Van Eyck ADD(15); ADD(12); ADD(20); ADD(21);
5228*b0563631STom Van Eyck SUB(14); SUB(22); SUB(23); NEXT; // A3
5229*b0563631STom Van Eyck
5230*b0563631STom Van Eyck ADD(21); ADD(21); ADD(16); ADD(13); ADD(12); ADD(20); ADD(22);
5231*b0563631STom Van Eyck SUB(15); SUB(23); SUB(23); NEXT; // A4
5232*b0563631STom Van Eyck
5233*b0563631STom Van Eyck ADD(22); ADD(22); ADD(17); ADD(14); ADD(13); ADD(21); ADD(23);
5234*b0563631STom Van Eyck SUB(16); NEXT; // A5
5235*b0563631STom Van Eyck
5236*b0563631STom Van Eyck ADD(23); ADD(23); ADD(18); ADD(15); ADD(14); ADD(22);
5237*b0563631STom Van Eyck SUB(17); NEXT; // A6
5238*b0563631STom Van Eyck
5239*b0563631STom Van Eyck ADD(19); ADD(16); ADD(15); ADD(23);
5240*b0563631STom Van Eyck SUB(18); NEXT; // A7
5241*b0563631STom Van Eyck
5242*b0563631STom Van Eyck ADD(20); ADD(17); ADD(16);
5243*b0563631STom Van Eyck SUB(19); NEXT; // A8
5244*b0563631STom Van Eyck
5245*b0563631STom Van Eyck ADD(21); ADD(18); ADD(17);
5246*b0563631STom Van Eyck SUB(20); NEXT; // A9
5247*b0563631STom Van Eyck
5248*b0563631STom Van Eyck ADD(22); ADD(19); ADD(18);
5249*b0563631STom Van Eyck SUB(21); NEXT; // A10
5250*b0563631STom Van Eyck
5251*b0563631STom Van Eyck ADD(23); ADD(20); ADD(19);
5252*b0563631STom Van Eyck SUB(22); // A11
5253*b0563631STom Van Eyck
5254*b0563631STom Van Eyck RESET;
5255*b0563631STom Van Eyck
5256*b0563631STom Van Eyck /* Use 2^384 = P + 2^128 + 2^96 - 2^32 + 1 to modulo reduce the final carry */
5257*b0563631STom Van Eyck ADD_LAST; NEXT; // A0
5258*b0563631STom Van Eyck SUB_LAST; NEXT; // A1
5259*b0563631STom Van Eyck ; NEXT; // A2
5260*b0563631STom Van Eyck ADD_LAST; NEXT; // A3
5261*b0563631STom Van Eyck ADD_LAST; NEXT; // A4
5262*b0563631STom Van Eyck ; NEXT; // A5
5263*b0563631STom Van Eyck ; NEXT; // A6
5264*b0563631STom Van Eyck ; NEXT; // A7
5265*b0563631STom Van Eyck ; NEXT; // A8
5266*b0563631STom Van Eyck ; NEXT; // A9
5267*b0563631STom Van Eyck ; NEXT; // A10
5268*b0563631STom Van Eyck // A11
5269*b0563631STom Van Eyck
5270*b0563631STom Van Eyck RESET;
5271*b0563631STom Van Eyck
5272*b0563631STom Van Eyck ADD_LAST; NEXT; // A0
5273*b0563631STom Van Eyck SUB_LAST; NEXT; // A1
5274*b0563631STom Van Eyck ; NEXT; // A2
5275*b0563631STom Van Eyck ADD_LAST; NEXT; // A3
5276*b0563631STom Van Eyck ADD_LAST; NEXT; // A4
5277*b0563631STom Van Eyck ; NEXT; // A5
5278*b0563631STom Van Eyck ; NEXT; // A6
5279*b0563631STom Van Eyck ; NEXT; // A7
5280*b0563631STom Van Eyck ; NEXT; // A8
5281*b0563631STom Van Eyck ; NEXT; // A9
5282*b0563631STom Van Eyck ; NEXT; // A10
5283*b0563631STom Van Eyck // A11
5284*b0563631STom Van Eyck
5285*b0563631STom Van Eyck LAST;
5286*b0563631STom Van Eyck
5287*b0563631STom Van Eyck return 0;
5288*b0563631STom Van Eyck }
5289*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
5290*b0563631STom Van Eyck
5291*b0563631STom Van Eyck #undef LOAD32
5292*b0563631STom Van Eyck #undef MAX32
5293*b0563631STom Van Eyck #undef A
5294*b0563631STom Van Eyck #undef STORE32
5295*b0563631STom Van Eyck #undef STORE0
5296*b0563631STom Van Eyck #undef ADD
5297*b0563631STom Van Eyck #undef SUB
5298*b0563631STom Van Eyck #undef ADD_CARRY
5299*b0563631STom Van Eyck #undef SUB_CARRY
5300*b0563631STom Van Eyck #undef ADD_LAST
5301*b0563631STom Van Eyck #undef SUB_LAST
5302*b0563631STom Van Eyck #undef INIT
5303*b0563631STom Van Eyck #undef NEXT
5304*b0563631STom Van Eyck #undef RESET
5305*b0563631STom Van Eyck #undef LAST
5306*b0563631STom Van Eyck
5307*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED ||
5308*b0563631STom Van Eyck MBEDTLS_ECP_DP_SECP256R1_ENABLED ||
5309*b0563631STom Van Eyck MBEDTLS_ECP_DP_SECP384R1_ENABLED */
5310*b0563631STom Van Eyck
5311*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
5312*b0563631STom Van Eyck /* Size of p521 in terms of mbedtls_mpi_uint */
5313*b0563631STom Van Eyck #define P521_WIDTH (521 / 8 / sizeof(mbedtls_mpi_uint) + 1)
5314*b0563631STom Van Eyck
5315*b0563631STom Van Eyck /* Bits to keep in the most significant mbedtls_mpi_uint */
5316*b0563631STom Van Eyck #define P521_MASK 0x01FF
5317*b0563631STom Van Eyck
5318*b0563631STom Van Eyck /*
5319*b0563631STom Van Eyck * Fast quasi-reduction modulo p521 = 2^521 - 1 (FIPS 186-3 D.2.5)
5320*b0563631STom Van Eyck */
ecp_mod_p521(mbedtls_mpi * N)5321*b0563631STom Van Eyck static int ecp_mod_p521(mbedtls_mpi *N)
5322*b0563631STom Van Eyck {
5323*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5324*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(521) * 2;
5325*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5326*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p521_raw(N->p, expected_width);
5327*b0563631STom Van Eyck cleanup:
5328*b0563631STom Van Eyck return ret;
5329*b0563631STom Van Eyck }
5330*b0563631STom Van Eyck
5331*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p521_raw(mbedtls_mpi_uint * X,size_t X_limbs)5332*b0563631STom Van Eyck int mbedtls_ecp_mod_p521_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5333*b0563631STom Van Eyck {
5334*b0563631STom Van Eyck mbedtls_mpi_uint carry = 0;
5335*b0563631STom Van Eyck
5336*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(521) * 2) {
5337*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5338*b0563631STom Van Eyck }
5339*b0563631STom Van Eyck
5340*b0563631STom Van Eyck /* Step 1: Reduction to P521_WIDTH limbs */
5341*b0563631STom Van Eyck /* Helper references for bottom part of X */
5342*b0563631STom Van Eyck mbedtls_mpi_uint *X0 = X;
5343*b0563631STom Van Eyck size_t X0_limbs = P521_WIDTH;
5344*b0563631STom Van Eyck /* Helper references for top part of X */
5345*b0563631STom Van Eyck mbedtls_mpi_uint *X1 = X + X0_limbs;
5346*b0563631STom Van Eyck size_t X1_limbs = X_limbs - X0_limbs;
5347*b0563631STom Van Eyck /* Split X as X0 + 2^P521_WIDTH X1 and compute X0 + 2^(biL - 9) X1.
5348*b0563631STom Van Eyck * (We are using that 2^P521_WIDTH = 2^(512 + biL) and that
5349*b0563631STom Van Eyck * 2^(512 + biL) X1 = 2^(biL - 9) X1 mod P521.)
5350*b0563631STom Van Eyck * The high order limb of the result will be held in carry and the rest
5351*b0563631STom Van Eyck * in X0 (that is the result will be represented as
5352*b0563631STom Van Eyck * 2^P521_WIDTH carry + X0).
5353*b0563631STom Van Eyck *
5354*b0563631STom Van Eyck * Also, note that the resulting carry is either 0 or 1:
5355*b0563631STom Van Eyck * X0 < 2^P521_WIDTH = 2^(512 + biL) and X1 < 2^(P521_WIDTH-biL) = 2^512
5356*b0563631STom Van Eyck * therefore
5357*b0563631STom Van Eyck * X0 + 2^(biL - 9) X1 < 2^(512 + biL) + 2^(512 + biL - 9)
5358*b0563631STom Van Eyck * which in turn is less than 2 * 2^(512 + biL).
5359*b0563631STom Van Eyck */
5360*b0563631STom Van Eyck mbedtls_mpi_uint shift = ((mbedtls_mpi_uint) 1u) << (biL - 9);
5361*b0563631STom Van Eyck carry = mbedtls_mpi_core_mla(X0, X0_limbs, X1, X1_limbs, shift);
5362*b0563631STom Van Eyck /* Set X to X0 (by clearing the top part). */
5363*b0563631STom Van Eyck memset(X1, 0, X1_limbs * sizeof(mbedtls_mpi_uint));
5364*b0563631STom Van Eyck
5365*b0563631STom Van Eyck /* Step 2: Reduction modulo P521
5366*b0563631STom Van Eyck *
5367*b0563631STom Van Eyck * At this point X is reduced to P521_WIDTH limbs. What remains is to add
5368*b0563631STom Van Eyck * the carry (that is 2^P521_WIDTH carry) and to reduce mod P521. */
5369*b0563631STom Van Eyck
5370*b0563631STom Van Eyck /* 2^P521_WIDTH carry = 2^(512 + biL) carry = 2^(biL - 9) carry mod P521.
5371*b0563631STom Van Eyck * Also, recall that carry is either 0 or 1. */
5372*b0563631STom Van Eyck mbedtls_mpi_uint addend = carry << (biL - 9);
5373*b0563631STom Van Eyck /* Keep the top 9 bits and reduce the rest, using 2^521 = 1 mod P521. */
5374*b0563631STom Van Eyck addend += (X[P521_WIDTH - 1] >> 9);
5375*b0563631STom Van Eyck X[P521_WIDTH - 1] &= P521_MASK;
5376*b0563631STom Van Eyck
5377*b0563631STom Van Eyck /* Reuse the top part of X (already zeroed) as a helper array for
5378*b0563631STom Van Eyck * carrying out the addition. */
5379*b0563631STom Van Eyck mbedtls_mpi_uint *addend_arr = X + P521_WIDTH;
5380*b0563631STom Van Eyck addend_arr[0] = addend;
5381*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(X, X, addend_arr, P521_WIDTH);
5382*b0563631STom Van Eyck /* Both addends were less than P521 therefore X < 2 * P521. (This also means
5383*b0563631STom Van Eyck * that the result fit in P521_WIDTH limbs and there won't be any carry.) */
5384*b0563631STom Van Eyck
5385*b0563631STom Van Eyck /* Clear the reused part of X. */
5386*b0563631STom Van Eyck addend_arr[0] = 0;
5387*b0563631STom Van Eyck
5388*b0563631STom Van Eyck return 0;
5389*b0563631STom Van Eyck }
5390*b0563631STom Van Eyck
5391*b0563631STom Van Eyck #undef P521_WIDTH
5392*b0563631STom Van Eyck #undef P521_MASK
5393*b0563631STom Van Eyck
5394*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
5395*b0563631STom Van Eyck
5396*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_NIST_OPTIM */
5397*b0563631STom Van Eyck
5398*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
5399*b0563631STom Van Eyck
5400*b0563631STom Van Eyck /* Size of p255 in terms of mbedtls_mpi_uint */
5401*b0563631STom Van Eyck #define P255_WIDTH (255 / 8 / sizeof(mbedtls_mpi_uint) + 1)
5402*b0563631STom Van Eyck
5403*b0563631STom Van Eyck /*
5404*b0563631STom Van Eyck * Fast quasi-reduction modulo p255 = 2^255 - 19
5405*b0563631STom Van Eyck * Write N as A0 + 2^256 A1, return A0 + 38 * A1
5406*b0563631STom Van Eyck */
ecp_mod_p255(mbedtls_mpi * N)5407*b0563631STom Van Eyck static int ecp_mod_p255(mbedtls_mpi *N)
5408*b0563631STom Van Eyck {
5409*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5410*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(255) * 2;
5411*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5412*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p255_raw(N->p, expected_width);
5413*b0563631STom Van Eyck cleanup:
5414*b0563631STom Van Eyck return ret;
5415*b0563631STom Van Eyck }
5416*b0563631STom Van Eyck
5417*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p255_raw(mbedtls_mpi_uint * X,size_t X_Limbs)5418*b0563631STom Van Eyck int mbedtls_ecp_mod_p255_raw(mbedtls_mpi_uint *X, size_t X_Limbs)
5419*b0563631STom Van Eyck {
5420*b0563631STom Van Eyck
5421*b0563631STom Van Eyck if (X_Limbs != BITS_TO_LIMBS(255) * 2) {
5422*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5423*b0563631STom Van Eyck }
5424*b0563631STom Van Eyck
5425*b0563631STom Van Eyck mbedtls_mpi_uint *carry = mbedtls_calloc(P255_WIDTH, ciL);
5426*b0563631STom Van Eyck if (carry == NULL) {
5427*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_ALLOC_FAILED;
5428*b0563631STom Van Eyck }
5429*b0563631STom Van Eyck
5430*b0563631STom Van Eyck /* Step 1: Reduction to P255_WIDTH limbs */
5431*b0563631STom Van Eyck if (X_Limbs > P255_WIDTH) {
5432*b0563631STom Van Eyck /* Helper references for top part of X */
5433*b0563631STom Van Eyck mbedtls_mpi_uint * const A1 = X + P255_WIDTH;
5434*b0563631STom Van Eyck const size_t A1_limbs = X_Limbs - P255_WIDTH;
5435*b0563631STom Van Eyck
5436*b0563631STom Van Eyck /* X = A0 + 38 * A1, capture carry out */
5437*b0563631STom Van Eyck *carry = mbedtls_mpi_core_mla(X, P255_WIDTH, A1, A1_limbs, 38);
5438*b0563631STom Van Eyck /* Clear top part */
5439*b0563631STom Van Eyck memset(A1, 0, sizeof(mbedtls_mpi_uint) * A1_limbs);
5440*b0563631STom Van Eyck }
5441*b0563631STom Van Eyck
5442*b0563631STom Van Eyck /* Step 2: Reduce to <2p
5443*b0563631STom Van Eyck * Split as A0 + 2^255*c, with c a scalar, and compute A0 + 19*c */
5444*b0563631STom Van Eyck *carry <<= 1;
5445*b0563631STom Van Eyck *carry += (X[P255_WIDTH - 1] >> (biL - 1));
5446*b0563631STom Van Eyck *carry *= 19;
5447*b0563631STom Van Eyck
5448*b0563631STom Van Eyck /* Clear top bit */
5449*b0563631STom Van Eyck X[P255_WIDTH - 1] <<= 1; X[P255_WIDTH - 1] >>= 1;
5450*b0563631STom Van Eyck /* Since the top bit for X has been cleared 0 + 0 + Carry
5451*b0563631STom Van Eyck * will not overflow.
5452*b0563631STom Van Eyck *
5453*b0563631STom Van Eyck * Furthermore for 2p = 2^256-38. When a carry propagation on the highest
5454*b0563631STom Van Eyck * limb occurs, X > 2^255 and all the remaining bits on the limb are zero.
5455*b0563631STom Van Eyck * - If X < 2^255 ==> X < 2p
5456*b0563631STom Van Eyck * - If X > 2^255 ==> X < 2^256 - 2^255 < 2p */
5457*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(X, X, carry, P255_WIDTH);
5458*b0563631STom Van Eyck
5459*b0563631STom Van Eyck mbedtls_free(carry);
5460*b0563631STom Van Eyck return 0;
5461*b0563631STom Van Eyck }
5462*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
5463*b0563631STom Van Eyck
5464*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
5465*b0563631STom Van Eyck
5466*b0563631STom Van Eyck /* Size of p448 in terms of mbedtls_mpi_uint */
5467*b0563631STom Van Eyck #define P448_WIDTH (448 / 8 / sizeof(mbedtls_mpi_uint))
5468*b0563631STom Van Eyck
5469*b0563631STom Van Eyck /* Number of limbs fully occupied by 2^224 (max), and limbs used by it (min) */
5470*b0563631STom Van Eyck #define DIV_ROUND_UP(X, Y) (((X) + (Y) -1) / (Y))
5471*b0563631STom Van Eyck #define P224_SIZE (224 / 8)
5472*b0563631STom Van Eyck #define P224_WIDTH_MIN (P224_SIZE / sizeof(mbedtls_mpi_uint))
5473*b0563631STom Van Eyck #define P224_WIDTH_MAX DIV_ROUND_UP(P224_SIZE, sizeof(mbedtls_mpi_uint))
5474*b0563631STom Van Eyck #define P224_UNUSED_BITS ((P224_WIDTH_MAX * sizeof(mbedtls_mpi_uint) * 8) - 224)
5475*b0563631STom Van Eyck
ecp_mod_p448(mbedtls_mpi * N)5476*b0563631STom Van Eyck static int ecp_mod_p448(mbedtls_mpi *N)
5477*b0563631STom Van Eyck {
5478*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5479*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(448) * 2;
5480*b0563631STom Van Eyck
5481*b0563631STom Van Eyck /* This is required as some tests and use cases do not pass in a Bignum of
5482*b0563631STom Van Eyck * the correct size, and expect the growth to be done automatically, which
5483*b0563631STom Van Eyck * will no longer happen. */
5484*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5485*b0563631STom Van Eyck
5486*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p448_raw(N->p, N->n);
5487*b0563631STom Van Eyck
5488*b0563631STom Van Eyck cleanup:
5489*b0563631STom Van Eyck return ret;
5490*b0563631STom Van Eyck }
5491*b0563631STom Van Eyck
5492*b0563631STom Van Eyck /*
5493*b0563631STom Van Eyck * Fast quasi-reduction modulo p448 = 2^448 - 2^224 - 1
5494*b0563631STom Van Eyck * Write X as A0 + 2^448 A1 and A1 as B0 + 2^224 B1, and return A0 + A1 + B1 +
5495*b0563631STom Van Eyck * (B0 + B1) * 2^224. This is different to the reference implementation of
5496*b0563631STom Van Eyck * Curve448, which uses its own special 56-bit limbs rather than a generic
5497*b0563631STom Van Eyck * bignum library. We could squeeze some extra speed out on 32-bit machines by
5498*b0563631STom Van Eyck * splitting N up into 32-bit limbs and doing the arithmetic using the limbs
5499*b0563631STom Van Eyck * directly as we do for the NIST primes above, but for 64-bit targets it should
5500*b0563631STom Van Eyck * use half the number of operations if we do the reduction with 224-bit limbs,
5501*b0563631STom Van Eyck * since mpi_core_add will then use 64-bit adds.
5502*b0563631STom Van Eyck */
5503*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p448_raw(mbedtls_mpi_uint * X,size_t X_limbs)5504*b0563631STom Van Eyck int mbedtls_ecp_mod_p448_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5505*b0563631STom Van Eyck {
5506*b0563631STom Van Eyck size_t round;
5507*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5508*b0563631STom Van Eyck
5509*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(448) * 2) {
5510*b0563631STom Van Eyck return 0;
5511*b0563631STom Van Eyck }
5512*b0563631STom Van Eyck
5513*b0563631STom Van Eyck size_t M_limbs = X_limbs - (P448_WIDTH);
5514*b0563631STom Van Eyck
5515*b0563631STom Van Eyck if (M_limbs > P448_WIDTH) {
5516*b0563631STom Van Eyck /* Shouldn't be called with X larger than 2^896! */
5517*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5518*b0563631STom Van Eyck }
5519*b0563631STom Van Eyck
5520*b0563631STom Van Eyck /* Both M and Q require an extra limb to catch carries. */
5521*b0563631STom Van Eyck M_limbs++;
5522*b0563631STom Van Eyck
5523*b0563631STom Van Eyck const size_t Q_limbs = M_limbs;
5524*b0563631STom Van Eyck mbedtls_mpi_uint *M = NULL;
5525*b0563631STom Van Eyck mbedtls_mpi_uint *Q = NULL;
5526*b0563631STom Van Eyck
5527*b0563631STom Van Eyck M = mbedtls_calloc(M_limbs, ciL);
5528*b0563631STom Van Eyck
5529*b0563631STom Van Eyck if (M == NULL) {
5530*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_ALLOC_FAILED;
5531*b0563631STom Van Eyck }
5532*b0563631STom Van Eyck
5533*b0563631STom Van Eyck Q = mbedtls_calloc(Q_limbs, ciL);
5534*b0563631STom Van Eyck
5535*b0563631STom Van Eyck if (Q == NULL) {
5536*b0563631STom Van Eyck ret = MBEDTLS_ERR_ECP_ALLOC_FAILED;
5537*b0563631STom Van Eyck goto cleanup;
5538*b0563631STom Van Eyck }
5539*b0563631STom Van Eyck
5540*b0563631STom Van Eyck /* M = A1 */
5541*b0563631STom Van Eyck memset(M, 0, (M_limbs * ciL));
5542*b0563631STom Van Eyck /* Do not copy into the overflow limb, as this would read past the end of
5543*b0563631STom Van Eyck * X. */
5544*b0563631STom Van Eyck memcpy(M, X + P448_WIDTH, ((M_limbs - 1) * ciL));
5545*b0563631STom Van Eyck
5546*b0563631STom Van Eyck /* X = A0 */
5547*b0563631STom Van Eyck memset(X + P448_WIDTH, 0, ((M_limbs - 1) * ciL));
5548*b0563631STom Van Eyck
5549*b0563631STom Van Eyck /* X = X + M = A0 + A1 */
5550*b0563631STom Van Eyck /* Carry here fits in oversize X. Oversize M means it will get
5551*b0563631STom Van Eyck * added in, not returned as carry. */
5552*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(X, X, M, M_limbs);
5553*b0563631STom Van Eyck
5554*b0563631STom Van Eyck /* Q = B1 = M >> 224 */
5555*b0563631STom Van Eyck memcpy(Q, (char *) M + P224_SIZE, P224_SIZE);
5556*b0563631STom Van Eyck memset((char *) Q + P224_SIZE, 0, P224_SIZE);
5557*b0563631STom Van Eyck
5558*b0563631STom Van Eyck /* X = X + Q = (A0 + A1) + B1
5559*b0563631STom Van Eyck * Oversize Q catches potential carry here when X is already max 448 bits.
5560*b0563631STom Van Eyck */
5561*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(X, X, Q, Q_limbs);
5562*b0563631STom Van Eyck
5563*b0563631STom Van Eyck /* M = B0 */
5564*b0563631STom Van Eyck #ifdef MBEDTLS_HAVE_INT64
5565*b0563631STom Van Eyck M[P224_WIDTH_MIN] &= ((mbedtls_mpi_uint)-1) >> (P224_UNUSED_BITS);
5566*b0563631STom Van Eyck #endif
5567*b0563631STom Van Eyck memset(M + P224_WIDTH_MAX, 0, ((M_limbs - P224_WIDTH_MAX) * ciL));
5568*b0563631STom Van Eyck
5569*b0563631STom Van Eyck /* M = M + Q = B0 + B1 */
5570*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(M, M, Q, Q_limbs);
5571*b0563631STom Van Eyck
5572*b0563631STom Van Eyck /* M = (B0 + B1) * 2^224 */
5573*b0563631STom Van Eyck /* Shifted carry bit from the addition fits in oversize M. */
5574*b0563631STom Van Eyck memmove((char *) M + P224_SIZE, M, P224_SIZE + ciL);
5575*b0563631STom Van Eyck memset(M, 0, P224_SIZE);
5576*b0563631STom Van Eyck
5577*b0563631STom Van Eyck /* X = X + M = (A0 + A1 + B1) + (B0 + B1) * 2^224 */
5578*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(X, X, M, M_limbs);
5579*b0563631STom Van Eyck
5580*b0563631STom Van Eyck /* In the second and third rounds A1 and B0 have at most 1 non-zero limb and
5581*b0563631STom Van Eyck * B1=0.
5582*b0563631STom Van Eyck * Using this we need to calculate:
5583*b0563631STom Van Eyck * A0 + A1 + B1 + (B0 + B1) * 2^224 = A0 + A1 + B0 * 2^224. */
5584*b0563631STom Van Eyck for (round = 0; round < 2; ++round) {
5585*b0563631STom Van Eyck
5586*b0563631STom Van Eyck /* M = A1 */
5587*b0563631STom Van Eyck memset(M, 0, (M_limbs * ciL));
5588*b0563631STom Van Eyck memcpy(M, X + P448_WIDTH, ((M_limbs - 1) * ciL));
5589*b0563631STom Van Eyck
5590*b0563631STom Van Eyck /* X = A0 */
5591*b0563631STom Van Eyck memset(X + P448_WIDTH, 0, ((M_limbs - 1) * ciL));
5592*b0563631STom Van Eyck
5593*b0563631STom Van Eyck /* M = A1 + B0 * 2^224
5594*b0563631STom Van Eyck * We know that only one limb of A1 will be non-zero and that it will be
5595*b0563631STom Van Eyck * limb 0. We also know that B0 is the bottom 224 bits of A1 (which is
5596*b0563631STom Van Eyck * then shifted up 224 bits), so, given M is currently A1 this turns
5597*b0563631STom Van Eyck * into:
5598*b0563631STom Van Eyck * M = M + (M << 224)
5599*b0563631STom Van Eyck * As the single non-zero limb in B0 will be A1 limb 0 shifted up by 224
5600*b0563631STom Van Eyck * bits, we can just move that into the right place, shifted up
5601*b0563631STom Van Eyck * accordingly.*/
5602*b0563631STom Van Eyck M[P224_WIDTH_MIN] = M[0] << (224 & (biL - 1));
5603*b0563631STom Van Eyck
5604*b0563631STom Van Eyck /* X = A0 + (A1 + B0 * 2^224) */
5605*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(X, X, M, M_limbs);
5606*b0563631STom Van Eyck }
5607*b0563631STom Van Eyck
5608*b0563631STom Van Eyck ret = 0;
5609*b0563631STom Van Eyck
5610*b0563631STom Van Eyck cleanup:
5611*b0563631STom Van Eyck mbedtls_free(M);
5612*b0563631STom Van Eyck mbedtls_free(Q);
5613*b0563631STom Van Eyck
5614*b0563631STom Van Eyck return ret;
5615*b0563631STom Van Eyck }
5616*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
5617*b0563631STom Van Eyck
5618*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) || \
5619*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) || \
5620*b0563631STom Van Eyck defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
5621*b0563631STom Van Eyck
5622*b0563631STom Van Eyck /*
5623*b0563631STom Van Eyck * Fast quasi-reduction modulo P = 2^s - R,
5624*b0563631STom Van Eyck * with R about 33 bits, used by the Koblitz curves.
5625*b0563631STom Van Eyck *
5626*b0563631STom Van Eyck * Write X as A0 + 2^224 A1, return A0 + R * A1.
5627*b0563631STom Van Eyck */
5628*b0563631STom Van Eyck #define P_KOBLITZ_R (8 / sizeof(mbedtls_mpi_uint)) // Limbs in R
5629*b0563631STom Van Eyck
ecp_mod_koblitz(mbedtls_mpi_uint * X,size_t X_limbs,mbedtls_mpi_uint * R,size_t bits)5630*b0563631STom Van Eyck static inline int ecp_mod_koblitz(mbedtls_mpi_uint *X,
5631*b0563631STom Van Eyck size_t X_limbs,
5632*b0563631STom Van Eyck mbedtls_mpi_uint *R,
5633*b0563631STom Van Eyck size_t bits)
5634*b0563631STom Van Eyck {
5635*b0563631STom Van Eyck int ret = 0;
5636*b0563631STom Van Eyck
5637*b0563631STom Van Eyck /* Determine if A1 is aligned to limb bitsize. If not then the used limbs
5638*b0563631STom Van Eyck * of P, A0 and A1 must be set accordingly and there is a middle limb
5639*b0563631STom Van Eyck * which is shared by A0 and A1 and need to handle accordingly.
5640*b0563631STom Van Eyck */
5641*b0563631STom Van Eyck size_t shift = bits % biL;
5642*b0563631STom Van Eyck size_t adjust = (shift + biL - 1) / biL;
5643*b0563631STom Van Eyck size_t P_limbs = bits / biL + adjust;
5644*b0563631STom Van Eyck
5645*b0563631STom Van Eyck mbedtls_mpi_uint *A1 = mbedtls_calloc(P_limbs, ciL);
5646*b0563631STom Van Eyck if (A1 == NULL) {
5647*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_ALLOC_FAILED;
5648*b0563631STom Van Eyck }
5649*b0563631STom Van Eyck
5650*b0563631STom Van Eyck /* Create a buffer to store the value of `R * A1` */
5651*b0563631STom Van Eyck size_t R_limbs = P_KOBLITZ_R;
5652*b0563631STom Van Eyck size_t M_limbs = P_limbs + R_limbs;
5653*b0563631STom Van Eyck mbedtls_mpi_uint *M = mbedtls_calloc(M_limbs, ciL);
5654*b0563631STom Van Eyck if (M == NULL) {
5655*b0563631STom Van Eyck ret = MBEDTLS_ERR_ECP_ALLOC_FAILED;
5656*b0563631STom Van Eyck goto cleanup;
5657*b0563631STom Van Eyck }
5658*b0563631STom Van Eyck
5659*b0563631STom Van Eyck mbedtls_mpi_uint mask = 0;
5660*b0563631STom Van Eyck if (adjust != 0) {
5661*b0563631STom Van Eyck mask = ((mbedtls_mpi_uint) 1 << shift) - 1;
5662*b0563631STom Van Eyck }
5663*b0563631STom Van Eyck
5664*b0563631STom Van Eyck /* Two passes are needed to reduce the value of `A0 + R * A1` and then
5665*b0563631STom Van Eyck * we need an additional one to reduce the possible overflow during
5666*b0563631STom Van Eyck * the addition.
5667*b0563631STom Van Eyck */
5668*b0563631STom Van Eyck for (size_t pass = 0; pass < 3; pass++) {
5669*b0563631STom Van Eyck /* Copy A1 */
5670*b0563631STom Van Eyck memcpy(A1, X + P_limbs - adjust, P_limbs * ciL);
5671*b0563631STom Van Eyck
5672*b0563631STom Van Eyck /* Shift A1 to be aligned */
5673*b0563631STom Van Eyck if (shift != 0) {
5674*b0563631STom Van Eyck mbedtls_mpi_core_shift_r(A1, P_limbs, shift);
5675*b0563631STom Van Eyck }
5676*b0563631STom Van Eyck
5677*b0563631STom Van Eyck /* Zeroize the A1 part of the shared limb */
5678*b0563631STom Van Eyck if (mask != 0) {
5679*b0563631STom Van Eyck X[P_limbs - 1] &= mask;
5680*b0563631STom Van Eyck }
5681*b0563631STom Van Eyck
5682*b0563631STom Van Eyck /* X = A0
5683*b0563631STom Van Eyck * Zeroize the A1 part of X to keep only the A0 part.
5684*b0563631STom Van Eyck */
5685*b0563631STom Van Eyck for (size_t i = P_limbs; i < X_limbs; i++) {
5686*b0563631STom Van Eyck X[i] = 0;
5687*b0563631STom Van Eyck }
5688*b0563631STom Van Eyck
5689*b0563631STom Van Eyck /* X = A0 + R * A1 */
5690*b0563631STom Van Eyck mbedtls_mpi_core_mul(M, A1, P_limbs, R, R_limbs);
5691*b0563631STom Van Eyck (void) mbedtls_mpi_core_add(X, X, M, P_limbs + R_limbs);
5692*b0563631STom Van Eyck
5693*b0563631STom Van Eyck /* Carry can not be generated since R is a 33-bit value and stored in
5694*b0563631STom Van Eyck * 64 bits. The result value of the multiplication is at most
5695*b0563631STom Van Eyck * P length + 33 bits in length and the result value of the addition
5696*b0563631STom Van Eyck * is at most P length + 34 bits in length. So the result of the
5697*b0563631STom Van Eyck * addition always fits in P length + 64 bits.
5698*b0563631STom Van Eyck */
5699*b0563631STom Van Eyck }
5700*b0563631STom Van Eyck
5701*b0563631STom Van Eyck cleanup:
5702*b0563631STom Van Eyck mbedtls_free(M);
5703*b0563631STom Van Eyck mbedtls_free(A1);
5704*b0563631STom Van Eyck
5705*b0563631STom Van Eyck return ret;
5706*b0563631STom Van Eyck }
5707*b0563631STom Van Eyck
5708*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED) ||
5709*b0563631STom Van Eyck MBEDTLS_ECP_DP_SECP224K1_ENABLED) ||
5710*b0563631STom Van Eyck MBEDTLS_ECP_DP_SECP256K1_ENABLED) */
5711*b0563631STom Van Eyck
5712*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
5713*b0563631STom Van Eyck
5714*b0563631STom Van Eyck /*
5715*b0563631STom Van Eyck * Fast quasi-reduction modulo p192k1 = 2^192 - R,
5716*b0563631STom Van Eyck * with R = 2^32 + 2^12 + 2^8 + 2^7 + 2^6 + 2^3 + 1 = 0x01000011C9
5717*b0563631STom Van Eyck */
ecp_mod_p192k1(mbedtls_mpi * N)5718*b0563631STom Van Eyck static int ecp_mod_p192k1(mbedtls_mpi *N)
5719*b0563631STom Van Eyck {
5720*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5721*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(192) * 2;
5722*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5723*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p192k1_raw(N->p, expected_width);
5724*b0563631STom Van Eyck
5725*b0563631STom Van Eyck cleanup:
5726*b0563631STom Van Eyck return ret;
5727*b0563631STom Van Eyck }
5728*b0563631STom Van Eyck
5729*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p192k1_raw(mbedtls_mpi_uint * X,size_t X_limbs)5730*b0563631STom Van Eyck int mbedtls_ecp_mod_p192k1_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5731*b0563631STom Van Eyck {
5732*b0563631STom Van Eyck static mbedtls_mpi_uint Rp[] = {
5733*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x11, 0x00, 0x00,
5734*b0563631STom Van Eyck 0x01, 0x00, 0x00, 0x00)
5735*b0563631STom Van Eyck };
5736*b0563631STom Van Eyck
5737*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(192) * 2) {
5738*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5739*b0563631STom Van Eyck }
5740*b0563631STom Van Eyck
5741*b0563631STom Van Eyck return ecp_mod_koblitz(X, X_limbs, Rp, 192);
5742*b0563631STom Van Eyck }
5743*b0563631STom Van Eyck
5744*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
5745*b0563631STom Van Eyck
5746*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
5747*b0563631STom Van Eyck
5748*b0563631STom Van Eyck /*
5749*b0563631STom Van Eyck * Fast quasi-reduction modulo p224k1 = 2^224 - R,
5750*b0563631STom Van Eyck * with R = 2^32 + 2^12 + 2^11 + 2^9 + 2^7 + 2^4 + 2 + 1 = 0x0100001A93
5751*b0563631STom Van Eyck */
ecp_mod_p224k1(mbedtls_mpi * N)5752*b0563631STom Van Eyck static int ecp_mod_p224k1(mbedtls_mpi *N)
5753*b0563631STom Van Eyck {
5754*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5755*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(224) * 2;
5756*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5757*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p224k1_raw(N->p, expected_width);
5758*b0563631STom Van Eyck
5759*b0563631STom Van Eyck cleanup:
5760*b0563631STom Van Eyck return ret;
5761*b0563631STom Van Eyck }
5762*b0563631STom Van Eyck
5763*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p224k1_raw(mbedtls_mpi_uint * X,size_t X_limbs)5764*b0563631STom Van Eyck int mbedtls_ecp_mod_p224k1_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5765*b0563631STom Van Eyck {
5766*b0563631STom Van Eyck static mbedtls_mpi_uint Rp[] = {
5767*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x1A, 0x00, 0x00,
5768*b0563631STom Van Eyck 0x01, 0x00, 0x00, 0x00)
5769*b0563631STom Van Eyck };
5770*b0563631STom Van Eyck
5771*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(224) * 2) {
5772*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5773*b0563631STom Van Eyck }
5774*b0563631STom Van Eyck
5775*b0563631STom Van Eyck return ecp_mod_koblitz(X, X_limbs, Rp, 224);
5776*b0563631STom Van Eyck }
5777*b0563631STom Van Eyck
5778*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
5779*b0563631STom Van Eyck
5780*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
5781*b0563631STom Van Eyck
5782*b0563631STom Van Eyck /*
5783*b0563631STom Van Eyck * Fast quasi-reduction modulo p256k1 = 2^256 - R,
5784*b0563631STom Van Eyck * with R = 2^32 + 2^9 + 2^8 + 2^7 + 2^6 + 2^4 + 1 = 0x01000003D1
5785*b0563631STom Van Eyck */
ecp_mod_p256k1(mbedtls_mpi * N)5786*b0563631STom Van Eyck static int ecp_mod_p256k1(mbedtls_mpi *N)
5787*b0563631STom Van Eyck {
5788*b0563631STom Van Eyck int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5789*b0563631STom Van Eyck size_t expected_width = BITS_TO_LIMBS(256) * 2;
5790*b0563631STom Van Eyck MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5791*b0563631STom Van Eyck ret = mbedtls_ecp_mod_p256k1_raw(N->p, expected_width);
5792*b0563631STom Van Eyck
5793*b0563631STom Van Eyck cleanup:
5794*b0563631STom Van Eyck return ret;
5795*b0563631STom Van Eyck }
5796*b0563631STom Van Eyck
5797*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p256k1_raw(mbedtls_mpi_uint * X,size_t X_limbs)5798*b0563631STom Van Eyck int mbedtls_ecp_mod_p256k1_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5799*b0563631STom Van Eyck {
5800*b0563631STom Van Eyck static mbedtls_mpi_uint Rp[] = {
5801*b0563631STom Van Eyck MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x03, 0x00, 0x00,
5802*b0563631STom Van Eyck 0x01, 0x00, 0x00, 0x00)
5803*b0563631STom Van Eyck };
5804*b0563631STom Van Eyck
5805*b0563631STom Van Eyck if (X_limbs != BITS_TO_LIMBS(256) * 2) {
5806*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5807*b0563631STom Van Eyck }
5808*b0563631STom Van Eyck
5809*b0563631STom Van Eyck return ecp_mod_koblitz(X, X_limbs, Rp, 256);
5810*b0563631STom Van Eyck }
5811*b0563631STom Van Eyck
5812*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
5813*b0563631STom Van Eyck
5814*b0563631STom Van Eyck #if defined(MBEDTLS_TEST_HOOKS)
5815*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_modulus_setup(mbedtls_mpi_mod_modulus * N,const mbedtls_ecp_group_id id,const mbedtls_ecp_modulus_type ctype)5816*b0563631STom Van Eyck int mbedtls_ecp_modulus_setup(mbedtls_mpi_mod_modulus *N,
5817*b0563631STom Van Eyck const mbedtls_ecp_group_id id,
5818*b0563631STom Van Eyck const mbedtls_ecp_modulus_type ctype)
5819*b0563631STom Van Eyck {
5820*b0563631STom Van Eyck mbedtls_mpi_modp_fn modp = NULL;
5821*b0563631STom Van Eyck mbedtls_mpi_uint *p = NULL;
5822*b0563631STom Van Eyck size_t p_limbs;
5823*b0563631STom Van Eyck
5824*b0563631STom Van Eyck if (!(ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE || \
5825*b0563631STom Van Eyck ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_SCALAR)) {
5826*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5827*b0563631STom Van Eyck }
5828*b0563631STom Van Eyck
5829*b0563631STom Van Eyck switch (id) {
5830*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
5831*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP192R1:
5832*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5833*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_NIST_OPTIM)
5834*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p192_raw;
5835*b0563631STom Van Eyck #endif
5836*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp192r1_p;
5837*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp192r1_p));
5838*b0563631STom Van Eyck } else {
5839*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp192r1_n;
5840*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp192r1_n));
5841*b0563631STom Van Eyck }
5842*b0563631STom Van Eyck break;
5843*b0563631STom Van Eyck #endif
5844*b0563631STom Van Eyck
5845*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
5846*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP224R1:
5847*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5848*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_NIST_OPTIM)
5849*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p224_raw;
5850*b0563631STom Van Eyck #endif
5851*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp224r1_p;
5852*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp224r1_p));
5853*b0563631STom Van Eyck } else {
5854*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp224r1_n;
5855*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp224r1_n));
5856*b0563631STom Van Eyck }
5857*b0563631STom Van Eyck break;
5858*b0563631STom Van Eyck #endif
5859*b0563631STom Van Eyck
5860*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
5861*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP256R1:
5862*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5863*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_NIST_OPTIM)
5864*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p256_raw;
5865*b0563631STom Van Eyck #endif
5866*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp256r1_p;
5867*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp256r1_p));
5868*b0563631STom Van Eyck } else {
5869*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp256r1_n;
5870*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp256r1_n));
5871*b0563631STom Van Eyck }
5872*b0563631STom Van Eyck break;
5873*b0563631STom Van Eyck #endif
5874*b0563631STom Van Eyck
5875*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
5876*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP384R1:
5877*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5878*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_NIST_OPTIM)
5879*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p384_raw;
5880*b0563631STom Van Eyck #endif
5881*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp384r1_p;
5882*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp384r1_p));
5883*b0563631STom Van Eyck } else {
5884*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp384r1_n;
5885*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp384r1_n));
5886*b0563631STom Van Eyck }
5887*b0563631STom Van Eyck break;
5888*b0563631STom Van Eyck #endif
5889*b0563631STom Van Eyck
5890*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
5891*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP521R1:
5892*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5893*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_NIST_OPTIM)
5894*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p521_raw;
5895*b0563631STom Van Eyck #endif
5896*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp521r1_p;
5897*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp521r1_p));
5898*b0563631STom Van Eyck } else {
5899*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp521r1_n;
5900*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp521r1_n));
5901*b0563631STom Van Eyck }
5902*b0563631STom Van Eyck break;
5903*b0563631STom Van Eyck #endif
5904*b0563631STom Van Eyck
5905*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
5906*b0563631STom Van Eyck case MBEDTLS_ECP_DP_BP256R1:
5907*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5908*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) brainpoolP256r1_p;
5909*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP256r1_p));
5910*b0563631STom Van Eyck } else {
5911*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) brainpoolP256r1_n;
5912*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP256r1_n));
5913*b0563631STom Van Eyck }
5914*b0563631STom Van Eyck break;
5915*b0563631STom Van Eyck #endif
5916*b0563631STom Van Eyck
5917*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
5918*b0563631STom Van Eyck case MBEDTLS_ECP_DP_BP384R1:
5919*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5920*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) brainpoolP384r1_p;
5921*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP384r1_p));
5922*b0563631STom Van Eyck } else {
5923*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) brainpoolP384r1_n;
5924*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP384r1_n));
5925*b0563631STom Van Eyck }
5926*b0563631STom Van Eyck break;
5927*b0563631STom Van Eyck #endif
5928*b0563631STom Van Eyck
5929*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
5930*b0563631STom Van Eyck case MBEDTLS_ECP_DP_BP512R1:
5931*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5932*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) brainpoolP512r1_p;
5933*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP512r1_p));
5934*b0563631STom Van Eyck } else {
5935*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) brainpoolP512r1_n;
5936*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP512r1_n));
5937*b0563631STom Van Eyck }
5938*b0563631STom Van Eyck break;
5939*b0563631STom Van Eyck #endif
5940*b0563631STom Van Eyck
5941*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
5942*b0563631STom Van Eyck case MBEDTLS_ECP_DP_CURVE25519:
5943*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5944*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p255_raw;
5945*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) curve25519_p;
5946*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(curve25519_p));
5947*b0563631STom Van Eyck } else {
5948*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) curve25519_n;
5949*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(curve25519_n));
5950*b0563631STom Van Eyck }
5951*b0563631STom Van Eyck break;
5952*b0563631STom Van Eyck #endif
5953*b0563631STom Van Eyck
5954*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
5955*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP192K1:
5956*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5957*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p192k1_raw;
5958*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp192k1_p;
5959*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp192k1_p));
5960*b0563631STom Van Eyck } else {
5961*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp192k1_n;
5962*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp192k1_n));
5963*b0563631STom Van Eyck }
5964*b0563631STom Van Eyck break;
5965*b0563631STom Van Eyck #endif
5966*b0563631STom Van Eyck
5967*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
5968*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP224K1:
5969*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5970*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p224k1_raw;
5971*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp224k1_p;
5972*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp224k1_p));
5973*b0563631STom Van Eyck } else {
5974*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp224k1_n;
5975*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp224k1_n));
5976*b0563631STom Van Eyck }
5977*b0563631STom Van Eyck break;
5978*b0563631STom Van Eyck #endif
5979*b0563631STom Van Eyck
5980*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
5981*b0563631STom Van Eyck case MBEDTLS_ECP_DP_SECP256K1:
5982*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5983*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p256k1_raw;
5984*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp256k1_p;
5985*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp256k1_p));
5986*b0563631STom Van Eyck } else {
5987*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) secp256k1_n;
5988*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(secp256k1_n));
5989*b0563631STom Van Eyck }
5990*b0563631STom Van Eyck break;
5991*b0563631STom Van Eyck #endif
5992*b0563631STom Van Eyck
5993*b0563631STom Van Eyck #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
5994*b0563631STom Van Eyck case MBEDTLS_ECP_DP_CURVE448:
5995*b0563631STom Van Eyck if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5996*b0563631STom Van Eyck modp = &mbedtls_ecp_mod_p448_raw;
5997*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) curve448_p;
5998*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(curve448_p));
5999*b0563631STom Van Eyck } else {
6000*b0563631STom Van Eyck p = (mbedtls_mpi_uint *) curve448_n;
6001*b0563631STom Van Eyck p_limbs = CHARS_TO_LIMBS(sizeof(curve448_n));
6002*b0563631STom Van Eyck }
6003*b0563631STom Van Eyck break;
6004*b0563631STom Van Eyck #endif
6005*b0563631STom Van Eyck
6006*b0563631STom Van Eyck default:
6007*b0563631STom Van Eyck case MBEDTLS_ECP_DP_NONE:
6008*b0563631STom Van Eyck return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
6009*b0563631STom Van Eyck }
6010*b0563631STom Van Eyck
6011*b0563631STom Van Eyck if (modp != NULL) {
6012*b0563631STom Van Eyck if (mbedtls_mpi_mod_optred_modulus_setup(N, p, p_limbs, modp)) {
6013*b0563631STom Van Eyck return MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
6014*b0563631STom Van Eyck }
6015*b0563631STom Van Eyck } else {
6016*b0563631STom Van Eyck if (mbedtls_mpi_mod_modulus_setup(N, p, p_limbs)) {
6017*b0563631STom Van Eyck return MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
6018*b0563631STom Van Eyck }
6019*b0563631STom Van Eyck }
6020*b0563631STom Van Eyck return 0;
6021*b0563631STom Van Eyck }
6022*b0563631STom Van Eyck #endif /* MBEDTLS_TEST_HOOKS */
6023*b0563631STom Van Eyck
6024*b0563631STom Van Eyck #if defined(MBEDTLS_TEST_HOOKS)
6025*b0563631STom Van Eyck
6026*b0563631STom Van Eyck MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_get_variant(void)6027*b0563631STom Van Eyck mbedtls_ecp_variant mbedtls_ecp_get_variant(void)
6028*b0563631STom Van Eyck {
6029*b0563631STom Van Eyck return MBEDTLS_ECP_VARIANT_WITH_MPI_UINT;
6030*b0563631STom Van Eyck }
6031*b0563631STom Van Eyck
6032*b0563631STom Van Eyck #endif /* MBEDTLS_TEST_HOOKS */
6033*b0563631STom Van Eyck
6034*b0563631STom Van Eyck #endif /* !MBEDTLS_ECP_ALT */
6035*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_LIGHT */
6036*b0563631STom Van Eyck #endif /* MBEDTLS_ECP_WITH_MPI_UINT */
6037