xref: /aosp_15_r20/external/mbedtls/library/ecp_curves_new.c (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi /*
2*62c56f98SSadaf Ebrahimi  *  Elliptic curves over GF(p): curve-specific data and functions
3*62c56f98SSadaf Ebrahimi  *
4*62c56f98SSadaf Ebrahimi  *  Copyright The Mbed TLS Contributors
5*62c56f98SSadaf Ebrahimi  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6*62c56f98SSadaf Ebrahimi  */
7*62c56f98SSadaf Ebrahimi 
8*62c56f98SSadaf Ebrahimi #include "common.h"
9*62c56f98SSadaf Ebrahimi 
10*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_WITH_MPI_UINT)
11*62c56f98SSadaf Ebrahimi 
12*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_LIGHT)
13*62c56f98SSadaf Ebrahimi 
14*62c56f98SSadaf Ebrahimi #include "mbedtls/ecp.h"
15*62c56f98SSadaf Ebrahimi #include "mbedtls/platform.h"
16*62c56f98SSadaf Ebrahimi #include "mbedtls/platform_util.h"
17*62c56f98SSadaf Ebrahimi #include "mbedtls/error.h"
18*62c56f98SSadaf Ebrahimi 
19*62c56f98SSadaf Ebrahimi #include "mbedtls/platform.h"
20*62c56f98SSadaf Ebrahimi 
21*62c56f98SSadaf Ebrahimi #include "constant_time_internal.h"
22*62c56f98SSadaf Ebrahimi 
23*62c56f98SSadaf Ebrahimi #include "bn_mul.h"
24*62c56f98SSadaf Ebrahimi #include "bignum_core.h"
25*62c56f98SSadaf Ebrahimi #include "ecp_invasive.h"
26*62c56f98SSadaf Ebrahimi 
27*62c56f98SSadaf Ebrahimi #include <string.h>
28*62c56f98SSadaf Ebrahimi 
29*62c56f98SSadaf Ebrahimi #if !defined(MBEDTLS_ECP_ALT)
30*62c56f98SSadaf Ebrahimi 
31*62c56f98SSadaf Ebrahimi /* Parameter validation macros based on platform_util.h */
32*62c56f98SSadaf Ebrahimi #define ECP_VALIDATE_RET(cond)    \
33*62c56f98SSadaf Ebrahimi     MBEDTLS_INTERNAL_VALIDATE_RET(cond, MBEDTLS_ERR_ECP_BAD_INPUT_DATA)
34*62c56f98SSadaf Ebrahimi #define ECP_VALIDATE(cond)        \
35*62c56f98SSadaf Ebrahimi     MBEDTLS_INTERNAL_VALIDATE(cond)
36*62c56f98SSadaf Ebrahimi 
37*62c56f98SSadaf Ebrahimi #define ECP_MPI_INIT(_p, _n) { .p = (mbedtls_mpi_uint *) (_p), .s = 1, .n = (_n) }
38*62c56f98SSadaf Ebrahimi 
39*62c56f98SSadaf Ebrahimi #define ECP_MPI_INIT_ARRAY(x)   \
40*62c56f98SSadaf Ebrahimi     ECP_MPI_INIT(x, sizeof(x) / sizeof(mbedtls_mpi_uint))
41*62c56f98SSadaf Ebrahimi 
42*62c56f98SSadaf Ebrahimi #define ECP_POINT_INIT_XY_Z0(x, y) { \
43*62c56f98SSadaf Ebrahimi         ECP_MPI_INIT_ARRAY(x), ECP_MPI_INIT_ARRAY(y), ECP_MPI_INIT(NULL, 0) }
44*62c56f98SSadaf Ebrahimi #define ECP_POINT_INIT_XY_Z1(x, y) { \
45*62c56f98SSadaf Ebrahimi         ECP_MPI_INIT_ARRAY(x), ECP_MPI_INIT_ARRAY(y), ECP_MPI_INIT(mpi_one, 1) }
46*62c56f98SSadaf Ebrahimi 
47*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) ||   \
48*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) ||   \
49*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) ||   \
50*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) ||   \
51*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) ||   \
52*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)   ||   \
53*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)   ||   \
54*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)   ||   \
55*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) ||   \
56*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) ||   \
57*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
58*62c56f98SSadaf Ebrahimi /* For these curves, we build the group parameters dynamically. */
59*62c56f98SSadaf Ebrahimi #define ECP_LOAD_GROUP
60*62c56f98SSadaf Ebrahimi static mbedtls_mpi_uint mpi_one[] = { 1 };
61*62c56f98SSadaf Ebrahimi #endif
62*62c56f98SSadaf Ebrahimi 
63*62c56f98SSadaf Ebrahimi /*
64*62c56f98SSadaf Ebrahimi  * Note: the constants are in little-endian order
65*62c56f98SSadaf Ebrahimi  * to be directly usable in MPIs
66*62c56f98SSadaf Ebrahimi  */
67*62c56f98SSadaf Ebrahimi 
68*62c56f98SSadaf Ebrahimi /*
69*62c56f98SSadaf Ebrahimi  * Domain parameters for secp192r1
70*62c56f98SSadaf Ebrahimi  */
71*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
72*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_p[] = {
73*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
74*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
75*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
76*62c56f98SSadaf Ebrahimi };
77*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_b[] = {
78*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xB9, 0x46, 0xC1, 0xEC, 0xDE, 0xB8, 0xFE),
79*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0x30, 0x24, 0x72, 0xAB, 0xE9, 0xA7, 0x0F),
80*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x80, 0x9C, 0xE5, 0x19, 0x05, 0x21, 0x64),
81*62c56f98SSadaf Ebrahimi };
82*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_gx[] = {
83*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x10, 0xFF, 0x82, 0xFD, 0x0A, 0xFF, 0xF4),
84*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x88, 0xA1, 0x43, 0xEB, 0x20, 0xBF, 0x7C),
85*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x90, 0x30, 0xB0, 0x0E, 0xA8, 0x8D, 0x18),
86*62c56f98SSadaf Ebrahimi };
87*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_gy[] = {
88*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x48, 0x79, 0x1E, 0xA1, 0x77, 0xF9, 0x73),
89*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xCD, 0x24, 0x6B, 0xED, 0x11, 0x10, 0x63),
90*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xDA, 0xC8, 0xFF, 0x95, 0x2B, 0x19, 0x07),
91*62c56f98SSadaf Ebrahimi };
92*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_n[] = {
93*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x28, 0xD2, 0xB4, 0xB1, 0xC9, 0x6B, 0x14),
94*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xF8, 0xDE, 0x99, 0xFF, 0xFF, 0xFF, 0xFF),
95*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
96*62c56f98SSadaf Ebrahimi };
97*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
98*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_0_X[] = {
99*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x10, 0xFF, 0x82, 0xFD, 0x0A, 0xFF, 0xF4),
100*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x88, 0xA1, 0x43, 0xEB, 0x20, 0xBF, 0x7C),
101*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x90, 0x30, 0xB0, 0x0E, 0xA8, 0x8D, 0x18),
102*62c56f98SSadaf Ebrahimi };
103*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_0_Y[] = {
104*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x48, 0x79, 0x1E, 0xA1, 0x77, 0xF9, 0x73),
105*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xCD, 0x24, 0x6B, 0xED, 0x11, 0x10, 0x63),
106*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xDA, 0xC8, 0xFF, 0x95, 0x2B, 0x19, 0x07),
107*62c56f98SSadaf Ebrahimi };
108*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_1_X[] = {
109*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x9E, 0xE3, 0x60, 0x59, 0xD1, 0xC4, 0xC2),
110*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xBD, 0x22, 0xD7, 0x2D, 0x07, 0xBD, 0xB6),
111*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x2A, 0xCF, 0x33, 0xF0, 0xBE, 0xD1, 0xED),
112*62c56f98SSadaf Ebrahimi };
113*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_1_Y[] = {
114*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x71, 0x4B, 0xA8, 0xED, 0x7E, 0xC9, 0x1A),
115*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x2A, 0xF6, 0xDF, 0x0E, 0xE8, 0x4C, 0x0F),
116*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x35, 0xF7, 0x8A, 0xC3, 0xEC, 0xDE, 0x1E),
117*62c56f98SSadaf Ebrahimi };
118*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_2_X[] = {
119*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x67, 0xC2, 0x1D, 0x32, 0x8F, 0x10, 0xFB),
120*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x2D, 0x17, 0xF3, 0xE4, 0xFE, 0xD8, 0x13),
121*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x45, 0x10, 0x70, 0x2C, 0x3E, 0x52, 0x3E),
122*62c56f98SSadaf Ebrahimi };
123*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_2_Y[] = {
124*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xF1, 0x04, 0x5D, 0xEE, 0xD4, 0x56, 0xE6),
125*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xB7, 0x38, 0x27, 0x61, 0xAA, 0x81, 0x87),
126*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x37, 0xD7, 0x0E, 0x29, 0x0E, 0x11, 0x14),
127*62c56f98SSadaf Ebrahimi };
128*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_3_X[] = {
129*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x35, 0x52, 0xC6, 0x31, 0xB7, 0x27, 0xF5),
130*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xD4, 0x15, 0x98, 0x0F, 0xE7, 0xF3, 0x6A),
131*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x31, 0x70, 0x35, 0x09, 0xA0, 0x2B, 0xC2),
132*62c56f98SSadaf Ebrahimi };
133*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_3_Y[] = {
134*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x75, 0xA7, 0x4C, 0x88, 0xCF, 0x5B, 0xE4),
135*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x17, 0x48, 0x8D, 0xF2, 0xF0, 0x86, 0xED),
136*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xCF, 0xFE, 0x6B, 0xB0, 0xA5, 0x06, 0xAB),
137*62c56f98SSadaf Ebrahimi };
138*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_4_X[] = {
139*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x6A, 0xDC, 0x9A, 0x6D, 0x7B, 0x47, 0x2E),
140*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0xFC, 0x51, 0x12, 0x62, 0x66, 0x0B, 0x59),
141*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x40, 0x93, 0xA0, 0xB5, 0x5A, 0x58, 0xD7),
142*62c56f98SSadaf Ebrahimi };
143*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_4_Y[] = {
144*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0xCB, 0xAF, 0xDC, 0x0B, 0xA1, 0x26, 0xFB),
145*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x36, 0x9D, 0xA3, 0xD7, 0x3B, 0xAD, 0x39),
146*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x3B, 0x05, 0x9A, 0xA8, 0xAA, 0x69, 0xB2),
147*62c56f98SSadaf Ebrahimi };
148*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_5_X[] = {
149*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xD9, 0xD1, 0x4D, 0x4A, 0x6E, 0x96, 0x1E),
150*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x66, 0x32, 0x39, 0xC6, 0x57, 0x7D, 0xE6),
151*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xA0, 0x36, 0xC2, 0x45, 0xF9, 0x00, 0x62),
152*62c56f98SSadaf Ebrahimi };
153*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_5_Y[] = {
154*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xEF, 0x59, 0x46, 0xDC, 0x60, 0xD9, 0x8F),
155*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xB0, 0xE9, 0x41, 0xA4, 0x87, 0x76, 0x89),
156*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0xD4, 0x0E, 0xB2, 0xFA, 0x16, 0x56, 0xDC),
157*62c56f98SSadaf Ebrahimi };
158*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_6_X[] = {
159*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x62, 0xD2, 0xB1, 0x34, 0xB2, 0xF1, 0x06),
160*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xED, 0x55, 0xC5, 0x47, 0xB5, 0x07, 0x15),
161*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xF6, 0x2F, 0x94, 0xC3, 0xDD, 0x54, 0x2F),
162*62c56f98SSadaf Ebrahimi };
163*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_6_Y[] = {
164*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xA6, 0xD4, 0x8C, 0xA9, 0xCE, 0x4D, 0x2E),
165*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x4B, 0x46, 0xCC, 0xB2, 0x55, 0xC8, 0xB2),
166*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xAE, 0x31, 0xED, 0x89, 0x65, 0x59, 0x55),
167*62c56f98SSadaf Ebrahimi };
168*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_7_X[] = {
169*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x0A, 0xD1, 0x1A, 0xC5, 0xF6, 0xEA, 0x43),
170*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xFC, 0x0C, 0x1A, 0xFB, 0xA0, 0xC8, 0x70),
171*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xFD, 0x53, 0x6F, 0x6D, 0xBF, 0xBA, 0xAF),
172*62c56f98SSadaf Ebrahimi };
173*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_7_Y[] = {
174*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xB0, 0x7D, 0x83, 0x96, 0xE3, 0xCB, 0x9D),
175*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x6E, 0x55, 0x2C, 0x20, 0x53, 0x2F, 0x46),
176*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0x66, 0x00, 0x17, 0x08, 0xFE, 0xAC, 0x31),
177*62c56f98SSadaf Ebrahimi };
178*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_8_X[] = {
179*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x12, 0x97, 0x3A, 0xC7, 0x57, 0x45, 0xCD),
180*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x25, 0x99, 0x00, 0xF6, 0x97, 0xB4, 0x64),
181*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x74, 0xE6, 0xE6, 0xA3, 0xDF, 0x9C, 0xCC),
182*62c56f98SSadaf Ebrahimi };
183*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_8_Y[] = {
184*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xF4, 0x76, 0xD5, 0x5F, 0x2A, 0xFD, 0x85),
185*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x80, 0x7E, 0x3E, 0xE5, 0xE8, 0xD6, 0x63),
186*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xAD, 0x1E, 0x70, 0x79, 0x3E, 0x3D, 0x83),
187*62c56f98SSadaf Ebrahimi };
188*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_9_X[] = {
189*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x15, 0xBB, 0xB3, 0x42, 0x6A, 0xA1, 0x7C),
190*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x58, 0xCB, 0x43, 0x25, 0x00, 0x14, 0x68),
191*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x4E, 0x93, 0x11, 0xE0, 0x32, 0x54, 0x98),
192*62c56f98SSadaf Ebrahimi };
193*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_9_Y[] = {
194*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x52, 0xA2, 0xB4, 0x57, 0x32, 0xB9, 0x11),
195*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x43, 0xA1, 0xB1, 0xFB, 0x01, 0xE1, 0xE7),
196*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xFB, 0x5A, 0x11, 0xB8, 0xC2, 0x03, 0xE5),
197*62c56f98SSadaf Ebrahimi };
198*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_10_X[] = {
199*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x2B, 0x71, 0x26, 0x4E, 0x7C, 0xC5, 0x32),
200*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xF5, 0xD3, 0xA8, 0xE4, 0x95, 0x48, 0x65),
201*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xAE, 0xD9, 0x5D, 0x9F, 0x6A, 0x22, 0xAD),
202*62c56f98SSadaf Ebrahimi };
203*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_10_Y[] = {
204*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0xCC, 0xA3, 0x4D, 0xA0, 0x1C, 0x34, 0xEF),
205*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x3C, 0x62, 0xF8, 0x5E, 0xA6, 0x58, 0x7D),
206*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x6E, 0x66, 0x8A, 0x3D, 0x17, 0xFF, 0x0F),
207*62c56f98SSadaf Ebrahimi };
208*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_11_X[] = {
209*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xCD, 0xA8, 0xDD, 0xD1, 0x20, 0x5C, 0xEA),
210*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0xFE, 0x17, 0xE2, 0xCF, 0xEA, 0x63, 0xDE),
211*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x51, 0xC9, 0x16, 0xDE, 0xB4, 0xB2, 0xDD),
212*62c56f98SSadaf Ebrahimi };
213*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_11_Y[] = {
214*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xBE, 0x12, 0xD7, 0xA3, 0x0A, 0x50, 0x33),
215*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0x87, 0xC5, 0x8A, 0x76, 0x57, 0x07, 0x60),
216*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x1F, 0xC6, 0x1B, 0x66, 0xC4, 0x3D, 0x8A),
217*62c56f98SSadaf Ebrahimi };
218*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_12_X[] = {
219*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xA4, 0x85, 0x13, 0x8F, 0xA7, 0x35, 0x19),
220*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x0D, 0xFD, 0xFF, 0x1B, 0xD1, 0xD6, 0xEF),
221*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x7A, 0xD0, 0xC3, 0xB4, 0xEF, 0x39, 0x66),
222*62c56f98SSadaf Ebrahimi };
223*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_12_Y[] = {
224*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xFE, 0xA5, 0x9C, 0x34, 0x30, 0x49, 0x40),
225*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0xC5, 0x39, 0x26, 0x06, 0xE3, 0x01, 0x17),
226*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x2B, 0x66, 0xFC, 0x95, 0x5F, 0x35, 0xF7),
227*62c56f98SSadaf Ebrahimi };
228*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_13_X[] = {
229*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xCF, 0x54, 0x63, 0x99, 0x57, 0x05, 0x45),
230*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x6F, 0x00, 0x5F, 0x65, 0x08, 0x47, 0x98),
231*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x2A, 0x90, 0x6D, 0x67, 0xC6, 0xBC, 0x45),
232*62c56f98SSadaf Ebrahimi };
233*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_13_Y[] = {
234*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x4D, 0x88, 0x0A, 0x35, 0x9E, 0x33, 0x9C),
235*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x17, 0x0C, 0xF8, 0xE1, 0x7A, 0x49, 0x02),
236*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x44, 0x06, 0x8F, 0x0B, 0x70, 0x2F, 0x71),
237*62c56f98SSadaf Ebrahimi };
238*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_14_X[] = {
239*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x4B, 0xCB, 0xF9, 0x8E, 0x6A, 0xDA, 0x1B),
240*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x43, 0xA1, 0x3F, 0xCE, 0x17, 0xD2, 0x32),
241*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x0D, 0xD2, 0x6C, 0x82, 0x37, 0xE5, 0xFC),
242*62c56f98SSadaf Ebrahimi };
243*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_14_Y[] = {
244*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x3C, 0xF4, 0x92, 0xB4, 0x8A, 0x95, 0x85),
245*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x96, 0xF1, 0x0A, 0x34, 0x2F, 0x74, 0x7E),
246*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xA1, 0xAA, 0xBA, 0x86, 0x77, 0x4F, 0xA2),
247*62c56f98SSadaf Ebrahimi };
248*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_15_X[] = {
249*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x7F, 0xEF, 0x60, 0x50, 0x80, 0xD7, 0xD4),
250*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0xAC, 0xC9, 0xFE, 0xEC, 0x0A, 0x1A, 0x9F),
251*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x2F, 0xBE, 0x91, 0xD7, 0xB7, 0x38, 0x48),
252*62c56f98SSadaf Ebrahimi };
253*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192r1_T_15_Y[] = {
254*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xAE, 0x85, 0x98, 0xFE, 0x05, 0x7F, 0x9F),
255*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xBE, 0xFD, 0x11, 0x31, 0x3D, 0x14, 0x13),
256*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x75, 0xE8, 0x30, 0x01, 0xCB, 0x9B, 0x1C),
257*62c56f98SSadaf Ebrahimi };
258*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp192r1_T[16] = {
259*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp192r1_T_0_X, secp192r1_T_0_Y),
260*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_1_X, secp192r1_T_1_Y),
261*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_2_X, secp192r1_T_2_Y),
262*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_3_X, secp192r1_T_3_Y),
263*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_4_X, secp192r1_T_4_Y),
264*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_5_X, secp192r1_T_5_Y),
265*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_6_X, secp192r1_T_6_Y),
266*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_7_X, secp192r1_T_7_Y),
267*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_8_X, secp192r1_T_8_Y),
268*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_9_X, secp192r1_T_9_Y),
269*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_10_X, secp192r1_T_10_Y),
270*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_11_X, secp192r1_T_11_Y),
271*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_12_X, secp192r1_T_12_Y),
272*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_13_X, secp192r1_T_13_Y),
273*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_14_X, secp192r1_T_14_Y),
274*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192r1_T_15_X, secp192r1_T_15_Y),
275*62c56f98SSadaf Ebrahimi };
276*62c56f98SSadaf Ebrahimi #else
277*62c56f98SSadaf Ebrahimi #define secp192r1_T NULL
278*62c56f98SSadaf Ebrahimi #endif
279*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
280*62c56f98SSadaf Ebrahimi 
281*62c56f98SSadaf Ebrahimi /*
282*62c56f98SSadaf Ebrahimi  * Domain parameters for secp224r1
283*62c56f98SSadaf Ebrahimi  */
284*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
285*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_p[] = {
286*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
287*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
288*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
289*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00),
290*62c56f98SSadaf Ebrahimi };
291*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_b[] = {
292*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xFF, 0x55, 0x23, 0x43, 0x39, 0x0B, 0x27),
293*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xD8, 0xBF, 0xD7, 0xB7, 0xB0, 0x44, 0x50),
294*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0x32, 0x41, 0xF5, 0xAB, 0xB3, 0x04, 0x0C),
295*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_4(0x85, 0x0A, 0x05, 0xB4),
296*62c56f98SSadaf Ebrahimi };
297*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_gx[] = {
298*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x1D, 0x5C, 0x11, 0xD6, 0x80, 0x32, 0x34),
299*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x11, 0xC2, 0x56, 0xD3, 0xC1, 0x03, 0x4A),
300*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x90, 0x13, 0x32, 0x7F, 0xBF, 0xB4, 0x6B),
301*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_4(0xBD, 0x0C, 0x0E, 0xB7),
302*62c56f98SSadaf Ebrahimi };
303*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_gy[] = {
304*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x7E, 0x00, 0x85, 0x99, 0x81, 0xD5, 0x44),
305*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x47, 0x07, 0x5A, 0xA0, 0x75, 0x43, 0xCD),
306*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xDF, 0x22, 0x4C, 0xFB, 0x23, 0xF7, 0xB5),
307*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_4(0x88, 0x63, 0x37, 0xBD),
308*62c56f98SSadaf Ebrahimi };
309*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_n[] = {
310*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x2A, 0x5C, 0x5C, 0x45, 0x29, 0xDD, 0x13),
311*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xF0, 0xB8, 0xE0, 0xA2, 0x16, 0xFF, 0xFF),
312*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
313*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_4(0xFF, 0xFF, 0xFF, 0xFF),
314*62c56f98SSadaf Ebrahimi };
315*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
316*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_0_X[] = {
317*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x1D, 0x5C, 0x11, 0xD6, 0x80, 0x32, 0x34),
318*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x11, 0xC2, 0x56, 0xD3, 0xC1, 0x03, 0x4A),
319*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x90, 0x13, 0x32, 0x7F, 0xBF, 0xB4, 0x6B),
320*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x0C, 0x0E, 0xB7, 0x00, 0x00, 0x00, 0x00),
321*62c56f98SSadaf Ebrahimi };
322*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_0_Y[] = {
323*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x7E, 0x00, 0x85, 0x99, 0x81, 0xD5, 0x44),
324*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x47, 0x07, 0x5A, 0xA0, 0x75, 0x43, 0xCD),
325*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xDF, 0x22, 0x4C, 0xFB, 0x23, 0xF7, 0xB5),
326*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x63, 0x37, 0xBD, 0x00, 0x00, 0x00, 0x00),
327*62c56f98SSadaf Ebrahimi };
328*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_1_X[] = {
329*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xF9, 0xB8, 0xD0, 0x3D, 0xD2, 0xD3, 0xFA),
330*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xFD, 0x99, 0x26, 0x19, 0xFE, 0x13, 0x6E),
331*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x0E, 0x4C, 0x48, 0x7C, 0xA2, 0x17, 0x01),
332*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xA3, 0x13, 0x57, 0x00, 0x00, 0x00, 0x00),
333*62c56f98SSadaf Ebrahimi };
334*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_1_Y[] = {
335*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x16, 0x5C, 0x8F, 0xAA, 0xED, 0x0F, 0x58),
336*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0xC5, 0x43, 0x34, 0x93, 0x05, 0x2A, 0x4C),
337*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0xE3, 0x6C, 0xCA, 0xC6, 0x14, 0xC2, 0x25),
338*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x43, 0x6C, 0xD7, 0x00, 0x00, 0x00, 0x00),
339*62c56f98SSadaf Ebrahimi };
340*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_2_X[] = {
341*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x5A, 0x98, 0x1E, 0xC8, 0xA5, 0x42, 0xA3),
342*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x49, 0x56, 0x78, 0xF8, 0xEF, 0xED, 0x65),
343*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0xBB, 0x64, 0xB6, 0x4C, 0x54, 0x5F, 0xD1),
344*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x0C, 0x33, 0xCC, 0x00, 0x00, 0x00, 0x00),
345*62c56f98SSadaf Ebrahimi };
346*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_2_Y[] = {
347*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x79, 0xCB, 0x2E, 0x08, 0xFF, 0xD8, 0xE6),
348*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0x1F, 0xD4, 0xD7, 0x57, 0xE9, 0x39, 0x45),
349*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xD6, 0x3B, 0x0A, 0x1C, 0x87, 0xB7, 0x6A),
350*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x30, 0xD8, 0x05, 0x00, 0x00, 0x00, 0x00),
351*62c56f98SSadaf Ebrahimi };
352*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_3_X[] = {
353*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x79, 0x74, 0x9A, 0xE6, 0xBB, 0xC2, 0xC2),
354*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x5B, 0xA6, 0x67, 0xC1, 0x91, 0xE7, 0x64),
355*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xDF, 0x38, 0x82, 0x19, 0x2C, 0x4C, 0xCA),
356*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x2E, 0x39, 0xC5, 0x00, 0x00, 0x00, 0x00),
357*62c56f98SSadaf Ebrahimi };
358*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_3_Y[] = {
359*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x36, 0x78, 0x4E, 0xAE, 0x5B, 0x02, 0x76),
360*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xF6, 0x8B, 0xF8, 0xF4, 0x92, 0x6B, 0x42),
361*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x4D, 0x71, 0x35, 0xE7, 0x0C, 0x2C, 0x98),
362*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xA5, 0x1F, 0xAE, 0x00, 0x00, 0x00, 0x00),
363*62c56f98SSadaf Ebrahimi };
364*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_4_X[] = {
365*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x1C, 0x4B, 0xDF, 0x5B, 0xF2, 0x51, 0xB7),
366*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x74, 0xB1, 0x5A, 0xC6, 0x0F, 0x0E, 0x61),
367*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x24, 0x09, 0x62, 0xAF, 0xFC, 0xDB, 0x45),
368*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0xE1, 0x80, 0x55, 0x00, 0x00, 0x00, 0x00),
369*62c56f98SSadaf Ebrahimi };
370*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_4_Y[] = {
371*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x82, 0xFE, 0xAD, 0xC3, 0xE5, 0xCF, 0xD8),
372*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xA2, 0x62, 0x17, 0x76, 0xF0, 0x5A, 0xFA),
373*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xB8, 0xE5, 0xAC, 0xB7, 0x66, 0x38, 0xAA),
374*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0xFD, 0x86, 0x05, 0x00, 0x00, 0x00, 0x00),
375*62c56f98SSadaf Ebrahimi };
376*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_5_X[] = {
377*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xD3, 0x0C, 0x3C, 0xD1, 0x66, 0xB0, 0xF1),
378*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x59, 0xB4, 0x8D, 0x90, 0x10, 0xB7, 0xA2),
379*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x47, 0x9B, 0xE6, 0x55, 0x8A, 0xE4, 0xEE),
380*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x49, 0xDB, 0x78, 0x00, 0x00, 0x00, 0x00),
381*62c56f98SSadaf Ebrahimi };
382*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_5_Y[] = {
383*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x97, 0xED, 0xDE, 0xFF, 0xB3, 0xDF, 0x48),
384*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xB9, 0x83, 0xB7, 0xEB, 0xBE, 0x40, 0x8D),
385*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xD3, 0xD3, 0xCD, 0x0E, 0x82, 0x79, 0x3D),
386*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x83, 0x1B, 0xF0, 0x00, 0x00, 0x00, 0x00),
387*62c56f98SSadaf Ebrahimi };
388*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_6_X[] = {
389*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x22, 0xBB, 0x54, 0xD3, 0x31, 0x56, 0xFC),
390*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x36, 0xE5, 0xE0, 0x89, 0x96, 0x8E, 0x71),
391*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0xEF, 0x0A, 0xED, 0xD0, 0x11, 0x4A, 0xFF),
392*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x00, 0x57, 0x27, 0x00, 0x00, 0x00, 0x00),
393*62c56f98SSadaf Ebrahimi };
394*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_6_Y[] = {
395*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0xCA, 0x3D, 0xF7, 0x64, 0x9B, 0x6E, 0x85),
396*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xE3, 0x70, 0x6B, 0x41, 0xD7, 0xED, 0x8F),
397*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x44, 0x44, 0x80, 0xCE, 0x13, 0x37, 0x92),
398*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x73, 0x80, 0x79, 0x00, 0x00, 0x00, 0x00),
399*62c56f98SSadaf Ebrahimi };
400*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_7_X[] = {
401*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x4D, 0x70, 0x7D, 0x31, 0x0F, 0x1C, 0x58),
402*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x35, 0x88, 0x47, 0xC4, 0x24, 0x78, 0x3F),
403*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xF0, 0xCD, 0x91, 0x81, 0xB3, 0xDE, 0xB6),
404*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xCE, 0xC6, 0xF7, 0x00, 0x00, 0x00, 0x00),
405*62c56f98SSadaf Ebrahimi };
406*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_7_Y[] = {
407*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x9C, 0x2D, 0xE8, 0xD2, 0x00, 0x8F, 0x10),
408*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x5E, 0x7C, 0x0E, 0x0C, 0x6E, 0x58, 0x02),
409*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x81, 0x21, 0xCE, 0x43, 0xF4, 0x24, 0x3D),
410*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0xBC, 0xF0, 0xF4, 0x00, 0x00, 0x00, 0x00),
411*62c56f98SSadaf Ebrahimi };
412*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_8_X[] = {
413*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x10, 0xC2, 0x74, 0x4A, 0x8F, 0x8A, 0xCF),
414*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x67, 0xF4, 0x2B, 0x38, 0x2B, 0x35, 0x17),
415*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xE7, 0x0C, 0xA9, 0xFA, 0x77, 0x5C, 0xBD),
416*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x33, 0x19, 0x2B, 0x00, 0x00, 0x00, 0x00),
417*62c56f98SSadaf Ebrahimi };
418*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_8_Y[] = {
419*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x3E, 0x96, 0x22, 0x53, 0xE1, 0xE9, 0xBE),
420*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x13, 0xBC, 0xA1, 0x16, 0xEC, 0x01, 0x1A),
421*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x00, 0xC9, 0x7A, 0xC3, 0x73, 0xA5, 0x45),
422*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0xF4, 0x5E, 0xC1, 0x00, 0x00, 0x00, 0x00),
423*62c56f98SSadaf Ebrahimi };
424*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_9_X[] = {
425*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x95, 0xD6, 0xD9, 0x32, 0x30, 0x2B, 0xD0),
426*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x42, 0x09, 0x05, 0x61, 0x2A, 0x7E, 0x82),
427*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x84, 0xA2, 0x05, 0x88, 0x64, 0x65, 0xF9),
428*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x2D, 0x90, 0xB3, 0x00, 0x00, 0x00, 0x00),
429*62c56f98SSadaf Ebrahimi };
430*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_9_Y[] = {
431*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xE7, 0x2E, 0x85, 0x55, 0x80, 0x7C, 0x79),
432*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xC1, 0xAC, 0x78, 0xB4, 0xAF, 0xFB, 0x6E),
433*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0xC3, 0x28, 0x8E, 0x79, 0x18, 0x1F, 0x58),
434*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x46, 0xCF, 0x49, 0x00, 0x00, 0x00, 0x00),
435*62c56f98SSadaf Ebrahimi };
436*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_10_X[] = {
437*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x5F, 0xA8, 0x6C, 0x46, 0x83, 0x43, 0xFA),
438*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xA9, 0x93, 0x11, 0xB6, 0x07, 0x57, 0x74),
439*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x2A, 0x9D, 0x03, 0x89, 0x7E, 0xD7, 0x3C),
440*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x8C, 0x62, 0xCF, 0x00, 0x00, 0x00, 0x00),
441*62c56f98SSadaf Ebrahimi };
442*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_10_Y[] = {
443*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0x2C, 0x13, 0x59, 0xCC, 0xFA, 0x84, 0x9E),
444*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xB9, 0x48, 0xBC, 0x57, 0xC7, 0xB3, 0x7C),
445*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x0A, 0x38, 0x24, 0x2E, 0x3A, 0x28, 0x25),
446*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x0A, 0x43, 0xB8, 0x00, 0x00, 0x00, 0x00),
447*62c56f98SSadaf Ebrahimi };
448*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_11_X[] = {
449*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x25, 0xAB, 0xC1, 0xEE, 0x70, 0x3C, 0xE1),
450*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0xDB, 0x45, 0x1D, 0x4A, 0x80, 0x75, 0x35),
451*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x1F, 0x4D, 0x2D, 0x9A, 0x05, 0xF4, 0xCB),
452*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x10, 0xF0, 0x5A, 0x00, 0x00, 0x00, 0x00),
453*62c56f98SSadaf Ebrahimi };
454*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_11_Y[] = {
455*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x95, 0xE1, 0xDC, 0x15, 0x86, 0xC3, 0x7B),
456*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0xDC, 0x27, 0xD1, 0x56, 0xA1, 0x14, 0x0D),
457*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x0B, 0xD6, 0x77, 0x4E, 0x44, 0xA2, 0xF8),
458*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x42, 0x71, 0x1F, 0x00, 0x00, 0x00, 0x00),
459*62c56f98SSadaf Ebrahimi };
460*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_12_X[] = {
461*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x86, 0xB2, 0xB0, 0xC8, 0x2F, 0x7B, 0xFE),
462*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xEF, 0xCB, 0xDB, 0xBC, 0x9E, 0x3B, 0xC5),
463*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x03, 0x86, 0xDD, 0x5B, 0xF5, 0x8D, 0x46),
464*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x95, 0x79, 0xD6, 0x00, 0x00, 0x00, 0x00),
465*62c56f98SSadaf Ebrahimi };
466*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_12_Y[] = {
467*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x32, 0x14, 0xDA, 0x9B, 0x4F, 0x07, 0x39),
468*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x3E, 0xFB, 0x06, 0xEE, 0xA7, 0x40, 0x40),
469*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x1F, 0xDF, 0x71, 0x61, 0xFD, 0x8B, 0xBE),
470*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x8B, 0xAB, 0x8B, 0x00, 0x00, 0x00, 0x00),
471*62c56f98SSadaf Ebrahimi };
472*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_13_X[] = {
473*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x34, 0xB3, 0xB4, 0xBC, 0x9F, 0xB0, 0x5E),
474*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x58, 0x48, 0xA8, 0x77, 0xBB, 0x13, 0x2F),
475*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xC6, 0xF7, 0x34, 0xCC, 0x89, 0x21, 0x0A),
476*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x33, 0xDD, 0x1F, 0x00, 0x00, 0x00, 0x00),
477*62c56f98SSadaf Ebrahimi };
478*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_13_Y[] = {
479*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x81, 0xEF, 0xA4, 0xF2, 0x10, 0x0B, 0xCD),
480*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xF7, 0x6E, 0x72, 0x4A, 0xDF, 0xDD, 0xE8),
481*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x23, 0x0A, 0x53, 0x03, 0x16, 0x62, 0xD2),
482*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x76, 0xFD, 0x3C, 0x00, 0x00, 0x00, 0x00),
483*62c56f98SSadaf Ebrahimi };
484*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_14_X[] = {
485*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x14, 0xA1, 0xFA, 0xA0, 0x18, 0xBE, 0x07),
486*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x2A, 0xE1, 0xD7, 0xB0, 0x6C, 0xA0, 0xDE),
487*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xC0, 0xB0, 0xC6, 0x63, 0x24, 0xCD, 0x4E),
488*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x38, 0x2C, 0xB1, 0x00, 0x00, 0x00, 0x00),
489*62c56f98SSadaf Ebrahimi };
490*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_14_Y[] = {
491*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xCD, 0x7D, 0x20, 0x0C, 0xFE, 0xAC, 0xC3),
492*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x97, 0x9F, 0xA2, 0xB6, 0x45, 0xF7, 0x7B),
493*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x99, 0xF3, 0xD2, 0x20, 0x02, 0xEB, 0x04),
494*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x18, 0x5B, 0x7B, 0x00, 0x00, 0x00, 0x00),
495*62c56f98SSadaf Ebrahimi };
496*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_15_X[] = {
497*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xDD, 0x77, 0x91, 0x60, 0xEA, 0xFD, 0xD3),
498*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xD3, 0xB5, 0xD6, 0x90, 0x17, 0x0E, 0x1A),
499*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0xF4, 0x28, 0xC1, 0xF2, 0x53, 0xF6, 0x63),
500*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0x58, 0xDC, 0x61, 0x00, 0x00, 0x00, 0x00),
501*62c56f98SSadaf Ebrahimi };
502*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224r1_T_15_Y[] = {
503*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x20, 0x01, 0xFB, 0xF1, 0xBD, 0x5F, 0x45),
504*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x7F, 0x06, 0xDA, 0x11, 0xCB, 0xBA, 0xA6),
505*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x41, 0x00, 0xA4, 0x1B, 0x30, 0x33, 0x79),
506*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0xFF, 0x27, 0xCA, 0x00, 0x00, 0x00, 0x00),
507*62c56f98SSadaf Ebrahimi };
508*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp224r1_T[16] = {
509*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp224r1_T_0_X, secp224r1_T_0_Y),
510*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_1_X, secp224r1_T_1_Y),
511*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_2_X, secp224r1_T_2_Y),
512*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_3_X, secp224r1_T_3_Y),
513*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_4_X, secp224r1_T_4_Y),
514*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_5_X, secp224r1_T_5_Y),
515*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_6_X, secp224r1_T_6_Y),
516*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_7_X, secp224r1_T_7_Y),
517*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_8_X, secp224r1_T_8_Y),
518*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_9_X, secp224r1_T_9_Y),
519*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_10_X, secp224r1_T_10_Y),
520*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_11_X, secp224r1_T_11_Y),
521*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_12_X, secp224r1_T_12_Y),
522*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_13_X, secp224r1_T_13_Y),
523*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_14_X, secp224r1_T_14_Y),
524*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224r1_T_15_X, secp224r1_T_15_Y),
525*62c56f98SSadaf Ebrahimi };
526*62c56f98SSadaf Ebrahimi #else
527*62c56f98SSadaf Ebrahimi #define secp224r1_T NULL
528*62c56f98SSadaf Ebrahimi #endif
529*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
530*62c56f98SSadaf Ebrahimi 
531*62c56f98SSadaf Ebrahimi /*
532*62c56f98SSadaf Ebrahimi  * Domain parameters for secp256r1
533*62c56f98SSadaf Ebrahimi  */
534*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
535*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_p[] = {
536*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
537*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00),
538*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
539*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
540*62c56f98SSadaf Ebrahimi };
541*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_b[] = {
542*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x60, 0xD2, 0x27, 0x3E, 0x3C, 0xCE, 0x3B),
543*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xB0, 0x53, 0xCC, 0xB0, 0x06, 0x1D, 0x65),
544*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x86, 0x98, 0x76, 0x55, 0xBD, 0xEB, 0xB3),
545*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x93, 0x3A, 0xAA, 0xD8, 0x35, 0xC6, 0x5A),
546*62c56f98SSadaf Ebrahimi };
547*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_gx[] = {
548*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xC2, 0x98, 0xD8, 0x45, 0x39, 0xA1, 0xF4),
549*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x33, 0xEB, 0x2D, 0x81, 0x7D, 0x03, 0x77),
550*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x40, 0xA4, 0x63, 0xE5, 0xE6, 0xBC, 0xF8),
551*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x42, 0x2C, 0xE1, 0xF2, 0xD1, 0x17, 0x6B),
552*62c56f98SSadaf Ebrahimi };
553*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_gy[] = {
554*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x51, 0xBF, 0x37, 0x68, 0x40, 0xB6, 0xCB),
555*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0x5E, 0x31, 0x6B, 0x57, 0x33, 0xCE, 0x2B),
556*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x9E, 0x0F, 0x7C, 0x4A, 0xEB, 0xE7, 0x8E),
557*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x7F, 0x1A, 0xFE, 0xE2, 0x42, 0xE3, 0x4F),
558*62c56f98SSadaf Ebrahimi };
559*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_n[] = {
560*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x25, 0x63, 0xFC, 0xC2, 0xCA, 0xB9, 0xF3),
561*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x9E, 0x17, 0xA7, 0xAD, 0xFA, 0xE6, 0xBC),
562*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
563*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
564*62c56f98SSadaf Ebrahimi };
565*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
566*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_0_X[] = {
567*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xC2, 0x98, 0xD8, 0x45, 0x39, 0xA1, 0xF4),
568*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x33, 0xEB, 0x2D, 0x81, 0x7D, 0x03, 0x77),
569*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x40, 0xA4, 0x63, 0xE5, 0xE6, 0xBC, 0xF8),
570*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x42, 0x2C, 0xE1, 0xF2, 0xD1, 0x17, 0x6B),
571*62c56f98SSadaf Ebrahimi };
572*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_0_Y[] = {
573*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x51, 0xBF, 0x37, 0x68, 0x40, 0xB6, 0xCB),
574*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0x5E, 0x31, 0x6B, 0x57, 0x33, 0xCE, 0x2B),
575*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x9E, 0x0F, 0x7C, 0x4A, 0xEB, 0xE7, 0x8E),
576*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x7F, 0x1A, 0xFE, 0xE2, 0x42, 0xE3, 0x4F),
577*62c56f98SSadaf Ebrahimi };
578*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_1_X[] = {
579*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xC8, 0xBA, 0x04, 0xB7, 0x4B, 0xD2, 0xF7),
580*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0xC6, 0x23, 0x3A, 0xA0, 0x09, 0x3A, 0x59),
581*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x9D, 0x4C, 0xF9, 0x58, 0x23, 0xCC, 0xDF),
582*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0xED, 0x7B, 0x29, 0x87, 0x0F, 0xFA, 0x3C),
583*62c56f98SSadaf Ebrahimi };
584*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_1_Y[] = {
585*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x69, 0xF2, 0x40, 0x0B, 0xA3, 0x98, 0xCE),
586*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xA8, 0x48, 0x02, 0x0D, 0x1C, 0x12, 0x62),
587*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xAF, 0x09, 0x83, 0x80, 0xAA, 0x58, 0xA7),
588*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x12, 0xBE, 0x70, 0x94, 0x76, 0xE3, 0xE4),
589*62c56f98SSadaf Ebrahimi };
590*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_2_X[] = {
591*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x7D, 0xEF, 0x86, 0xFF, 0xE3, 0x37, 0xDD),
592*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x86, 0x8B, 0x08, 0x27, 0x7C, 0xD7, 0xF6),
593*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x54, 0x4C, 0x25, 0x4F, 0x9A, 0xFE, 0x28),
594*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xFD, 0xF0, 0x6D, 0x37, 0x03, 0x69, 0xD6),
595*62c56f98SSadaf Ebrahimi };
596*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_2_Y[] = {
597*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xD5, 0xDA, 0xAD, 0x92, 0x49, 0xF0, 0x9F),
598*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x73, 0x43, 0x9E, 0xAF, 0xA7, 0xD1, 0xF3),
599*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x41, 0x07, 0xDF, 0x78, 0x95, 0x3E, 0xA1),
600*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x3D, 0xD1, 0xE6, 0x3C, 0xA5, 0xE2, 0x20),
601*62c56f98SSadaf Ebrahimi };
602*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_3_X[] = {
603*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x6A, 0x5D, 0x52, 0x35, 0xD7, 0xBF, 0xAE),
604*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0xA2, 0xBE, 0x96, 0xF4, 0xF8, 0x02, 0xC3),
605*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x20, 0x49, 0x54, 0xEA, 0xB3, 0x82, 0xDB),
606*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0xDB, 0xEA, 0x02, 0xD1, 0x75, 0x1C, 0x62),
607*62c56f98SSadaf Ebrahimi };
608*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_3_Y[] = {
609*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x85, 0xF4, 0x9E, 0x4C, 0xDC, 0x39, 0x89),
610*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x6D, 0xC4, 0x57, 0xD8, 0x03, 0x5D, 0x22),
611*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x7F, 0x2D, 0x52, 0x6F, 0xC9, 0xDA, 0x4F),
612*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x64, 0xFA, 0xB4, 0xFE, 0xA4, 0xC4, 0xD7),
613*62c56f98SSadaf Ebrahimi };
614*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_4_X[] = {
615*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x37, 0xB9, 0xC0, 0xAA, 0x59, 0xC6, 0x8B),
616*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x58, 0xD9, 0xED, 0x58, 0x99, 0x65, 0xF7),
617*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x7D, 0x26, 0x8C, 0x4A, 0xF9, 0x05, 0x9F),
618*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x73, 0x9A, 0xC9, 0xE7, 0x46, 0xDC, 0x00),
619*62c56f98SSadaf Ebrahimi };
620*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_4_Y[] = {
621*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xD0, 0x55, 0xDF, 0x00, 0x0A, 0xF5, 0x4A),
622*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0xBF, 0x56, 0x81, 0x2D, 0x20, 0xEB, 0xB5),
623*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xC1, 0x28, 0x52, 0xAB, 0xE3, 0xD1, 0x40),
624*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x34, 0x79, 0x45, 0x57, 0xA5, 0x12, 0x03),
625*62c56f98SSadaf Ebrahimi };
626*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_5_X[] = {
627*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xCF, 0xB8, 0x7E, 0xF7, 0x92, 0x96, 0x8D),
628*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x01, 0x8C, 0x0D, 0x23, 0xF2, 0xE3, 0x05),
629*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x2E, 0xE3, 0x84, 0x52, 0x7A, 0x34, 0x76),
630*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xA1, 0xB0, 0x15, 0x90, 0xE2, 0x53, 0x3C),
631*62c56f98SSadaf Ebrahimi };
632*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_5_Y[] = {
633*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x98, 0xE7, 0xFA, 0xA5, 0x7D, 0x8B, 0x53),
634*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x35, 0xD2, 0x00, 0xD1, 0x1B, 0x9F, 0x1B),
635*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x69, 0x08, 0x9A, 0x72, 0xF0, 0xA9, 0x11),
636*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0xFE, 0x0E, 0x14, 0xDA, 0x7C, 0x0E, 0xD3),
637*62c56f98SSadaf Ebrahimi };
638*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_6_X[] = {
639*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xF6, 0xE8, 0xF8, 0x87, 0xF7, 0xFC, 0x6D),
640*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xBE, 0x7F, 0x3F, 0x7A, 0x2B, 0xD7, 0x13),
641*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0x32, 0xF2, 0x2D, 0x94, 0x6D, 0x42, 0xFD),
642*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x9A, 0xE3, 0x5F, 0x42, 0xBB, 0x84, 0xED),
643*62c56f98SSadaf Ebrahimi };
644*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_6_Y[] = {
645*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x95, 0x29, 0x73, 0xA1, 0x67, 0x3E, 0x02),
646*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x30, 0x54, 0x35, 0x8E, 0x0A, 0xDD, 0x67),
647*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xD7, 0xA1, 0x97, 0x61, 0x3B, 0xF8, 0x0C),
648*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x33, 0x3C, 0x58, 0x55, 0x34, 0x23, 0xA3),
649*62c56f98SSadaf Ebrahimi };
650*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_7_X[] = {
651*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x5D, 0x16, 0x5F, 0x7B, 0xBC, 0xBB, 0xCE),
652*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xEE, 0x4E, 0x8A, 0xC1, 0x51, 0xCC, 0x50),
653*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x0D, 0x4D, 0x1B, 0x53, 0x23, 0x1D, 0xB3),
654*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x2A, 0x38, 0x66, 0x52, 0x84, 0xE1, 0x95),
655*62c56f98SSadaf Ebrahimi };
656*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_7_Y[] = {
657*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x9B, 0x83, 0x0A, 0x81, 0x4F, 0xAD, 0xAC),
658*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xFF, 0x42, 0x41, 0x6E, 0xA9, 0xA2, 0xA0),
659*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xA1, 0x4F, 0x1F, 0x89, 0x82, 0xAA, 0x3E),
660*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0xB8, 0x0F, 0x6B, 0x8F, 0x8C, 0xD6, 0x68),
661*62c56f98SSadaf Ebrahimi };
662*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_8_X[] = {
663*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0xB3, 0xBB, 0x51, 0x69, 0xA2, 0x11, 0x93),
664*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x4F, 0x0F, 0x8D, 0xBD, 0x26, 0x0F, 0xE8),
665*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xCB, 0xEC, 0x6B, 0x34, 0xC3, 0x3D, 0x9D),
666*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x5D, 0x1E, 0x10, 0xD5, 0x44, 0xE2, 0x54),
667*62c56f98SSadaf Ebrahimi };
668*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_8_Y[] = {
669*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x9E, 0xB1, 0xF1, 0x6E, 0x4C, 0xAD, 0xB3),
670*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xE3, 0xC2, 0x58, 0xC0, 0xFB, 0x34, 0x43),
671*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x9C, 0xDF, 0x35, 0x07, 0x41, 0xBD, 0x19),
672*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x6E, 0x10, 0xEC, 0x0E, 0xEC, 0xBB, 0xD6),
673*62c56f98SSadaf Ebrahimi };
674*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_9_X[] = {
675*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xCF, 0xEF, 0x3F, 0x83, 0x1A, 0x88, 0xE8),
676*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x29, 0xB5, 0xB9, 0xE0, 0xC9, 0xA3, 0xAE),
677*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x46, 0x1E, 0x77, 0xCD, 0x7E, 0xB3, 0x10),
678*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x21, 0xD0, 0xD4, 0xA3, 0x16, 0x08, 0xEE),
679*62c56f98SSadaf Ebrahimi };
680*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_9_Y[] = {
681*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0xCA, 0xA8, 0xB3, 0xBF, 0x29, 0x99, 0x8E),
682*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xF2, 0x05, 0xC1, 0xCF, 0x5D, 0x91, 0x48),
683*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x01, 0x49, 0xDB, 0x82, 0xDF, 0x5F, 0x3A),
684*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x06, 0x90, 0xAD, 0xE3, 0x38, 0xA4, 0xC4),
685*62c56f98SSadaf Ebrahimi };
686*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_10_X[] = {
687*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xD2, 0x3A, 0xE8, 0x03, 0xC5, 0x6D, 0x5D),
688*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x35, 0xD0, 0xAE, 0x1D, 0x7A, 0x9F, 0xCA),
689*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x1E, 0xD2, 0xCB, 0xAC, 0x88, 0x27, 0x55),
690*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xB9, 0x9C, 0xE0, 0x31, 0xDD, 0x99, 0x86),
691*62c56f98SSadaf Ebrahimi };
692*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_10_Y[] = {
693*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xF9, 0x9B, 0x32, 0x96, 0x41, 0x58, 0x38),
694*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x5A, 0x2A, 0xB8, 0x96, 0x0E, 0xB2, 0x4C),
695*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x78, 0x2C, 0xC7, 0x08, 0x99, 0x19, 0x24),
696*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x59, 0x28, 0xE9, 0x84, 0x54, 0xE6, 0x16),
697*62c56f98SSadaf Ebrahimi };
698*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_11_X[] = {
699*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x38, 0x30, 0xDB, 0x70, 0x2C, 0x0A, 0xA2),
700*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x5C, 0x9D, 0xE9, 0xD5, 0x46, 0x0B, 0x5F),
701*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x0B, 0x60, 0x4B, 0x37, 0x7D, 0xB9, 0xC9),
702*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x24, 0xF3, 0x3D, 0x79, 0x7F, 0x6C, 0x18),
703*62c56f98SSadaf Ebrahimi };
704*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_11_Y[] = {
705*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7F, 0xE5, 0x1C, 0x4F, 0x60, 0x24, 0xF7, 0x2A),
706*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xD8, 0xE2, 0x91, 0x7F, 0x89, 0x49, 0x92),
707*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0xA7, 0x2E, 0x8D, 0x6A, 0xB3, 0x39, 0x81),
708*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x89, 0xB5, 0x9A, 0xB8, 0x8D, 0x42, 0x9C),
709*62c56f98SSadaf Ebrahimi };
710*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_12_X[] = {
711*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0x45, 0xE6, 0x4B, 0x3F, 0x4F, 0x1E, 0x1F),
712*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x65, 0x5E, 0x59, 0x22, 0xCC, 0x72, 0x5F),
713*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x93, 0x1A, 0x27, 0x1E, 0x34, 0xC5, 0x5B),
714*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0xF2, 0xA5, 0x58, 0x5C, 0x15, 0x2E, 0xC6),
715*62c56f98SSadaf Ebrahimi };
716*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_12_Y[] = {
717*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x7F, 0xBA, 0x58, 0x5A, 0x84, 0x6F, 0x5F),
718*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xA6, 0x36, 0x7E, 0xDC, 0xF7, 0xE1, 0x67),
719*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x4D, 0xAA, 0xEE, 0x57, 0x76, 0x3A, 0xD3),
720*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x7E, 0x26, 0x18, 0x22, 0x23, 0x9F, 0xFF),
721*62c56f98SSadaf Ebrahimi };
722*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_13_X[] = {
723*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x4C, 0x64, 0xC7, 0x55, 0x02, 0x3F, 0xE3),
724*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x02, 0x90, 0xBB, 0xC3, 0xEC, 0x30, 0x40),
725*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x6F, 0x64, 0xF4, 0x16, 0x69, 0x48, 0xA4),
726*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x44, 0x9C, 0x95, 0x0C, 0x7D, 0x67, 0x5E),
727*62c56f98SSadaf Ebrahimi };
728*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_13_Y[] = {
729*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0x91, 0x8B, 0xD8, 0xD0, 0xD7, 0xE7, 0xE2),
730*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xF9, 0x48, 0x62, 0x6F, 0xA8, 0x93, 0x5D),
731*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x3A, 0x99, 0x02, 0xD5, 0x0B, 0x3D, 0xE3),
732*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xD3, 0x00, 0x31, 0xE6, 0x0C, 0x9F, 0x44),
733*62c56f98SSadaf Ebrahimi };
734*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_14_X[] = {
735*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xB2, 0xAA, 0xFD, 0x88, 0x15, 0xDF, 0x52),
736*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0x35, 0x27, 0x31, 0x44, 0xCD, 0xC0, 0x68),
737*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xF8, 0x91, 0xA5, 0x71, 0x94, 0x84, 0x2A),
738*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xCB, 0xD0, 0x93, 0xE9, 0x88, 0xDA, 0xE4),
739*62c56f98SSadaf Ebrahimi };
740*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_14_Y[] = {
741*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xC6, 0x39, 0x16, 0x5D, 0xA3, 0x1E, 0x6D),
742*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x07, 0x37, 0x26, 0x36, 0x2A, 0xFE, 0x60),
743*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xBC, 0xF3, 0xD0, 0xDE, 0x50, 0xFC, 0x97),
744*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x2E, 0x06, 0x10, 0x15, 0x4D, 0xFA, 0xF7),
745*62c56f98SSadaf Ebrahimi };
746*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_15_X[] = {
747*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x65, 0x69, 0x5B, 0x66, 0xA2, 0x75, 0x2E),
748*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x16, 0x00, 0x5A, 0xB0, 0x30, 0x25, 0x1A),
749*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xFB, 0x86, 0x42, 0x80, 0xC1, 0xC4, 0x76),
750*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x1D, 0x83, 0x8E, 0x94, 0x01, 0x5F, 0x82),
751*62c56f98SSadaf Ebrahimi };
752*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256r1_T_15_Y[] = {
753*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x37, 0x70, 0xEF, 0x1F, 0xA1, 0xF0, 0xDB),
754*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x10, 0x5B, 0xCE, 0xC4, 0x9B, 0x6F, 0x10),
755*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x11, 0x11, 0x24, 0x4F, 0x4C, 0x79, 0x61),
756*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x3A, 0x72, 0xBC, 0xFE, 0x72, 0x58, 0x43),
757*62c56f98SSadaf Ebrahimi };
758*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp256r1_T[16] = {
759*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp256r1_T_0_X, secp256r1_T_0_Y),
760*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_1_X, secp256r1_T_1_Y),
761*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_2_X, secp256r1_T_2_Y),
762*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_3_X, secp256r1_T_3_Y),
763*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_4_X, secp256r1_T_4_Y),
764*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_5_X, secp256r1_T_5_Y),
765*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_6_X, secp256r1_T_6_Y),
766*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_7_X, secp256r1_T_7_Y),
767*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_8_X, secp256r1_T_8_Y),
768*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_9_X, secp256r1_T_9_Y),
769*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_10_X, secp256r1_T_10_Y),
770*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_11_X, secp256r1_T_11_Y),
771*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_12_X, secp256r1_T_12_Y),
772*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_13_X, secp256r1_T_13_Y),
773*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_14_X, secp256r1_T_14_Y),
774*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256r1_T_15_X, secp256r1_T_15_Y),
775*62c56f98SSadaf Ebrahimi };
776*62c56f98SSadaf Ebrahimi #else
777*62c56f98SSadaf Ebrahimi #define secp256r1_T NULL
778*62c56f98SSadaf Ebrahimi #endif
779*62c56f98SSadaf Ebrahimi 
780*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
781*62c56f98SSadaf Ebrahimi 
782*62c56f98SSadaf Ebrahimi /*
783*62c56f98SSadaf Ebrahimi  * Domain parameters for secp384r1
784*62c56f98SSadaf Ebrahimi  */
785*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
786*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_p[] = {
787*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00),
788*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF),
789*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
790*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
791*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
792*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
793*62c56f98SSadaf Ebrahimi };
794*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_b[] = {
795*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x2A, 0xEC, 0xD3, 0xED, 0xC8, 0x85, 0x2A),
796*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xD1, 0x2E, 0x8A, 0x8D, 0x39, 0x56, 0xC6),
797*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x87, 0x13, 0x50, 0x8F, 0x08, 0x14, 0x03),
798*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x41, 0x81, 0xFE, 0x6E, 0x9C, 0x1D, 0x18),
799*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x2D, 0xF8, 0xE3, 0x6B, 0x05, 0x8E, 0x98),
800*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0xE7, 0x3E, 0xE2, 0xA7, 0x2F, 0x31, 0xB3),
801*62c56f98SSadaf Ebrahimi };
802*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_gx[] = {
803*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x0A, 0x76, 0x72, 0x38, 0x5E, 0x54, 0x3A),
804*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x29, 0x55, 0xBF, 0x5D, 0xF2, 0x02, 0x55),
805*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x2A, 0x54, 0x82, 0xE0, 0x41, 0xF7, 0x59),
806*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x9B, 0xA7, 0x8B, 0x62, 0x3B, 0x1D, 0x6E),
807*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xAD, 0x20, 0xF3, 0x1E, 0xC7, 0xB1, 0x8E),
808*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x05, 0x8B, 0xBE, 0x22, 0xCA, 0x87, 0xAA),
809*62c56f98SSadaf Ebrahimi };
810*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_gy[] = {
811*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x0E, 0xEA, 0x90, 0x7C, 0x1D, 0x43, 0x7A),
812*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x81, 0x7E, 0x1D, 0xCE, 0xB1, 0x60, 0x0A),
813*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xB8, 0xF0, 0xB5, 0x13, 0x31, 0xDA, 0xE9),
814*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x14, 0x9A, 0x28, 0xBD, 0x1D, 0xF4, 0xF8),
815*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xDC, 0x92, 0x92, 0xBF, 0x98, 0x9E, 0x5D),
816*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x2C, 0x26, 0x96, 0x4A, 0xDE, 0x17, 0x36),
817*62c56f98SSadaf Ebrahimi };
818*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_n[] = {
819*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x29, 0xC5, 0xCC, 0x6A, 0x19, 0xEC, 0xEC),
820*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xA7, 0xB0, 0x48, 0xB2, 0x0D, 0x1A, 0x58),
821*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x2D, 0x37, 0xF4, 0x81, 0x4D, 0x63, 0xC7),
822*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
823*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
824*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
825*62c56f98SSadaf Ebrahimi };
826*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
827*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_0_X[] = {
828*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x0A, 0x76, 0x72, 0x38, 0x5E, 0x54, 0x3A),
829*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x29, 0x55, 0xBF, 0x5D, 0xF2, 0x02, 0x55),
830*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x2A, 0x54, 0x82, 0xE0, 0x41, 0xF7, 0x59),
831*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x9B, 0xA7, 0x8B, 0x62, 0x3B, 0x1D, 0x6E),
832*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xAD, 0x20, 0xF3, 0x1E, 0xC7, 0xB1, 0x8E),
833*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x05, 0x8B, 0xBE, 0x22, 0xCA, 0x87, 0xAA),
834*62c56f98SSadaf Ebrahimi };
835*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_0_Y[] = {
836*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x0E, 0xEA, 0x90, 0x7C, 0x1D, 0x43, 0x7A),
837*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x81, 0x7E, 0x1D, 0xCE, 0xB1, 0x60, 0x0A),
838*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xB8, 0xF0, 0xB5, 0x13, 0x31, 0xDA, 0xE9),
839*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x14, 0x9A, 0x28, 0xBD, 0x1D, 0xF4, 0xF8),
840*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xDC, 0x92, 0x92, 0xBF, 0x98, 0x9E, 0x5D),
841*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x2C, 0x26, 0x96, 0x4A, 0xDE, 0x17, 0x36),
842*62c56f98SSadaf Ebrahimi };
843*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_1_X[] = {
844*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x92, 0x00, 0x2C, 0x78, 0xDB, 0x1F, 0x37),
845*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xF3, 0xEB, 0xB7, 0x06, 0xF7, 0xB6, 0xBC),
846*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xBC, 0x2C, 0xCF, 0xD8, 0xED, 0x53, 0xE7),
847*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x75, 0x7B, 0xA3, 0xAB, 0xC3, 0x2C, 0x85),
848*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x9D, 0x78, 0x41, 0xF6, 0x76, 0x84, 0xAC),
849*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x56, 0xE8, 0x52, 0xB3, 0xCB, 0xA8, 0xBD),
850*62c56f98SSadaf Ebrahimi };
851*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_1_Y[] = {
852*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xF2, 0xAE, 0xA4, 0xB6, 0x89, 0x1B, 0xDA),
853*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x0F, 0xCE, 0x1C, 0x7C, 0xF6, 0x50, 0x4C),
854*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0xEB, 0x90, 0xE6, 0x4D, 0xC7, 0xD4, 0x7A),
855*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x49, 0x2D, 0x8A, 0x01, 0x99, 0x60, 0x94),
856*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x80, 0x9B, 0x9B, 0x6A, 0xB0, 0x07, 0xD9),
857*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xA2, 0xEE, 0x59, 0xBE, 0x95, 0xBC, 0x23),
858*62c56f98SSadaf Ebrahimi };
859*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_2_X[] = {
860*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x9D, 0x56, 0xAE, 0x59, 0xFB, 0x1F, 0x98),
861*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xAC, 0x91, 0x80, 0x87, 0xA8, 0x6E, 0x58),
862*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x08, 0xA7, 0x08, 0x94, 0x32, 0xFC, 0x67),
863*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x29, 0x9E, 0x84, 0xF4, 0xE5, 0x6E, 0x7E),
864*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x21, 0xB9, 0x50, 0x24, 0xF8, 0x9C, 0xC7),
865*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x04, 0x01, 0xC2, 0xFB, 0x77, 0x3E, 0xDE),
866*62c56f98SSadaf Ebrahimi };
867*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_2_Y[] = {
868*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x38, 0xEE, 0xE3, 0xC7, 0x9D, 0xEC, 0xA6),
869*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x88, 0xCF, 0x43, 0xFA, 0x92, 0x5E, 0x8E),
870*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xCA, 0x43, 0xF8, 0x3B, 0x49, 0x7E, 0x75),
871*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xE7, 0xEB, 0x17, 0x45, 0x86, 0xC2, 0xE1),
872*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x69, 0x57, 0x32, 0xE0, 0x9C, 0xD1, 0x00),
873*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x10, 0xB8, 0x4D, 0xB8, 0xF4, 0x0D, 0xE3),
874*62c56f98SSadaf Ebrahimi };
875*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_3_X[] = {
876*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0xDC, 0x9A, 0xB2, 0x79, 0x39, 0x27, 0x16),
877*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x71, 0xE4, 0x3B, 0x4D, 0x60, 0x0C, 0xA3),
878*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xBD, 0x19, 0x40, 0xFA, 0x19, 0x2A, 0x5A),
879*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xF8, 0x1E, 0x43, 0xA1, 0x50, 0x8D, 0xEF),
880*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x18, 0x7C, 0x41, 0xFA, 0x7C, 0x1B, 0x58),
881*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x59, 0x24, 0xC4, 0xE9, 0xB7, 0xD3, 0xAD),
882*62c56f98SSadaf Ebrahimi };
883*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_3_Y[] = {
884*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x01, 0x3D, 0x63, 0x54, 0x45, 0x6F, 0xB7),
885*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xB2, 0x19, 0xA3, 0x86, 0x1D, 0x42, 0x34),
886*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x02, 0x87, 0x18, 0x92, 0x52, 0x1A, 0x71),
887*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x18, 0xB1, 0x5D, 0x18, 0x1B, 0x37, 0xFE),
888*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x74, 0x61, 0xBA, 0x18, 0xAF, 0x40, 0x30),
889*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x7D, 0x3C, 0x52, 0x0F, 0x07, 0xB0, 0x6F),
890*62c56f98SSadaf Ebrahimi };
891*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_4_X[] = {
892*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x39, 0x13, 0xAA, 0x60, 0x15, 0x99, 0x30),
893*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x00, 0xCB, 0xC6, 0xB1, 0xDB, 0x97, 0x90),
894*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xFA, 0x60, 0xB8, 0x24, 0xE4, 0x7D, 0xD3),
895*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x75, 0xB3, 0x70, 0xB2, 0x83, 0xB1, 0x9B),
896*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xE3, 0x6C, 0xCD, 0x33, 0x62, 0x7A, 0x56),
897*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x30, 0xDC, 0x0F, 0x9F, 0xBB, 0xB8, 0xAA),
898*62c56f98SSadaf Ebrahimi };
899*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_4_Y[] = {
900*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xD5, 0x0A, 0x60, 0x81, 0xB9, 0xC5, 0x16),
901*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0xAA, 0x2F, 0xD6, 0xF2, 0x73, 0xDF, 0xEB),
902*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x7B, 0x74, 0xC9, 0xB3, 0x5B, 0x95, 0x6D),
903*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x04, 0xEB, 0x15, 0xC8, 0x5F, 0x00, 0xF6),
904*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x50, 0x20, 0x28, 0xD1, 0x01, 0xAF, 0xF0),
905*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x6D, 0x4F, 0x31, 0x81, 0x2F, 0x94, 0x48),
906*62c56f98SSadaf Ebrahimi };
907*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_5_X[] = {
908*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x2F, 0xD8, 0xB6, 0x63, 0x7C, 0xE9, 0x50),
909*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x8C, 0xB9, 0x14, 0xD9, 0x37, 0x63, 0xDE),
910*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x02, 0xB8, 0x46, 0xAD, 0xCE, 0x7B, 0x38),
911*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x47, 0x2D, 0x66, 0xA7, 0xE9, 0x33, 0x23),
912*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xF9, 0x93, 0x94, 0xA8, 0x48, 0xB3, 0x4F),
913*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x4A, 0xAC, 0x51, 0x08, 0x72, 0x2F, 0x1A),
914*62c56f98SSadaf Ebrahimi };
915*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_5_Y[] = {
916*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0xAD, 0xA0, 0xF9, 0x81, 0xE1, 0x78, 0x97),
917*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x9A, 0x63, 0xD8, 0xBA, 0x79, 0x1A, 0x17),
918*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x31, 0x7B, 0x7A, 0x5A, 0x5D, 0x7D, 0x2D),
919*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x96, 0x12, 0x4B, 0x19, 0x09, 0xE0, 0xB7),
920*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x8A, 0x57, 0xEE, 0x4E, 0x6E, 0x7E, 0xEC),
921*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x9D, 0x69, 0xDC, 0xB3, 0xDA, 0xD8, 0x08),
922*62c56f98SSadaf Ebrahimi };
923*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_6_X[] = {
924*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x49, 0x03, 0x03, 0x33, 0x6F, 0x28, 0x4A),
925*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xDB, 0xA7, 0x05, 0x8C, 0xF3, 0x4D, 0xFB),
926*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x92, 0xB1, 0xA8, 0xEC, 0x0D, 0x64, 0x3B),
927*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0xFC, 0xFD, 0xD0, 0x4B, 0x88, 0x1B, 0x5D),
928*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x9C, 0x51, 0x69, 0xCE, 0x71, 0x73, 0xF5),
929*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x5A, 0x14, 0x23, 0x1A, 0x46, 0x63, 0x5F),
930*62c56f98SSadaf Ebrahimi };
931*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_6_Y[] = {
932*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x4C, 0x70, 0x44, 0x18, 0xCD, 0xEF, 0xED),
933*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x49, 0xDD, 0x64, 0x7E, 0x7E, 0x4D, 0x92),
934*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x32, 0x7C, 0x09, 0xD0, 0x3F, 0xD6, 0x2C),
935*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xE0, 0x4F, 0x65, 0x0C, 0x7A, 0x54, 0x3E),
936*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xFA, 0xFB, 0x4A, 0xB4, 0x79, 0x5A, 0x8C),
937*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x5D, 0x1B, 0x2B, 0xDA, 0xBC, 0x9A, 0x74),
938*62c56f98SSadaf Ebrahimi };
939*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_7_X[] = {
940*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xAC, 0x56, 0xF7, 0x5F, 0x51, 0x68, 0x0B),
941*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xE0, 0x1D, 0xBC, 0x13, 0x4E, 0xAC, 0x03),
942*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xF5, 0xC5, 0xE6, 0xD2, 0x88, 0xBA, 0xCB),
943*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x0E, 0x28, 0x23, 0x58, 0x67, 0xFA, 0xEE),
944*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x80, 0x4B, 0xD8, 0xC4, 0xDF, 0x15, 0xE4),
945*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x0E, 0x58, 0xE6, 0x2C, 0x59, 0xC2, 0x03),
946*62c56f98SSadaf Ebrahimi };
947*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_7_Y[] = {
948*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x26, 0x27, 0x99, 0x16, 0x2B, 0x22, 0x0B),
949*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xF3, 0x8F, 0xC3, 0x2A, 0x9B, 0xFC, 0x38),
950*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x2E, 0x83, 0x3D, 0xFE, 0x9E, 0x3C, 0x1B),
951*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x57, 0xCD, 0x2D, 0xC1, 0x49, 0x38, 0xB5),
952*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x42, 0x8B, 0x33, 0x89, 0x1F, 0xEA, 0x01),
953*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x1D, 0x13, 0xD7, 0x50, 0xBB, 0x3E, 0xEB),
954*62c56f98SSadaf Ebrahimi };
955*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_8_X[] = {
956*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x9A, 0x52, 0xD2, 0x54, 0x7C, 0x97, 0xF2),
957*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x33, 0x6E, 0xED, 0xD9, 0x87, 0x50, 0xC5),
958*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x35, 0x7E, 0x16, 0x40, 0x15, 0x83, 0xB8),
959*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x2B, 0xA4, 0xAB, 0x03, 0x91, 0xEA, 0xFE),
960*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x47, 0x39, 0xEF, 0x05, 0x59, 0xD0, 0x90),
961*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x24, 0x0D, 0x76, 0x11, 0x53, 0x08, 0xAF),
962*62c56f98SSadaf Ebrahimi };
963*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_8_Y[] = {
964*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x2F, 0xDD, 0xBD, 0x50, 0x48, 0xB1, 0xE5),
965*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x1C, 0x84, 0x55, 0x78, 0x14, 0xEB, 0xF6),
966*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x5E, 0x3E, 0xA6, 0xAF, 0xF6, 0xC7, 0x04),
967*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x11, 0xE2, 0x65, 0xCA, 0x41, 0x95, 0x3B),
968*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x83, 0xD8, 0xE6, 0x4D, 0x22, 0x06, 0x2D),
969*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x7F, 0x25, 0x2A, 0xAA, 0x28, 0x46, 0x97),
970*62c56f98SSadaf Ebrahimi };
971*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_9_X[] = {
972*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xDB, 0x15, 0x56, 0x84, 0xCB, 0xC0, 0x56),
973*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xDB, 0x0E, 0x08, 0xC9, 0xF5, 0xD4, 0x9E),
974*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x62, 0xD0, 0x1A, 0x7C, 0x13, 0xD5, 0x07),
975*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xAD, 0x53, 0xE0, 0x32, 0x21, 0xA0, 0xC0),
976*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x38, 0x81, 0x21, 0x23, 0x0E, 0xD2, 0xBB),
977*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x51, 0x05, 0xD0, 0x1E, 0x82, 0xA9, 0x71),
978*62c56f98SSadaf Ebrahimi };
979*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_9_Y[] = {
980*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xC3, 0x27, 0xBF, 0xC6, 0xAA, 0xB7, 0xB9),
981*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x65, 0x45, 0xDF, 0xB9, 0x46, 0x17, 0x46),
982*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x38, 0x3F, 0xB2, 0xB1, 0x5D, 0xCA, 0x1C),
983*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x29, 0x6C, 0x63, 0xE9, 0xD7, 0x48, 0xB8),
984*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xF1, 0xD7, 0x99, 0x8C, 0xC2, 0x05, 0x99),
985*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xE6, 0x5E, 0x82, 0x6D, 0xE5, 0x7E, 0xD5),
986*62c56f98SSadaf Ebrahimi };
987*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_10_X[] = {
988*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x61, 0xFA, 0x7D, 0x01, 0xDB, 0xB6, 0x63),
989*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xC6, 0x58, 0x39, 0xF4, 0xC6, 0x82, 0x23),
990*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x5A, 0x7A, 0x80, 0x08, 0xCD, 0xAA, 0xD8),
991*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x8C, 0xC6, 0x3F, 0x3C, 0xA5, 0x68, 0xF4),
992*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xF5, 0xD5, 0x17, 0xAE, 0x36, 0xD8, 0x8A),
993*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xAD, 0x92, 0xC5, 0x57, 0x6C, 0xDA, 0x91),
994*62c56f98SSadaf Ebrahimi };
995*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_10_Y[] = {
996*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x67, 0x17, 0xC0, 0x40, 0x78, 0x8C, 0x84),
997*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x9F, 0xF4, 0xAA, 0xDA, 0x5C, 0x7E, 0xB2),
998*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xDB, 0x42, 0x3E, 0x72, 0x64, 0xA0, 0x67),
999*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xF9, 0x41, 0x17, 0x43, 0xE3, 0xE8, 0xA8),
1000*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xDD, 0xCC, 0x43, 0x7E, 0x16, 0x05, 0x03),
1001*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x4B, 0xCF, 0x48, 0x8F, 0x41, 0x90, 0xE5),
1002*62c56f98SSadaf Ebrahimi };
1003*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_11_X[] = {
1004*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x0C, 0x6B, 0x9D, 0x22, 0x04, 0xBC, 0x5C),
1005*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x63, 0x79, 0x2F, 0x6A, 0x0E, 0x8A, 0xDE),
1006*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x67, 0x3F, 0x02, 0xB8, 0x91, 0x7F, 0x74),
1007*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x14, 0x64, 0xA0, 0x33, 0xF4, 0x6B, 0x50),
1008*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x44, 0x71, 0x87, 0xB8, 0x88, 0x3F, 0x45),
1009*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x2B, 0x85, 0x05, 0xC5, 0x44, 0x53, 0x15),
1010*62c56f98SSadaf Ebrahimi };
1011*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_11_Y[] = {
1012*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x2B, 0xFE, 0xD1, 0x1C, 0x73, 0xE3, 0x2E),
1013*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x33, 0xA1, 0xD3, 0x69, 0x1C, 0x9D, 0xD2),
1014*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x5A, 0xBA, 0xB6, 0xAE, 0x1B, 0x94, 0x04),
1015*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x74, 0x90, 0x5C, 0x57, 0xB0, 0x3A, 0x45),
1016*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x2F, 0x93, 0x20, 0x24, 0x54, 0x1D, 0x8D),
1017*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x78, 0x9D, 0x71, 0x67, 0x5D, 0x49, 0x98),
1018*62c56f98SSadaf Ebrahimi };
1019*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_12_X[] = {
1020*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0xC8, 0x0E, 0x11, 0x8D, 0xE0, 0x8F, 0x69),
1021*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x7F, 0x79, 0x6C, 0x5F, 0xB7, 0xBC, 0xB1),
1022*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xE1, 0x83, 0x3C, 0x12, 0xBB, 0xEE, 0x96),
1023*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xC2, 0xC4, 0x1B, 0x41, 0x71, 0xB9, 0x17),
1024*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0xEE, 0xBB, 0x1D, 0x89, 0x50, 0x88, 0xF2),
1025*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x1C, 0x55, 0x74, 0xEB, 0xDE, 0x92, 0x3F),
1026*62c56f98SSadaf Ebrahimi };
1027*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_12_Y[] = {
1028*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x38, 0x92, 0x06, 0x19, 0xD0, 0xB3, 0xB2),
1029*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x99, 0x26, 0xA3, 0x5F, 0xE2, 0xC1, 0x81),
1030*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0xFC, 0xFD, 0xC3, 0xB6, 0x26, 0x24, 0x8F),
1031*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xAD, 0xE7, 0x49, 0xB7, 0x64, 0x4B, 0x96),
1032*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x4E, 0x95, 0xAD, 0x07, 0xFE, 0xB6, 0x30),
1033*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x15, 0xE7, 0x2D, 0x19, 0xA9, 0x08, 0x10),
1034*62c56f98SSadaf Ebrahimi };
1035*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_13_X[] = {
1036*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xBD, 0xAC, 0x0A, 0x3F, 0x6B, 0xFF, 0xFA),
1037*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xE4, 0x74, 0x14, 0xD9, 0x70, 0x1D, 0x71),
1038*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xB0, 0x71, 0xBB, 0xD8, 0x18, 0x96, 0x2B),
1039*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0xB8, 0x19, 0x90, 0x80, 0xB5, 0xEE, 0x01),
1040*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x21, 0x20, 0xA6, 0x17, 0x48, 0x03, 0x6F),
1041*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x1D, 0xBB, 0x6D, 0x94, 0x20, 0x34, 0xF1),
1042*62c56f98SSadaf Ebrahimi };
1043*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_13_Y[] = {
1044*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x82, 0x67, 0x4B, 0x8E, 0x4E, 0xBE, 0xE2),
1045*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xDA, 0x77, 0xF8, 0x23, 0x55, 0x2B, 0x2D),
1046*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x02, 0xDE, 0x25, 0x35, 0x2D, 0x74, 0x51),
1047*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x0C, 0xB8, 0x0B, 0x39, 0xBA, 0xAD, 0x04),
1048*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0x0E, 0x28, 0x4D, 0xE1, 0x3D, 0xE4, 0x1B),
1049*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xEC, 0x0A, 0xD4, 0xB8, 0xC4, 0x8D, 0xB0),
1050*62c56f98SSadaf Ebrahimi };
1051*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_14_X[] = {
1052*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x68, 0xCE, 0xC2, 0x55, 0x4D, 0x0C, 0x6D),
1053*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x20, 0x93, 0x32, 0x90, 0xD6, 0xAE, 0x47),
1054*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x78, 0xAB, 0x43, 0x9E, 0xEB, 0x73, 0xAE),
1055*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x97, 0xC3, 0x83, 0xA6, 0x3C, 0xF1, 0xBF),
1056*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0x25, 0x25, 0x66, 0x08, 0x26, 0xFA, 0x4B),
1057*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xFB, 0x44, 0x5D, 0x82, 0xEC, 0x3B, 0xAC),
1058*62c56f98SSadaf Ebrahimi };
1059*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_14_Y[] = {
1060*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x90, 0xEA, 0xB5, 0x04, 0x99, 0xD0, 0x69),
1061*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0xF2, 0x22, 0xA0, 0xEB, 0xFD, 0x45, 0x87),
1062*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xA4, 0x81, 0x32, 0xFC, 0xFA, 0xEE, 0x5B),
1063*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xBB, 0xA4, 0x6A, 0x77, 0x41, 0x5C, 0x1D),
1064*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x1E, 0xAA, 0x4F, 0xF0, 0x10, 0xB3, 0x50),
1065*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x74, 0x13, 0x14, 0x9E, 0x90, 0xD7, 0xE6),
1066*62c56f98SSadaf Ebrahimi };
1067*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_15_X[] = {
1068*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0xBD, 0x70, 0x4F, 0xA8, 0xD1, 0x06, 0x2C),
1069*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x4E, 0x2E, 0x68, 0xFC, 0x35, 0xFA, 0x50),
1070*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x53, 0x75, 0xED, 0xF2, 0x5F, 0xC2, 0xEB),
1071*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x87, 0x6B, 0x9F, 0x05, 0xE2, 0x22, 0x93),
1072*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x1A, 0xA8, 0xB7, 0x03, 0x9E, 0x6D, 0x7C),
1073*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0xD0, 0x69, 0x88, 0xA8, 0x39, 0x9E, 0x3A),
1074*62c56f98SSadaf Ebrahimi };
1075*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_15_Y[] = {
1076*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xEF, 0x68, 0xFE, 0xEC, 0x24, 0x08, 0x15),
1077*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x06, 0x4B, 0x92, 0x0D, 0xB7, 0x34, 0x74),
1078*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xF4, 0xDD, 0x1A, 0xA0, 0x4A, 0xE4, 0x45),
1079*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x63, 0x4F, 0x4F, 0xCE, 0xBB, 0xD6, 0xD3),
1080*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xEE, 0x8D, 0xDF, 0x3F, 0x73, 0xB7, 0xAC),
1081*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x06, 0xB6, 0x80, 0x4D, 0x81, 0xD9, 0x53),
1082*62c56f98SSadaf Ebrahimi };
1083*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_16_X[] = {
1084*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0xF5, 0x13, 0xDF, 0x13, 0x19, 0x97, 0x94),
1085*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xF9, 0xB3, 0x33, 0x66, 0x82, 0x21, 0xFE),
1086*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xFC, 0x39, 0x16, 0x23, 0x43, 0x76, 0x0E),
1087*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x48, 0x25, 0xA1, 0x64, 0x95, 0x1C, 0x2F),
1088*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0xAC, 0x15, 0x57, 0xD9, 0xDE, 0xA0, 0x28),
1089*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x5F, 0xB8, 0x3D, 0x48, 0x91, 0x24, 0xCC),
1090*62c56f98SSadaf Ebrahimi };
1091*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_16_Y[] = {
1092*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xF2, 0xC8, 0x54, 0xD1, 0x32, 0xBD, 0xC4),
1093*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x3B, 0xF0, 0xAA, 0x9D, 0xD8, 0xF4, 0x20),
1094*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0xC3, 0xBB, 0x6C, 0x66, 0xAC, 0x25, 0x2D),
1095*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x25, 0x10, 0xB2, 0xE1, 0x41, 0xDE, 0x1D),
1096*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xE8, 0x30, 0xB8, 0x37, 0xBC, 0x2A, 0x98),
1097*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x57, 0x01, 0x4A, 0x1E, 0x78, 0x9F, 0x85),
1098*62c56f98SSadaf Ebrahimi };
1099*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_17_X[] = {
1100*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x19, 0xCD, 0x12, 0x0B, 0x51, 0x4F, 0x56),
1101*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x4B, 0x3D, 0x24, 0xA4, 0x16, 0x59, 0x05),
1102*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xEB, 0xD3, 0x59, 0x2E, 0x75, 0x7C, 0x01),
1103*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xB9, 0xB4, 0xA5, 0xD9, 0x2E, 0x29, 0x4C),
1104*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x16, 0x05, 0x75, 0x02, 0xB3, 0x06, 0xEE),
1105*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x7C, 0x9F, 0x79, 0x91, 0xF1, 0x4F, 0x23),
1106*62c56f98SSadaf Ebrahimi };
1107*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_17_Y[] = {
1108*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x98, 0x7C, 0x84, 0xE1, 0xFF, 0x30, 0x77),
1109*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0xE2, 0xC2, 0x5F, 0x55, 0x40, 0xBD, 0xCD),
1110*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x65, 0x87, 0x3F, 0xC4, 0xC2, 0x24, 0x57),
1111*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0x30, 0x0A, 0x60, 0x15, 0xD1, 0x24, 0x48),
1112*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x99, 0xD9, 0xB6, 0xAE, 0xB1, 0xAF, 0x1D),
1113*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x80, 0xEE, 0xA2, 0x0F, 0x74, 0xB9, 0xF3),
1114*62c56f98SSadaf Ebrahimi };
1115*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_18_X[] = {
1116*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xE6, 0x0F, 0x37, 0xC1, 0x10, 0x99, 0x1E),
1117*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xAD, 0x9D, 0x5D, 0x80, 0x01, 0xA6, 0xFE),
1118*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x0F, 0x10, 0x2A, 0x9D, 0x20, 0x38, 0xEB),
1119*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x60, 0xCB, 0xCE, 0x5A, 0xA0, 0xA7, 0x32),
1120*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xCF, 0x14, 0xDF, 0xBF, 0xE5, 0x74, 0x2D),
1121*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x12, 0x1A, 0xDD, 0x59, 0x02, 0x5D, 0xC6),
1122*62c56f98SSadaf Ebrahimi };
1123*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_18_Y[] = {
1124*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xC9, 0xF8, 0xF5, 0xB6, 0x13, 0x4D, 0x7B),
1125*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x45, 0xB1, 0x93, 0xB3, 0xA2, 0x79, 0xDC),
1126*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xF6, 0xCF, 0xF7, 0xE6, 0x29, 0x9C, 0xCC),
1127*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x50, 0x65, 0x80, 0xBC, 0x59, 0x0A, 0x59),
1128*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xF0, 0x24, 0x35, 0xA2, 0x46, 0xF0, 0x0C),
1129*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x26, 0xC0, 0x9D, 0x61, 0x56, 0x62, 0x67),
1130*62c56f98SSadaf Ebrahimi };
1131*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_19_X[] = {
1132*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xBB, 0xC2, 0x24, 0x43, 0x2E, 0x37, 0x54),
1133*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xF7, 0xCE, 0x35, 0xFC, 0x77, 0xF3, 0x3F),
1134*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x34, 0x96, 0xD5, 0x4A, 0x76, 0x9D, 0x6B),
1135*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x3B, 0x0F, 0xEA, 0xA8, 0x12, 0x0B, 0x22),
1136*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x3F, 0x5D, 0x2D, 0x1C, 0xD4, 0x9E, 0xFB),
1137*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x2E, 0xDD, 0xC7, 0x6E, 0xAB, 0xAF, 0xDC),
1138*62c56f98SSadaf Ebrahimi };
1139*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_19_Y[] = {
1140*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xB2, 0x7B, 0x0C, 0x9A, 0x83, 0x8E, 0x59),
1141*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x51, 0x90, 0x92, 0x79, 0x32, 0x19, 0xC3),
1142*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x89, 0xF9, 0xD0, 0xCF, 0x2C, 0xA5, 0x8F),
1143*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x50, 0x21, 0xDE, 0x50, 0x41, 0x9D, 0x81),
1144*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x7D, 0x2B, 0x9E, 0x9D, 0x95, 0xA8, 0xE3),
1145*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA5, 0x20, 0x87, 0x88, 0x97, 0x5F, 0xAA),
1146*62c56f98SSadaf Ebrahimi };
1147*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_20_X[] = {
1148*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x59, 0xB4, 0x66, 0x7E, 0xE8, 0x5A, 0x60),
1149*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x5C, 0x7E, 0xB2, 0xAD, 0xD9, 0xC9, 0xDA),
1150*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x97, 0x49, 0xA3, 0x13, 0x83, 0x07, 0x2E),
1151*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x26, 0xC7, 0x13, 0x35, 0x0D, 0xB0, 0x6B),
1152*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x60, 0xAB, 0xFA, 0x4B, 0x93, 0x18, 0x2C),
1153*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x2D, 0x1C, 0x31, 0x4C, 0xE4, 0x61, 0xAE),
1154*62c56f98SSadaf Ebrahimi };
1155*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_20_Y[] = {
1156*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0x4D, 0x1E, 0x51, 0x59, 0x6E, 0x91, 0xC5),
1157*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x54, 0x4D, 0x51, 0xED, 0x36, 0xCC, 0x60),
1158*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xA8, 0x56, 0xC7, 0x78, 0x27, 0x33, 0xC5),
1159*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xB7, 0x95, 0xC9, 0x8B, 0xC8, 0x6A, 0xBC),
1160*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xE9, 0x13, 0x96, 0xB3, 0xE1, 0xF9, 0xEE),
1161*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x46, 0xB0, 0x5E, 0xC3, 0x94, 0x03, 0x05),
1162*62c56f98SSadaf Ebrahimi };
1163*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_21_X[] = {
1164*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x5B, 0x29, 0x30, 0x41, 0x1A, 0x9E, 0xB6),
1165*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xCA, 0x83, 0x31, 0x5B, 0xA7, 0xCB, 0x42),
1166*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x41, 0x50, 0x44, 0x4D, 0x64, 0x31, 0x89),
1167*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0x84, 0xC2, 0x5D, 0x97, 0xA5, 0x3C, 0x18),
1168*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x0F, 0xA5, 0xFD, 0x8E, 0x5A, 0x47, 0x2C),
1169*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x58, 0x02, 0x2D, 0x40, 0xB1, 0x0B, 0xBA),
1170*62c56f98SSadaf Ebrahimi };
1171*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_21_Y[] = {
1172*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x33, 0x8C, 0x67, 0xCE, 0x23, 0x43, 0x99),
1173*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x53, 0x47, 0x72, 0x44, 0x1F, 0x5B, 0x2A),
1174*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xC1, 0xD9, 0xA4, 0x50, 0x88, 0x63, 0x18),
1175*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xF2, 0x75, 0x69, 0x73, 0x00, 0xC4, 0x31),
1176*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x90, 0x1D, 0xDF, 0x1A, 0x00, 0xD8, 0x69),
1177*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0xB1, 0x89, 0x48, 0xA8, 0x70, 0x62, 0xEF),
1178*62c56f98SSadaf Ebrahimi };
1179*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_22_X[] = {
1180*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x8A, 0x55, 0x50, 0x7B, 0xEF, 0x8A, 0x3C),
1181*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x1B, 0x23, 0x48, 0x23, 0x63, 0x91, 0xB6),
1182*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x04, 0x54, 0x3C, 0x24, 0x9B, 0xC7, 0x9A),
1183*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x38, 0xC3, 0x84, 0xFB, 0xFF, 0x9F, 0x49),
1184*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x2A, 0xE0, 0x6D, 0x68, 0x8A, 0x5C, 0xCB),
1185*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x93, 0x53, 0x85, 0xA1, 0x0D, 0xAF, 0x63),
1186*62c56f98SSadaf Ebrahimi };
1187*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_22_Y[] = {
1188*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x88, 0x95, 0x4C, 0x0B, 0xD0, 0x06, 0x51),
1189*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xAF, 0x8D, 0x49, 0xA2, 0xC8, 0xB4, 0xE0),
1190*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x76, 0x53, 0x09, 0x88, 0x43, 0x87, 0xCA),
1191*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xA4, 0x77, 0x3F, 0x5E, 0x21, 0xB4, 0x0A),
1192*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x9E, 0x86, 0x64, 0xCC, 0x91, 0xC1, 0x77),
1193*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x17, 0x56, 0xCB, 0xC3, 0x7D, 0x5B, 0xB1),
1194*62c56f98SSadaf Ebrahimi };
1195*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_23_X[] = {
1196*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x74, 0x9F, 0xB5, 0x91, 0x21, 0xB1, 0x1C),
1197*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xED, 0xE1, 0x11, 0xEF, 0x45, 0xAF, 0xC1),
1198*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x31, 0xBE, 0xB2, 0xBC, 0x72, 0x65, 0x1F),
1199*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x4B, 0x8C, 0x77, 0xCE, 0x1E, 0x42, 0xB5),
1200*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xC9, 0xAA, 0xB9, 0xD9, 0x86, 0x99, 0x55),
1201*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x23, 0x80, 0xC6, 0x4E, 0x35, 0x0B, 0x6D),
1202*62c56f98SSadaf Ebrahimi };
1203*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_23_Y[] = {
1204*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xD8, 0xA2, 0x0A, 0x39, 0x32, 0x1D, 0x23),
1205*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0xC8, 0x86, 0xF1, 0x12, 0x9A, 0x4A, 0x05),
1206*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xF1, 0x7C, 0xAA, 0x70, 0x8E, 0xBC, 0x01),
1207*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x01, 0x47, 0x8F, 0xDD, 0x8B, 0xA5, 0xC8),
1208*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x08, 0x21, 0xF4, 0xAB, 0xC7, 0xF5, 0x96),
1209*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x76, 0xA5, 0x95, 0xC4, 0x0F, 0x88, 0x1D),
1210*62c56f98SSadaf Ebrahimi };
1211*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_24_X[] = {
1212*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x42, 0x2A, 0x52, 0xCD, 0x75, 0x51, 0x49),
1213*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x36, 0xE5, 0x04, 0x2B, 0x44, 0xC6, 0xEF),
1214*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xEE, 0x16, 0x13, 0x07, 0x83, 0xB5, 0x30),
1215*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x59, 0xC6, 0xA2, 0x19, 0x05, 0xD3, 0xC6),
1216*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x8B, 0xA8, 0x16, 0x09, 0xB7, 0xEA, 0xD6),
1217*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xEE, 0x14, 0xAF, 0xB5, 0xFD, 0xD0, 0xEF),
1218*62c56f98SSadaf Ebrahimi };
1219*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_24_Y[] = {
1220*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x7C, 0xCA, 0x71, 0x3E, 0x6E, 0x66, 0x75),
1221*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x31, 0x0E, 0x3F, 0xE5, 0x91, 0xC4, 0x7F),
1222*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x3D, 0xC2, 0x3E, 0x95, 0x37, 0x58, 0x2B),
1223*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x1F, 0x02, 0x03, 0xF3, 0xEF, 0xEE, 0x66),
1224*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x5B, 0x1A, 0xFC, 0x38, 0xCD, 0xE8, 0x24),
1225*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x57, 0x42, 0x85, 0xC6, 0x21, 0x68, 0x71),
1226*62c56f98SSadaf Ebrahimi };
1227*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_25_X[] = {
1228*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xA2, 0x4A, 0x66, 0xB1, 0x0A, 0xE6, 0xC0),
1229*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x0C, 0x94, 0x9D, 0x5E, 0x99, 0xB2, 0xCE),
1230*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x03, 0x40, 0xCA, 0xB2, 0xB3, 0x30, 0x55),
1231*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x78, 0x48, 0x27, 0x34, 0x1E, 0xE2, 0x42),
1232*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x72, 0x5B, 0xAC, 0xC1, 0x6D, 0xE3, 0x82),
1233*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xAB, 0x46, 0xCB, 0xEA, 0x5E, 0x4B, 0x0B),
1234*62c56f98SSadaf Ebrahimi };
1235*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_25_Y[] = {
1236*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x08, 0xAD, 0x4E, 0x51, 0x9F, 0x2A, 0x52),
1237*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x5C, 0x7D, 0x4C, 0xD6, 0xCF, 0xDD, 0x02),
1238*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x76, 0x26, 0xE0, 0x8B, 0x10, 0xD9, 0x7C),
1239*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0xA7, 0x23, 0x4E, 0x5F, 0xD2, 0x42, 0x17),
1240*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xE5, 0xA4, 0xEC, 0x77, 0x21, 0x34, 0x28),
1241*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x14, 0x65, 0xEA, 0x4A, 0x85, 0xC3, 0x2F),
1242*62c56f98SSadaf Ebrahimi };
1243*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_26_X[] = {
1244*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0xD8, 0x40, 0x27, 0x73, 0x15, 0x7E, 0x65),
1245*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xBB, 0x53, 0x7E, 0x0F, 0x40, 0xC8, 0xD4),
1246*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x37, 0x19, 0x73, 0xEF, 0x5A, 0x5E, 0x04),
1247*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x73, 0x2B, 0x49, 0x7E, 0xAC, 0x97, 0x5C),
1248*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0xB2, 0xC3, 0x1E, 0x0E, 0xE7, 0xD2, 0x21),
1249*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x08, 0xD6, 0xDD, 0xAC, 0x21, 0xD6, 0x3E),
1250*62c56f98SSadaf Ebrahimi };
1251*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_26_Y[] = {
1252*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x26, 0xBE, 0x6D, 0x6D, 0xF2, 0x38, 0x3F),
1253*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x6C, 0x31, 0xA7, 0x49, 0x50, 0x3A, 0x89),
1254*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x99, 0xC6, 0xF5, 0xD2, 0xC2, 0x30, 0x5A),
1255*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xE4, 0xF6, 0x8B, 0x8B, 0x97, 0xE9, 0xB2),
1256*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x21, 0xB7, 0x0D, 0xFC, 0x15, 0x54, 0x0B),
1257*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x83, 0x1C, 0xA4, 0xCD, 0x6B, 0x9D, 0xF2),
1258*62c56f98SSadaf Ebrahimi };
1259*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_27_X[] = {
1260*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xE8, 0x4C, 0x48, 0xE4, 0xAA, 0x69, 0x93),
1261*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x7A, 0x27, 0xFC, 0x37, 0x96, 0x1A, 0x7B),
1262*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0xE7, 0x30, 0xA5, 0xCF, 0x13, 0x46, 0x5C),
1263*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xD8, 0xAF, 0x74, 0x23, 0x4D, 0x56, 0x84),
1264*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x3D, 0x44, 0x14, 0x1B, 0x97, 0x83, 0xF0),
1265*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x47, 0xD7, 0x5F, 0xFD, 0x98, 0x38, 0xF7),
1266*62c56f98SSadaf Ebrahimi };
1267*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_27_Y[] = {
1268*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x73, 0x64, 0x36, 0xFD, 0x7B, 0xC1, 0x15),
1269*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x5D, 0x32, 0xD2, 0x47, 0x94, 0x89, 0x2D),
1270*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xE9, 0x30, 0xAC, 0x06, 0xC8, 0x65, 0x04),
1271*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x6C, 0xB9, 0x1B, 0xF7, 0x61, 0x49, 0x53),
1272*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0xFF, 0x32, 0x43, 0x80, 0xDA, 0xA6, 0xB1),
1273*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xF8, 0x04, 0x01, 0x95, 0x35, 0xCE, 0x21),
1274*62c56f98SSadaf Ebrahimi };
1275*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_28_X[] = {
1276*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x06, 0x46, 0x0D, 0x51, 0xE2, 0xD8, 0xAC),
1277*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x57, 0x1D, 0x6F, 0x79, 0xA0, 0xCD, 0xA6),
1278*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0xFB, 0x36, 0xCA, 0xAD, 0xF5, 0x9E, 0x41),
1279*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x7A, 0x1D, 0x9E, 0x1D, 0x95, 0x48, 0xDC),
1280*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x26, 0xA5, 0xB7, 0x15, 0x2C, 0xC2, 0xC6),
1281*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x42, 0x72, 0xAA, 0x11, 0xDC, 0xC9, 0xB6),
1282*62c56f98SSadaf Ebrahimi };
1283*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_28_Y[] = {
1284*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x6C, 0x64, 0xA7, 0x62, 0x3C, 0xAB, 0xD4),
1285*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x6A, 0x44, 0xD8, 0x60, 0xC0, 0xA8, 0x80),
1286*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x76, 0x58, 0x12, 0x57, 0x3C, 0x89, 0x46),
1287*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x4F, 0x83, 0xCE, 0xCB, 0xB8, 0xD0, 0x2C),
1288*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x84, 0x04, 0xB0, 0xAD, 0xEB, 0xFA, 0xDF),
1289*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xA4, 0xC3, 0x41, 0x44, 0x4E, 0x65, 0x3E),
1290*62c56f98SSadaf Ebrahimi };
1291*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_29_X[] = {
1292*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x16, 0xA9, 0x1C, 0xE7, 0x65, 0x20, 0xC1),
1293*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x53, 0x32, 0xF8, 0xC0, 0xA6, 0xBD, 0x2C),
1294*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xF0, 0xE6, 0x57, 0x31, 0xCC, 0x26, 0x6F),
1295*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xE3, 0x54, 0x1C, 0x34, 0xD3, 0x17, 0xBC),
1296*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xAE, 0xED, 0xFB, 0xCD, 0xE7, 0x1E, 0x9F),
1297*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x16, 0x1C, 0x34, 0x40, 0x00, 0x1F, 0xB6),
1298*62c56f98SSadaf Ebrahimi };
1299*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_29_Y[] = {
1300*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x32, 0x00, 0xC2, 0xD4, 0x3B, 0x1A, 0x09),
1301*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xE0, 0x99, 0x8F, 0x0C, 0x4A, 0x16, 0x44),
1302*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x73, 0x18, 0x1B, 0xD4, 0x94, 0x29, 0x62),
1303*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xA4, 0x2D, 0xB1, 0x9D, 0x74, 0x32, 0x67),
1304*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0xF4, 0xB1, 0x0C, 0x37, 0x62, 0x8B, 0x66),
1305*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xFF, 0xDA, 0xE2, 0x35, 0xA3, 0xB6, 0x42),
1306*62c56f98SSadaf Ebrahimi };
1307*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_30_X[] = {
1308*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x49, 0x99, 0x65, 0xC5, 0xED, 0x16, 0xEF),
1309*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x42, 0x9A, 0xF3, 0xA7, 0x4E, 0x6F, 0x2B),
1310*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x0A, 0x7E, 0xC0, 0xD7, 0x4E, 0x07, 0x55),
1311*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x7A, 0x31, 0x69, 0xA6, 0xB9, 0x15, 0x34),
1312*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0xE0, 0x72, 0xA4, 0x3F, 0xB9, 0xF8, 0x0C),
1313*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x75, 0x32, 0x85, 0xA2, 0xDE, 0x37, 0x12),
1314*62c56f98SSadaf Ebrahimi };
1315*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_30_Y[] = {
1316*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xC0, 0x0D, 0xCF, 0x25, 0x41, 0xA4, 0xF4),
1317*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xFC, 0xB2, 0x48, 0xC3, 0x85, 0x83, 0x4B),
1318*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xBE, 0x0B, 0x58, 0x2D, 0x7A, 0x9A, 0x62),
1319*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0xF3, 0x81, 0x18, 0x1B, 0x74, 0x4F, 0x2C),
1320*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x43, 0xA3, 0x0A, 0x16, 0x8B, 0xA3, 0x1E),
1321*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x18, 0x81, 0x7B, 0x8D, 0xA2, 0x35, 0x77),
1322*62c56f98SSadaf Ebrahimi };
1323*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_31_X[] = {
1324*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xC4, 0x3F, 0x2C, 0xE7, 0x5F, 0x99, 0x03),
1325*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x2B, 0xB7, 0xB6, 0xAD, 0x5A, 0x56, 0xFF),
1326*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x00, 0xA4, 0x48, 0xC8, 0xE8, 0xBA, 0xBF),
1327*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xA1, 0xB5, 0x13, 0x5A, 0xCD, 0x99, 0x9C),
1328*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x95, 0xAD, 0xFC, 0xE2, 0x7E, 0xE7, 0xFE),
1329*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x6B, 0xD1, 0x34, 0x99, 0x53, 0x63, 0x0B),
1330*62c56f98SSadaf Ebrahimi };
1331*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp384r1_T_31_Y[] = {
1332*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x8A, 0x77, 0x5D, 0x2B, 0xAB, 0x01, 0x28),
1333*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x85, 0xD0, 0xD5, 0x49, 0x83, 0x4D, 0x60),
1334*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0xC6, 0x91, 0x30, 0x3B, 0x00, 0xAF, 0x7A),
1335*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xAE, 0x61, 0x07, 0xE1, 0xB6, 0xE2, 0xC9),
1336*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x43, 0x41, 0xFE, 0x9B, 0xB6, 0xF0, 0xA5),
1337*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x97, 0xAE, 0xAD, 0x89, 0x88, 0x9E, 0x41),
1338*62c56f98SSadaf Ebrahimi };
1339*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp384r1_T[32] = {
1340*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp384r1_T_0_X, secp384r1_T_0_Y),
1341*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_1_X, secp384r1_T_1_Y),
1342*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_2_X, secp384r1_T_2_Y),
1343*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_3_X, secp384r1_T_3_Y),
1344*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_4_X, secp384r1_T_4_Y),
1345*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_5_X, secp384r1_T_5_Y),
1346*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_6_X, secp384r1_T_6_Y),
1347*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_7_X, secp384r1_T_7_Y),
1348*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_8_X, secp384r1_T_8_Y),
1349*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_9_X, secp384r1_T_9_Y),
1350*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_10_X, secp384r1_T_10_Y),
1351*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_11_X, secp384r1_T_11_Y),
1352*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_12_X, secp384r1_T_12_Y),
1353*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_13_X, secp384r1_T_13_Y),
1354*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_14_X, secp384r1_T_14_Y),
1355*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_15_X, secp384r1_T_15_Y),
1356*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_16_X, secp384r1_T_16_Y),
1357*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_17_X, secp384r1_T_17_Y),
1358*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_18_X, secp384r1_T_18_Y),
1359*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_19_X, secp384r1_T_19_Y),
1360*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_20_X, secp384r1_T_20_Y),
1361*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_21_X, secp384r1_T_21_Y),
1362*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_22_X, secp384r1_T_22_Y),
1363*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_23_X, secp384r1_T_23_Y),
1364*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_24_X, secp384r1_T_24_Y),
1365*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_25_X, secp384r1_T_25_Y),
1366*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_26_X, secp384r1_T_26_Y),
1367*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_27_X, secp384r1_T_27_Y),
1368*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_28_X, secp384r1_T_28_Y),
1369*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_29_X, secp384r1_T_29_Y),
1370*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_30_X, secp384r1_T_30_Y),
1371*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp384r1_T_31_X, secp384r1_T_31_Y),
1372*62c56f98SSadaf Ebrahimi };
1373*62c56f98SSadaf Ebrahimi #else
1374*62c56f98SSadaf Ebrahimi #define secp384r1_T NULL
1375*62c56f98SSadaf Ebrahimi #endif
1376*62c56f98SSadaf Ebrahimi 
1377*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
1378*62c56f98SSadaf Ebrahimi 
1379*62c56f98SSadaf Ebrahimi /*
1380*62c56f98SSadaf Ebrahimi  * Domain parameters for secp521r1
1381*62c56f98SSadaf Ebrahimi  */
1382*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
1383*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_p[] = {
1384*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1385*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1386*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1387*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1388*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1389*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1390*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1391*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1392*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0xFF, 0x01),
1393*62c56f98SSadaf Ebrahimi };
1394*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_b[] = {
1395*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x3F, 0x50, 0x6B, 0xD4, 0x1F, 0x45, 0xEF),
1396*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x34, 0x2C, 0x3D, 0x88, 0xDF, 0x73, 0x35),
1397*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xBF, 0xB1, 0x3B, 0xBD, 0xC0, 0x52, 0x16),
1398*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x93, 0x7E, 0xEC, 0x51, 0x39, 0x19, 0x56),
1399*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x09, 0xF1, 0x8E, 0x91, 0x89, 0xB4, 0xB8),
1400*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x15, 0xB3, 0x99, 0x5B, 0x72, 0xDA, 0xA2),
1401*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x40, 0x85, 0xB6, 0xA0, 0x21, 0x9A, 0x92),
1402*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x9A, 0x1C, 0x8E, 0x61, 0xB9, 0x3E, 0x95),
1403*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x51, 0x00),
1404*62c56f98SSadaf Ebrahimi };
1405*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_gx[] = {
1406*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xBD, 0xE5, 0xC2, 0x31, 0x7E, 0x7E, 0xF9),
1407*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x42, 0x6A, 0x85, 0xC1, 0xB3, 0x48, 0x33),
1408*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0xA8, 0xFF, 0xA2, 0x27, 0xC1, 0x1D, 0xFE),
1409*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x59, 0xE7, 0xEF, 0x77, 0x5E, 0x4B, 0xA1),
1410*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x3D, 0x4D, 0x6B, 0x60, 0xAF, 0x28, 0xF8),
1411*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xB5, 0x3F, 0x05, 0x39, 0x81, 0x64, 0x9C),
1412*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xB4, 0x95, 0x23, 0x66, 0xCB, 0x3E, 0x9E),
1413*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xE9, 0x04, 0x04, 0xB7, 0x06, 0x8E, 0x85),
1414*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0xC6, 0x00),
1415*62c56f98SSadaf Ebrahimi };
1416*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_gy[] = {
1417*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x66, 0xD1, 0x9F, 0x76, 0x94, 0xBE, 0x88),
1418*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xC2, 0x72, 0xA2, 0x86, 0x70, 0x3C, 0x35),
1419*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x07, 0xAD, 0x3F, 0x01, 0xB9, 0x50, 0xC5),
1420*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x26, 0xF4, 0x5E, 0x99, 0x72, 0xEE, 0x97),
1421*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x66, 0x3E, 0x27, 0x17, 0xBD, 0xAF, 0x17),
1422*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x44, 0x9B, 0x57, 0x49, 0x44, 0xF5, 0x98),
1423*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x1B, 0x7D, 0x2C, 0xB4, 0x5F, 0x8A, 0x5C),
1424*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xC0, 0x3B, 0x9A, 0x78, 0x6A, 0x29, 0x39),
1425*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x18, 0x01),
1426*62c56f98SSadaf Ebrahimi };
1427*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_n[] = {
1428*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x64, 0x38, 0x91, 0x1E, 0xB7, 0x6F, 0xBB),
1429*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x47, 0x9C, 0x89, 0xB8, 0xC9, 0xB5, 0x3B),
1430*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0xA5, 0x09, 0xF7, 0x48, 0x01, 0xCC, 0x7F),
1431*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x96, 0x2F, 0xBF, 0x83, 0x87, 0x86, 0x51),
1432*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1433*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1434*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1435*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
1436*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0xFF, 0x01),
1437*62c56f98SSadaf Ebrahimi };
1438*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
1439*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_0_X[] = {
1440*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xBD, 0xE5, 0xC2, 0x31, 0x7E, 0x7E, 0xF9),
1441*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x42, 0x6A, 0x85, 0xC1, 0xB3, 0x48, 0x33),
1442*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0xA8, 0xFF, 0xA2, 0x27, 0xC1, 0x1D, 0xFE),
1443*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x59, 0xE7, 0xEF, 0x77, 0x5E, 0x4B, 0xA1),
1444*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x3D, 0x4D, 0x6B, 0x60, 0xAF, 0x28, 0xF8),
1445*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xB5, 0x3F, 0x05, 0x39, 0x81, 0x64, 0x9C),
1446*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xB4, 0x95, 0x23, 0x66, 0xCB, 0x3E, 0x9E),
1447*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xE9, 0x04, 0x04, 0xB7, 0x06, 0x8E, 0x85),
1448*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1449*62c56f98SSadaf Ebrahimi };
1450*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_0_Y[] = {
1451*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x66, 0xD1, 0x9F, 0x76, 0x94, 0xBE, 0x88),
1452*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xC2, 0x72, 0xA2, 0x86, 0x70, 0x3C, 0x35),
1453*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x07, 0xAD, 0x3F, 0x01, 0xB9, 0x50, 0xC5),
1454*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x26, 0xF4, 0x5E, 0x99, 0x72, 0xEE, 0x97),
1455*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x66, 0x3E, 0x27, 0x17, 0xBD, 0xAF, 0x17),
1456*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x44, 0x9B, 0x57, 0x49, 0x44, 0xF5, 0x98),
1457*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x1B, 0x7D, 0x2C, 0xB4, 0x5F, 0x8A, 0x5C),
1458*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xC0, 0x3B, 0x9A, 0x78, 0x6A, 0x29, 0x39),
1459*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1460*62c56f98SSadaf Ebrahimi };
1461*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_1_X[] = {
1462*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xB1, 0x2D, 0xEB, 0x27, 0x2F, 0xE8, 0xDA),
1463*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x4B, 0x44, 0x25, 0xDB, 0x5C, 0x5F, 0x67),
1464*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x85, 0x28, 0x78, 0x2E, 0x75, 0x34, 0x32),
1465*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x57, 0x0F, 0x73, 0x78, 0x7A, 0xE3, 0x53),
1466*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xD8, 0xEC, 0xDC, 0xDA, 0x04, 0xAD, 0xAB),
1467*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x8A, 0x09, 0xF3, 0x58, 0x79, 0xD8, 0x29),
1468*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x03, 0xCB, 0x50, 0x1A, 0x7F, 0x56, 0x00),
1469*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xA6, 0x78, 0x38, 0x85, 0x67, 0x0B, 0x40),
1470*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1471*62c56f98SSadaf Ebrahimi };
1472*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_1_Y[] = {
1473*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xD5, 0xD2, 0x22, 0xC4, 0x00, 0x3B, 0xBA),
1474*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x93, 0x0E, 0x7B, 0x85, 0x51, 0xC3, 0x06),
1475*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xA6, 0x5F, 0x54, 0x49, 0x02, 0x81, 0x78),
1476*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xE9, 0x6B, 0x3A, 0x92, 0xE7, 0x72, 0x1D),
1477*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x5F, 0x28, 0x9E, 0x91, 0x27, 0x88, 0xE3),
1478*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x28, 0x31, 0xB3, 0x84, 0xCA, 0x12, 0x32),
1479*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xF9, 0xAC, 0x22, 0x10, 0x0A, 0x64, 0x41),
1480*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xC6, 0x33, 0x1F, 0x69, 0x19, 0x18, 0xBF),
1481*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1482*62c56f98SSadaf Ebrahimi };
1483*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_2_X[] = {
1484*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x48, 0xB8, 0xC7, 0x37, 0x5A, 0x00, 0x36),
1485*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xCC, 0x32, 0xE0, 0xEE, 0x03, 0xC2, 0xBA),
1486*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x29, 0xC2, 0xE4, 0x6E, 0x24, 0x20, 0x8D),
1487*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x6B, 0x7F, 0x7B, 0xF9, 0xB0, 0xB8, 0x13),
1488*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x7B, 0x3C, 0xE1, 0x19, 0xA1, 0x23, 0x02),
1489*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xE3, 0xC2, 0x53, 0xC0, 0x07, 0x13, 0xA9),
1490*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xFE, 0x36, 0x35, 0x9F, 0x5E, 0x59, 0xCE),
1491*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x55, 0x89, 0x84, 0xBC, 0xEF, 0xA2, 0xC2),
1492*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1493*62c56f98SSadaf Ebrahimi };
1494*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_2_Y[] = {
1495*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x1A, 0x08, 0x67, 0xB4, 0xE7, 0x22, 0xED),
1496*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x26, 0xDF, 0x81, 0x3C, 0x5F, 0x1C, 0xDA),
1497*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x4D, 0xD0, 0x0A, 0x48, 0x06, 0xF4, 0x48),
1498*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x18, 0x39, 0xF7, 0xD1, 0x20, 0x77, 0x8D),
1499*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0x8F, 0x44, 0x13, 0xCB, 0x78, 0x11, 0x11),
1500*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xE2, 0x49, 0xEA, 0x43, 0x79, 0x08, 0x39),
1501*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0xD1, 0xD8, 0x73, 0x2C, 0x71, 0x2F, 0x69),
1502*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xE5, 0xE7, 0xF4, 0x46, 0xAB, 0x20, 0xCA),
1503*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1504*62c56f98SSadaf Ebrahimi };
1505*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_3_X[] = {
1506*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x0B, 0xB9, 0x71, 0x1A, 0x27, 0xB7, 0xA7),
1507*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xA2, 0x2C, 0xD1, 0xDA, 0xBC, 0xC1, 0xBD),
1508*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xA3, 0x10, 0x1F, 0x90, 0xF2, 0xA5, 0x52),
1509*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xFB, 0x20, 0xF4, 0xC0, 0x70, 0xC0, 0xF5),
1510*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0xA7, 0x99, 0xF0, 0xA5, 0xD3, 0x09, 0xDD),
1511*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0xE8, 0x14, 0x39, 0xBE, 0xCB, 0x60, 0xAF),
1512*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0xD6, 0x14, 0xA9, 0xC9, 0x20, 0xC3, 0xEA),
1513*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xA8, 0x5B, 0xFD, 0x2D, 0x96, 0xBC, 0x78),
1514*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1515*62c56f98SSadaf Ebrahimi };
1516*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_3_Y[] = {
1517*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x04, 0x45, 0xBE, 0xCE, 0x75, 0x95, 0xF6),
1518*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0xDA, 0x58, 0x49, 0x35, 0x09, 0x8D, 0x41),
1519*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xF0, 0xC0, 0x36, 0xF2, 0xA6, 0x2D, 0x14),
1520*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xFC, 0x3D, 0xA8, 0xFB, 0x3C, 0xD2, 0x51),
1521*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x4D, 0x71, 0x09, 0x18, 0x42, 0xF0, 0x2D),
1522*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xC1, 0xCE, 0x9E, 0x6A, 0x49, 0x60, 0x12),
1523*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xB1, 0x00, 0xF7, 0xA1, 0x7A, 0x31, 0xB4),
1524*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xC3, 0x86, 0xCD, 0x20, 0x4A, 0x17, 0x86),
1525*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1526*62c56f98SSadaf Ebrahimi };
1527*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_4_X[] = {
1528*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xAB, 0x8B, 0x47, 0x8D, 0xAA, 0xA6, 0x5B),
1529*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x97, 0xF0, 0xBC, 0x2D, 0xDC, 0x9D, 0x84),
1530*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x86, 0xB0, 0x74, 0xB2, 0xF4, 0xF6, 0x67),
1531*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xBD, 0xAC, 0xE3, 0x8F, 0x43, 0x5C, 0xB1),
1532*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xC3, 0xE2, 0x6E, 0x25, 0x49, 0xCD, 0x0B),
1533*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x5E, 0x08, 0xB3, 0xB9, 0xAC, 0x5F, 0xD1),
1534*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xB7, 0xD1, 0xF4, 0xDC, 0x19, 0xE9, 0xC8),
1535*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xE4, 0xFA, 0xE1, 0x36, 0x3E, 0xED, 0x6E),
1536*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1537*62c56f98SSadaf Ebrahimi };
1538*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_4_Y[] = {
1539*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x67, 0x92, 0x84, 0x6E, 0x48, 0x03, 0x51),
1540*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x95, 0xEF, 0x8F, 0xB2, 0x82, 0x6B, 0x1C),
1541*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xFA, 0xB9, 0x55, 0x23, 0xFE, 0x09, 0xB3),
1542*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x79, 0x85, 0x4B, 0x0E, 0xD4, 0x35, 0xDB),
1543*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x27, 0x45, 0x81, 0xE0, 0x88, 0x52, 0xAD),
1544*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x63, 0xA2, 0x4B, 0xBC, 0x5D, 0xB1, 0x92),
1545*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x8C, 0x83, 0xD9, 0x3E, 0xD3, 0x42, 0xDA),
1546*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x03, 0x3A, 0x31, 0xBA, 0xE9, 0x3A, 0xD1),
1547*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1548*62c56f98SSadaf Ebrahimi };
1549*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_5_X[] = {
1550*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x10, 0xCD, 0x2D, 0x00, 0xFE, 0x32, 0xA7),
1551*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x6E, 0x1F, 0xDA, 0xF8, 0x6F, 0x4D, 0x03),
1552*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x79, 0x7D, 0x09, 0xE5, 0xD3, 0x03, 0x21),
1553*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xC3, 0xBE, 0xDF, 0x07, 0x65, 0x49, 0xCC),
1554*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x57, 0x33, 0xEF, 0xAE, 0x4F, 0x04, 0x27),
1555*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0xE9, 0x9B, 0xFE, 0xBF, 0xE6, 0x85, 0xF6),
1556*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0xBA, 0xAA, 0x06, 0xC4, 0xC6, 0xB8, 0x57),
1557*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x83, 0x01, 0xA9, 0xF6, 0x51, 0xE7, 0xB8),
1558*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1559*62c56f98SSadaf Ebrahimi };
1560*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_5_Y[] = {
1561*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xA6, 0x15, 0x8E, 0xAB, 0x1F, 0x10, 0x87),
1562*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x08, 0x27, 0x1A, 0xA1, 0x21, 0xAD, 0xF5),
1563*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x09, 0x90, 0x6E, 0x50, 0x90, 0x9A, 0x5D),
1564*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x9A, 0xFE, 0xD7, 0xA1, 0xF5, 0xA2, 0x15),
1565*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x7D, 0xE3, 0xDC, 0x21, 0xFB, 0xA4, 0x7B),
1566*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xBF, 0x07, 0xFF, 0x45, 0xDF, 0x51, 0x77),
1567*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x5C, 0x34, 0x02, 0x62, 0x9B, 0x08, 0x12),
1568*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xCE, 0x9A, 0x6A, 0xEC, 0x75, 0xF6, 0x46),
1569*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1570*62c56f98SSadaf Ebrahimi };
1571*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_6_X[] = {
1572*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x59, 0xF4, 0x78, 0x3C, 0x60, 0xB1, 0x4A),
1573*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x37, 0x84, 0x6A, 0xDC, 0xF2, 0x9A, 0x7D),
1574*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x9A, 0x9A, 0x15, 0x36, 0xE0, 0x2B, 0x2D),
1575*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x38, 0x9C, 0x50, 0x3D, 0x1E, 0x37, 0x82),
1576*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x79, 0xF0, 0x92, 0xF2, 0x8B, 0x18, 0x82),
1577*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xE0, 0x82, 0x1E, 0x80, 0x82, 0x4B, 0xD7),
1578*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xBB, 0x59, 0x6B, 0x8A, 0x77, 0x41, 0x40),
1579*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xF9, 0xD4, 0xB8, 0x4A, 0x82, 0xCF, 0x40),
1580*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1581*62c56f98SSadaf Ebrahimi };
1582*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_6_Y[] = {
1583*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x8C, 0xC8, 0x9B, 0x72, 0x9E, 0xF7, 0xF9),
1584*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0xCE, 0xE9, 0x77, 0x0A, 0x19, 0x59, 0x84),
1585*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xA1, 0x41, 0x6A, 0x72, 0x4B, 0xB4, 0xDC),
1586*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x35, 0x43, 0xE2, 0x8C, 0xBE, 0x0D, 0xE3),
1587*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xEB, 0xAD, 0xF3, 0xA9, 0xA6, 0x68, 0xA1),
1588*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x2F, 0xE2, 0x48, 0x0C, 0xDB, 0x1F, 0x42),
1589*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x1E, 0x60, 0x9B, 0x2A, 0xD2, 0xC1, 0x3C),
1590*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x64, 0xB5, 0xD2, 0xF6, 0xF6, 0x6E, 0x22),
1591*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1592*62c56f98SSadaf Ebrahimi };
1593*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_7_X[] = {
1594*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x3D, 0x30, 0x78, 0x10, 0x18, 0x41, 0x51),
1595*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x1D, 0x1C, 0xE0, 0x6D, 0x83, 0xD1, 0x93),
1596*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x03, 0x0B, 0xF5, 0x2F, 0x6C, 0x04, 0x98),
1597*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x3E, 0xD5, 0xFC, 0x31, 0x5B, 0x3A, 0xEB),
1598*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x82, 0x2F, 0xFB, 0xFE, 0xF8, 0x76, 0x39),
1599*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x26, 0xDA, 0x9C, 0x36, 0xF5, 0x93, 0xD1),
1600*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0xE7, 0x6E, 0xD2, 0x7D, 0x81, 0x09, 0xC6),
1601*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x03, 0xF9, 0x58, 0x48, 0x24, 0xA2, 0xEE),
1602*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1603*62c56f98SSadaf Ebrahimi };
1604*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_7_Y[] = {
1605*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x79, 0x0C, 0x8E, 0x6B, 0x95, 0xF3, 0xC4),
1606*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x10, 0x5C, 0x87, 0x03, 0x39, 0xCF, 0x68),
1607*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xF0, 0xF7, 0xC1, 0x07, 0xA4, 0xF4, 0x3F),
1608*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xE8, 0x02, 0x89, 0x65, 0xC4, 0x72, 0x36),
1609*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x88, 0xEA, 0x96, 0x67, 0x0B, 0x5D, 0xDF),
1610*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x75, 0x60, 0xA8, 0xBD, 0x74, 0xDF, 0x68),
1611*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xE5, 0x71, 0x50, 0x67, 0xD0, 0xD2, 0xE6),
1612*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xFC, 0xE5, 0xC7, 0x77, 0xB0, 0x7F, 0x8C),
1613*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1614*62c56f98SSadaf Ebrahimi };
1615*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_8_X[] = {
1616*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x86, 0x69, 0xCD, 0x0D, 0x9A, 0xBD, 0x66),
1617*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x17, 0xBC, 0xBB, 0x59, 0x85, 0x7D, 0x0E),
1618*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xA8, 0x76, 0xAC, 0x80, 0xA9, 0x72, 0xE0),
1619*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x78, 0xC1, 0xE2, 0x4D, 0xAF, 0xF9, 0x3C),
1620*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x97, 0x8E, 0x74, 0xC4, 0x4B, 0xB2, 0x85),
1621*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xD8, 0xF6, 0xF3, 0xAF, 0x2F, 0x52, 0xE5),
1622*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x57, 0xF4, 0xCE, 0xEE, 0x43, 0xED, 0x60),
1623*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x46, 0x38, 0xDE, 0x20, 0xFD, 0x59, 0x18),
1624*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1625*62c56f98SSadaf Ebrahimi };
1626*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_8_Y[] = {
1627*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x18, 0xE8, 0x58, 0xB9, 0x76, 0x2C, 0xE6),
1628*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x54, 0xE4, 0xFE, 0xC7, 0xBC, 0x31, 0x37),
1629*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xF8, 0x89, 0xEE, 0x70, 0xB5, 0xB0, 0x2C),
1630*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x22, 0x26, 0x9A, 0x53, 0xB9, 0x38, 0x0A),
1631*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xA7, 0x19, 0x8C, 0x74, 0x7E, 0x88, 0x46),
1632*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xDA, 0x0A, 0xE8, 0xDA, 0xA5, 0xBE, 0x1D),
1633*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x5C, 0xF7, 0xB1, 0x0C, 0x72, 0xFB, 0x09),
1634*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0xE2, 0x23, 0xE7, 0x46, 0xB7, 0xE0, 0x91),
1635*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1636*62c56f98SSadaf Ebrahimi };
1637*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_9_X[] = {
1638*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x36, 0xBC, 0xBD, 0x48, 0x11, 0x8E, 0x72),
1639*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0xBB, 0xA1, 0xF7, 0x0B, 0x9E, 0xBF, 0xDF),
1640*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x28, 0xE1, 0xA2, 0x8F, 0xFC, 0xFC, 0xD6),
1641*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0xFE, 0x19, 0x0A, 0xE5, 0xE7, 0x69, 0x39),
1642*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xCD, 0x12, 0xF5, 0xBE, 0xD3, 0x04, 0xF1),
1643*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xA8, 0x0D, 0x81, 0x59, 0xC4, 0x79, 0x98),
1644*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xF3, 0x4B, 0x92, 0x65, 0xC3, 0x31, 0xAD),
1645*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0xB5, 0x4F, 0x4D, 0x91, 0xD4, 0xE2, 0xB2),
1646*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1647*62c56f98SSadaf Ebrahimi };
1648*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_9_Y[] = {
1649*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x09, 0x41, 0x79, 0x1D, 0x4D, 0x0D, 0x33),
1650*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x31, 0x18, 0xBA, 0xA0, 0xF2, 0x6E, 0x7E),
1651*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x5B, 0x4D, 0x4F, 0xAF, 0xC9, 0x8C, 0xA1),
1652*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x99, 0x9C, 0x06, 0x68, 0xDE, 0xD8, 0x29),
1653*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x04, 0xE1, 0xB5, 0x9D, 0x00, 0xBC, 0xB8),
1654*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x95, 0x92, 0x8D, 0x72, 0xD3, 0x37, 0x42),
1655*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x4B, 0x27, 0xA2, 0xE8, 0xA4, 0x26, 0xA1),
1656*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x45, 0x9C, 0xA9, 0xCB, 0x9F, 0xBA, 0x85),
1657*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1658*62c56f98SSadaf Ebrahimi };
1659*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_10_X[] = {
1660*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x7E, 0x1B, 0x64, 0xF4, 0xE8, 0xA5, 0x55),
1661*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x20, 0xA9, 0xCA, 0xF3, 0x89, 0xE5, 0xE1),
1662*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xED, 0xFC, 0xAB, 0xD9, 0x0A, 0xB9, 0x07),
1663*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x6F, 0x46, 0x7C, 0xCD, 0x78, 0xFF, 0x05),
1664*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xAB, 0x71, 0x5A, 0x94, 0xAB, 0x20, 0x20),
1665*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x2E, 0xEE, 0x87, 0x57, 0x1F, 0xAD, 0xD3),
1666*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x4C, 0x3D, 0xFB, 0x7E, 0xA1, 0x8B, 0x07),
1667*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xCF, 0x07, 0x86, 0xBA, 0x53, 0x37, 0xCF),
1668*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1669*62c56f98SSadaf Ebrahimi };
1670*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_10_Y[] = {
1671*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x26, 0xB2, 0xB9, 0xE2, 0x91, 0xE3, 0xB5),
1672*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xC9, 0x54, 0x84, 0x08, 0x3D, 0x0B, 0xD2),
1673*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xA8, 0x77, 0x2F, 0x64, 0x45, 0x99, 0x4C),
1674*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x96, 0x16, 0x1F, 0xDB, 0x96, 0x28, 0x97),
1675*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x2B, 0x8D, 0xFF, 0xA2, 0x4F, 0x55, 0xD3),
1676*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0xE6, 0x48, 0xBD, 0x99, 0x3D, 0x12, 0x57),
1677*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x84, 0x59, 0xDA, 0xB9, 0xB6, 0x66, 0x12),
1678*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x78, 0x41, 0x92, 0xDF, 0xF4, 0x3F, 0x63),
1679*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1680*62c56f98SSadaf Ebrahimi };
1681*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_11_X[] = {
1682*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x86, 0x6F, 0x4F, 0xBF, 0x67, 0xDF, 0x2F),
1683*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x2B, 0x1E, 0x5F, 0x00, 0xEA, 0xF6, 0x56),
1684*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xB9, 0x6A, 0x89, 0xD8, 0xC0, 0xD7, 0xA7),
1685*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x9A, 0x32, 0x23, 0xA0, 0x02, 0x91, 0x58),
1686*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x7F, 0x6A, 0x15, 0x64, 0x6A, 0x8B, 0xBB),
1687*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x57, 0x82, 0x58, 0xA9, 0x56, 0xB5, 0xFB),
1688*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x50, 0x92, 0x60, 0xCC, 0x81, 0x24, 0xA8),
1689*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x3D, 0xAD, 0xDA, 0xD9, 0x51, 0x3E, 0x57),
1690*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1691*62c56f98SSadaf Ebrahimi };
1692*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_11_Y[] = {
1693*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0xFE, 0x8F, 0xB0, 0x0B, 0xDE, 0x2E, 0x7E),
1694*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xD2, 0xBE, 0xEF, 0xAC, 0x76, 0x71, 0xA3),
1695*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xE8, 0x72, 0x0B, 0xAC, 0xFE, 0xCA, 0x5A),
1696*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x5B, 0xC7, 0xFC, 0xE3, 0x3C, 0x7C, 0x4C),
1697*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x04, 0xA7, 0xB9, 0x9B, 0x93, 0xC0, 0x2F),
1698*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x48, 0x4B, 0x8E, 0x32, 0xC5, 0xF0, 0x6B),
1699*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x42, 0x07, 0xC1, 0xF2, 0xF1, 0x72, 0x5B),
1700*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x37, 0x54, 0x9C, 0x88, 0xD2, 0x62, 0xAA),
1701*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1702*62c56f98SSadaf Ebrahimi };
1703*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_12_X[] = {
1704*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x19, 0x8A, 0x89, 0x58, 0xA2, 0x0F, 0xDB),
1705*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0xCC, 0x4C, 0x97, 0x30, 0x66, 0x34, 0x26),
1706*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x6A, 0x1E, 0x1F, 0xDB, 0xC9, 0x5E, 0x13),
1707*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x4D, 0x49, 0xFF, 0x9B, 0x9C, 0xAC, 0x9B),
1708*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0xE4, 0x4B, 0xF2, 0xD4, 0x1A, 0xD2, 0x78),
1709*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xDA, 0xE8, 0x61, 0x9F, 0xC8, 0x49, 0x32),
1710*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xCB, 0xF2, 0x2D, 0x85, 0xF6, 0x8D, 0x52),
1711*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xC5, 0xCD, 0x2C, 0x79, 0xC6, 0x0E, 0x4F),
1712*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1713*62c56f98SSadaf Ebrahimi };
1714*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_12_Y[] = {
1715*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x1D, 0x55, 0x0F, 0xF8, 0x22, 0x9F, 0x78),
1716*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x56, 0xBA, 0xE7, 0x57, 0x32, 0xEC, 0x42),
1717*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x9A, 0xC6, 0x4C, 0x09, 0xC4, 0x52, 0x3F),
1718*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x1E, 0x6F, 0xF4, 0x7D, 0x27, 0xDD, 0xAF),
1719*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x11, 0x16, 0xEC, 0x79, 0x83, 0xAD, 0xAE),
1720*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x4E, 0x92, 0x1F, 0x19, 0x7D, 0x65, 0xDC),
1721*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0xFF, 0x78, 0x15, 0x45, 0x63, 0x32, 0xE4),
1722*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x91, 0xD0, 0x78, 0x58, 0xDA, 0x50, 0x47),
1723*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1724*62c56f98SSadaf Ebrahimi };
1725*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_13_X[] = {
1726*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0xDE, 0x40, 0xF6, 0x41, 0xB4, 0x3B, 0x95),
1727*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x8D, 0xE0, 0xE1, 0xA9, 0xF0, 0x35, 0x5D),
1728*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xD4, 0xBA, 0x7B, 0xCC, 0x1B, 0x3A, 0x32),
1729*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x5A, 0x2E, 0x74, 0x47, 0x14, 0xC3, 0x4D),
1730*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xF0, 0x8B, 0x06, 0x15, 0x8E, 0x0E, 0xCA),
1731*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0xD2, 0xEB, 0x97, 0x50, 0x7D, 0x31, 0xFC),
1732*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x93, 0x4C, 0xDB, 0x97, 0x79, 0x44, 0xF5),
1733*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xA2, 0xA0, 0x0B, 0xC8, 0x3A, 0x8A, 0xF9),
1734*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1735*62c56f98SSadaf Ebrahimi };
1736*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_13_Y[] = {
1737*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x50, 0x92, 0x9E, 0x24, 0x1F, 0xCB, 0x4C),
1738*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x16, 0xC9, 0xC5, 0x3D, 0x5A, 0xAF, 0x97),
1739*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xE3, 0x97, 0xE4, 0xA8, 0x50, 0xF6, 0x7E),
1740*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x57, 0x97, 0x42, 0x78, 0x92, 0x49, 0x0D),
1741*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0xEB, 0x62, 0x24, 0xFB, 0x8F, 0x32, 0xCF),
1742*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x0C, 0x36, 0x6E, 0x8F, 0xE8, 0xE8, 0x8E),
1743*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xD3, 0x7C, 0xC7, 0x8D, 0x3F, 0x5C, 0xE1),
1744*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x64, 0x6A, 0x73, 0x10, 0x79, 0xB8, 0x5A),
1745*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1746*62c56f98SSadaf Ebrahimi };
1747*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_14_X[] = {
1748*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xF9, 0xEF, 0xA5, 0x20, 0x4A, 0x5C, 0xA1),
1749*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xF3, 0xF4, 0x49, 0x5B, 0x73, 0xAA, 0x1B),
1750*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xF2, 0xEA, 0x0F, 0x00, 0xAD, 0x53, 0xAB),
1751*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xB8, 0x66, 0xED, 0xC4, 0x2B, 0x4C, 0x35),
1752*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x2F, 0xC1, 0x9A, 0x37, 0xD2, 0x7F, 0x58),
1753*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xA7, 0x81, 0x38, 0x64, 0xC9, 0x37, 0x38),
1754*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x3B, 0x6C, 0x9F, 0x5B, 0xD9, 0x8B, 0x1D),
1755*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x14, 0xD9, 0x08, 0xD8, 0xD2, 0x7E, 0x23),
1756*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1757*62c56f98SSadaf Ebrahimi };
1758*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_14_Y[] = {
1759*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x71, 0xE6, 0x3D, 0xD1, 0xB0, 0xE7, 0xCD),
1760*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x81, 0x23, 0xEC, 0x2D, 0x42, 0x45, 0xE6),
1761*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x5B, 0x44, 0x6B, 0x89, 0x03, 0x67, 0x28),
1762*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x27, 0xAE, 0x80, 0x5A, 0x33, 0xBE, 0x11),
1763*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xB6, 0x64, 0x1A, 0xDF, 0xD3, 0x85, 0x91),
1764*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x8C, 0x22, 0xBA, 0xD0, 0xBD, 0xCC, 0xA0),
1765*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x3C, 0x01, 0x3A, 0xFF, 0x9D, 0xC7, 0x6B),
1766*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xC7, 0x64, 0xB4, 0x59, 0x4E, 0x9F, 0x22),
1767*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1768*62c56f98SSadaf Ebrahimi };
1769*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_15_X[] = {
1770*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x34, 0x0A, 0x41, 0x94, 0xA8, 0xF2, 0xB7),
1771*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xD4, 0xE4, 0xF0, 0x97, 0x45, 0x6D, 0xCA),
1772*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0x1F, 0x4D, 0x6D, 0xFE, 0xA0, 0xC4, 0x84),
1773*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x28, 0x5C, 0x40, 0xBB, 0x65, 0xD4, 0x42),
1774*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xA8, 0x87, 0x35, 0x20, 0x3A, 0x89, 0x44),
1775*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xFD, 0x4F, 0xAB, 0x2D, 0xD1, 0xD0, 0xC0),
1776*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xE8, 0x00, 0xFC, 0x69, 0x52, 0xF8, 0xD5),
1777*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x9A, 0x99, 0xE1, 0xDC, 0x9C, 0x3F, 0xD9),
1778*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1779*62c56f98SSadaf Ebrahimi };
1780*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_15_Y[] = {
1781*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x08, 0x98, 0xD9, 0xCA, 0x73, 0xD5, 0xA9),
1782*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x2C, 0xE0, 0xA7, 0x3E, 0x91, 0xD7, 0x87),
1783*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x04, 0xB0, 0x54, 0x09, 0xF4, 0x72, 0xB7),
1784*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xEE, 0x28, 0xCC, 0xE8, 0x50, 0x78, 0x20),
1785*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x91, 0x03, 0x76, 0xDB, 0x68, 0x24, 0x77),
1786*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xE0, 0x56, 0xB2, 0x5D, 0x12, 0xD3, 0xB5),
1787*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x42, 0x59, 0x8B, 0xDF, 0x67, 0xB5, 0xBE),
1788*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xCC, 0xE5, 0x31, 0x53, 0x7A, 0x46, 0xB3),
1789*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1790*62c56f98SSadaf Ebrahimi };
1791*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_16_X[] = {
1792*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x8D, 0x59, 0xB5, 0x1B, 0x0F, 0xF4, 0xAF),
1793*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x2F, 0xD1, 0x2C, 0xE0, 0xD8, 0x04, 0xEF),
1794*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xF4, 0xD7, 0xBA, 0xB0, 0xA3, 0x7E, 0xC9),
1795*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x08, 0x51, 0x56, 0xA6, 0x76, 0x67, 0x33),
1796*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x17, 0x63, 0xFE, 0x56, 0xD0, 0xD9, 0x71),
1797*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0xF6, 0xC3, 0x14, 0x47, 0xC5, 0xA7, 0x31),
1798*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x4C, 0x80, 0xF6, 0xA2, 0x57, 0xA7, 0x5D),
1799*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xB3, 0x7B, 0xF8, 0x2F, 0xE1, 0x3E, 0x7B),
1800*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1801*62c56f98SSadaf Ebrahimi };
1802*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_16_Y[] = {
1803*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0xF4, 0xF9, 0x6B, 0x7B, 0x90, 0xDF, 0x30),
1804*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x82, 0xEF, 0x62, 0xA1, 0x4C, 0x53, 0xCA),
1805*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x99, 0x76, 0x01, 0xBA, 0x8D, 0x0F, 0x54),
1806*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xF4, 0x58, 0x73, 0x56, 0xFE, 0xDD, 0x7C),
1807*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xCE, 0xF9, 0xE8, 0xA1, 0x34, 0xC3, 0x5B),
1808*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x5F, 0xDC, 0x6A, 0x3D, 0xD8, 0x7F, 0x42),
1809*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xF4, 0x51, 0xB8, 0xB8, 0xC1, 0xD7, 0x2F),
1810*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x7D, 0x58, 0xD1, 0xD4, 0x1B, 0x4D, 0x23),
1811*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1812*62c56f98SSadaf Ebrahimi };
1813*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_17_X[] = {
1814*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x95, 0xDF, 0x00, 0xD8, 0x21, 0xDE, 0x94),
1815*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x47, 0x3C, 0xC3, 0xB2, 0x01, 0x53, 0x5D),
1816*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x17, 0x43, 0x23, 0xBD, 0xCA, 0x71, 0xF2),
1817*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xBA, 0x0F, 0x4F, 0xDC, 0x41, 0x54, 0xBE),
1818*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x39, 0x26, 0x70, 0x53, 0x32, 0x18, 0x11),
1819*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x46, 0x07, 0x97, 0x3A, 0x57, 0xE0, 0x01),
1820*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x92, 0x4F, 0xCE, 0xDF, 0x25, 0x80, 0x26),
1821*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x6F, 0x9A, 0x03, 0x05, 0x4B, 0xD1, 0x47),
1822*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1823*62c56f98SSadaf Ebrahimi };
1824*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_17_Y[] = {
1825*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x01, 0x72, 0x30, 0x90, 0x17, 0x51, 0x20),
1826*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xFB, 0x41, 0x65, 0x5C, 0xB4, 0x2D, 0xEE),
1827*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xCD, 0xCD, 0xAA, 0x41, 0xCC, 0xBB, 0x07),
1828*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xCE, 0x08, 0x0A, 0x63, 0xE9, 0xA2, 0xFF),
1829*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xA8, 0x21, 0x7F, 0x7A, 0x5B, 0x9B, 0x81),
1830*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x6B, 0x89, 0x44, 0x0A, 0x7F, 0x85, 0x5F),
1831*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0xDE, 0x7C, 0x19, 0x5C, 0x65, 0x26, 0x61),
1832*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0xAC, 0x62, 0x29, 0x4A, 0xF1, 0xD0, 0x81),
1833*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1834*62c56f98SSadaf Ebrahimi };
1835*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_18_X[] = {
1836*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x00, 0x40, 0x87, 0xEB, 0xA9, 0x58, 0x56),
1837*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x51, 0x0B, 0xFF, 0x56, 0x35, 0x51, 0xB3),
1838*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xAC, 0x08, 0x94, 0x71, 0xDA, 0xEC, 0x99),
1839*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x4D, 0xC5, 0x7B, 0x31, 0x8B, 0x8D, 0x5E),
1840*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x05, 0xF1, 0x3E, 0x9E, 0x8F, 0x17, 0x8F),
1841*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x9C, 0x4B, 0x62, 0x94, 0xAD, 0x49, 0xFC),
1842*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xC9, 0xC6, 0x8F, 0xFD, 0x33, 0x44, 0x34),
1843*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x96, 0x17, 0x7F, 0x42, 0xBE, 0xF7, 0x0D),
1844*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1845*62c56f98SSadaf Ebrahimi };
1846*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_18_Y[] = {
1847*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0x29, 0x39, 0x13, 0x08, 0x8D, 0x91, 0x47),
1848*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x79, 0xF9, 0x2F, 0xA9, 0x0A, 0xCF, 0xD6),
1849*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x87, 0x7A, 0xA3, 0x19, 0xAB, 0x55, 0xAD),
1850*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x0B, 0x01, 0xC5, 0x56, 0x19, 0x9D, 0x9E),
1851*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0xDE, 0x82, 0x3B, 0xEA, 0xD3, 0x0B, 0x8C),
1852*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x6B, 0xC7, 0xF3, 0x0F, 0x82, 0x87, 0x6C),
1853*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x2E, 0x23, 0xF2, 0x39, 0x9D, 0x49, 0x70),
1854*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0xDE, 0xAF, 0x7A, 0xEE, 0xB0, 0xDA, 0x70),
1855*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1856*62c56f98SSadaf Ebrahimi };
1857*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_19_X[] = {
1858*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x4E, 0x2A, 0x50, 0xFD, 0x8E, 0xC0, 0xEB),
1859*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x0F, 0x7C, 0x76, 0x63, 0xD8, 0x89, 0x45),
1860*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x2D, 0xB9, 0x4E, 0xF4, 0xEE, 0x85, 0xCF),
1861*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x95, 0x5C, 0x96, 0x5D, 0xAA, 0x59, 0x0B),
1862*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xDB, 0xD2, 0x68, 0x8E, 0x5A, 0x94, 0x60),
1863*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x02, 0xBF, 0x77, 0x9F, 0xB9, 0x4C, 0xC9),
1864*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xDC, 0xC0, 0xCF, 0x81, 0x1E, 0xC4, 0x6C),
1865*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xCC, 0x37, 0x86, 0xDC, 0xE2, 0x64, 0x72),
1866*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1867*62c56f98SSadaf Ebrahimi };
1868*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_19_Y[] = {
1869*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x30, 0xB1, 0x59, 0x20, 0x9D, 0x98, 0x28),
1870*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x0C, 0x9D, 0xF8, 0x20, 0xDC, 0x90, 0xBA),
1871*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xA0, 0xF4, 0xE7, 0x3E, 0x9C, 0x9E, 0xA2),
1872*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x25, 0xA2, 0xB0, 0x54, 0xCD, 0x2E, 0x33),
1873*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xD9, 0x42, 0xB0, 0x80, 0xB0, 0xA3, 0x38),
1874*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0xFE, 0x9D, 0x8D, 0x40, 0xFF, 0x27, 0x6D),
1875*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x9D, 0xA6, 0x88, 0x3A, 0x8B, 0x6F, 0x14),
1876*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x39, 0xEE, 0x1F, 0x3F, 0xB1, 0x4F, 0x63),
1877*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1878*62c56f98SSadaf Ebrahimi };
1879*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_20_X[] = {
1880*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xD7, 0x9E, 0xFF, 0xD2, 0x35, 0x67, 0x03),
1881*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x4F, 0x15, 0x5D, 0xE3, 0xE8, 0x53, 0x86),
1882*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xF7, 0x24, 0x98, 0xA2, 0xCB, 0x11, 0x68),
1883*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x2E, 0x25, 0xE1, 0x94, 0xC5, 0xA3, 0x96),
1884*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x82, 0x6E, 0xBA, 0xE7, 0x43, 0x25, 0xB0),
1885*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x65, 0xB4, 0x49, 0x73, 0x18, 0x35, 0x54),
1886*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0x5B, 0xBC, 0x62, 0x86, 0x4C, 0xC1, 0xB7),
1887*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xF2, 0x95, 0xA2, 0xBB, 0xA2, 0x35, 0x65),
1888*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1889*62c56f98SSadaf Ebrahimi };
1890*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_20_Y[] = {
1891*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x59, 0x62, 0xB0, 0x4B, 0x1E, 0xB4, 0xD8),
1892*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x55, 0xCE, 0xB0, 0x69, 0xBA, 0x63, 0x10),
1893*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0x69, 0x86, 0xDB, 0x34, 0x7D, 0x68, 0x64),
1894*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x06, 0xCA, 0x55, 0x44, 0x36, 0x2B, 0xBA),
1895*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xD4, 0xC4, 0x3D, 0xCD, 0x9E, 0x69, 0xA4),
1896*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x44, 0xE4, 0xBF, 0x31, 0xE6, 0x40, 0x9F),
1897*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x4F, 0xFA, 0x75, 0xE3, 0xFB, 0x97, 0x0E),
1898*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xC0, 0xBD, 0x1C, 0x48, 0xB0, 0x26, 0xD0),
1899*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1900*62c56f98SSadaf Ebrahimi };
1901*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_21_X[] = {
1902*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x7B, 0x32, 0xFA, 0xF2, 0x6D, 0x84, 0x8E),
1903*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x21, 0x03, 0x1D, 0x0D, 0x22, 0x55, 0x67),
1904*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xF9, 0x42, 0x03, 0x9C, 0xC2, 0xCB, 0xBA),
1905*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xA1, 0x96, 0xD9, 0x9D, 0x11, 0x6F, 0xBE),
1906*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x40, 0x57, 0xEB, 0x40, 0x2D, 0xC0, 0x11),
1907*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x96, 0xBB, 0x4F, 0x2F, 0x23, 0xA8, 0x28),
1908*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x29, 0x85, 0x21, 0xA5, 0x50, 0x62, 0x06),
1909*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x7D, 0x92, 0xCF, 0x87, 0x0C, 0x22, 0xF9),
1910*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1911*62c56f98SSadaf Ebrahimi };
1912*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_21_Y[] = {
1913*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x0E, 0xA5, 0x32, 0x5B, 0xDF, 0x9C, 0xD5),
1914*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x96, 0x37, 0x2C, 0x88, 0x35, 0x30, 0xA1),
1915*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xB4, 0x69, 0xFF, 0xEB, 0xC6, 0x94, 0x08),
1916*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x55, 0x60, 0xAD, 0xAA, 0x58, 0x14, 0x88),
1917*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xFF, 0xF2, 0xB2, 0xD5, 0xA7, 0xD9, 0x27),
1918*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xAE, 0x54, 0xD2, 0x60, 0x31, 0xF3, 0x15),
1919*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x92, 0x83, 0xE3, 0xF1, 0x42, 0x83, 0x6E),
1920*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xD2, 0xC8, 0xB7, 0x76, 0x45, 0x7F, 0x7D),
1921*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1922*62c56f98SSadaf Ebrahimi };
1923*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_22_X[] = {
1924*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x11, 0xA4, 0xFB, 0x7A, 0x01, 0xBC, 0xC8),
1925*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x27, 0x73, 0x8D, 0x02, 0x91, 0x27, 0x8E),
1926*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x62, 0xF6, 0xDD, 0x6B, 0xFA, 0x5B, 0xB9),
1927*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0xCA, 0xA2, 0x44, 0x2C, 0xF0, 0x28, 0xD8),
1928*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xF1, 0x7A, 0xA2, 0x42, 0x4C, 0x50, 0xC6),
1929*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x83, 0x3E, 0x50, 0xAB, 0x9C, 0xF7, 0x67),
1930*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xED, 0x78, 0xCB, 0x76, 0x69, 0xDA, 0x42),
1931*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x01, 0x1E, 0x43, 0x27, 0x47, 0x6E, 0xDA),
1932*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1933*62c56f98SSadaf Ebrahimi };
1934*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_22_Y[] = {
1935*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x4F, 0x54, 0xB9, 0x3E, 0xBD, 0xD5, 0x44),
1936*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x35, 0x40, 0x69, 0x7F, 0x74, 0x9D, 0x32),
1937*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x06, 0x6F, 0x67, 0x68, 0x2B, 0x4D, 0x10),
1938*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x65, 0x41, 0xFC, 0x7C, 0x1E, 0xE8, 0xC8),
1939*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x79, 0x37, 0xAF, 0xFD, 0xD2, 0xDA, 0x4C),
1940*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xA8, 0x69, 0x56, 0x62, 0xA4, 0xE4, 0xA3),
1941*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x71, 0x73, 0x21, 0x8A, 0x17, 0x81, 0xA2),
1942*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x55, 0x8F, 0x7B, 0xB8, 0xAF, 0xF7, 0x86),
1943*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1944*62c56f98SSadaf Ebrahimi };
1945*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_23_X[] = {
1946*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xD1, 0xBD, 0xBE, 0x8C, 0xBC, 0x60, 0x6E),
1947*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0xA6, 0x57, 0x8C, 0xAE, 0x5C, 0x19, 0xFE),
1948*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0x43, 0xE4, 0xD9, 0xD8, 0x7B, 0xE7, 0x41),
1949*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xB9, 0xE4, 0x85, 0x7C, 0x2E, 0xFC, 0x20),
1950*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x2E, 0x01, 0x2A, 0x6D, 0x56, 0xBE, 0x97),
1951*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x0C, 0x25, 0x9B, 0xAE, 0x86, 0x37, 0x43),
1952*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x22, 0xB3, 0xCB, 0x99, 0x66, 0xB7, 0x9E),
1953*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xF7, 0x90, 0xF0, 0x1B, 0x09, 0x27, 0xF7),
1954*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1955*62c56f98SSadaf Ebrahimi };
1956*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_23_Y[] = {
1957*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x16, 0x08, 0xEF, 0x39, 0x64, 0x49, 0x31),
1958*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xA0, 0xE3, 0x97, 0xA9, 0x07, 0x54, 0x26),
1959*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xFF, 0xE2, 0x00, 0x07, 0x21, 0x88, 0x20),
1960*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xFD, 0x59, 0x53, 0x05, 0x6C, 0x42, 0x27),
1961*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0xF7, 0x39, 0x5C, 0x82, 0x36, 0xE8, 0x03),
1962*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0x83, 0xA8, 0xE2, 0xA8, 0x43, 0x07, 0x38),
1963*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xAF, 0x2B, 0x79, 0xED, 0xD8, 0x39, 0x87),
1964*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x20, 0x91, 0x7A, 0xC4, 0x07, 0xEF, 0x6C),
1965*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1966*62c56f98SSadaf Ebrahimi };
1967*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_24_X[] = {
1968*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x10, 0x2F, 0xAA, 0x0C, 0x94, 0x0E, 0x5A),
1969*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x81, 0x87, 0x41, 0x23, 0xEB, 0x55, 0x7C),
1970*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x53, 0xCC, 0x79, 0xB6, 0xEB, 0x6C, 0xCC),
1971*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x77, 0x73, 0x9D, 0xFC, 0x64, 0x6F, 0x7F),
1972*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x40, 0xE3, 0x6D, 0x1C, 0x16, 0x71, 0x15),
1973*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0xF4, 0x1B, 0xFF, 0x1C, 0x2F, 0xA5, 0xD7),
1974*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x0E, 0x0B, 0x11, 0xF4, 0x8D, 0x93, 0xAF),
1975*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xC5, 0x64, 0x6F, 0x24, 0x19, 0xF2, 0x9B),
1976*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1977*62c56f98SSadaf Ebrahimi };
1978*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_24_Y[] = {
1979*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xB3, 0xAF, 0xA5, 0x0E, 0x4F, 0x5E, 0xE1),
1980*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0x77, 0xCA, 0xF2, 0x6D, 0xC5, 0xF6, 0x9F),
1981*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x18, 0x8E, 0x33, 0x68, 0x6C, 0xE8, 0xE0),
1982*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x8B, 0x80, 0x90, 0x19, 0x7F, 0x90, 0x96),
1983*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x80, 0x6B, 0x68, 0xE2, 0x7D, 0xD4, 0xD0),
1984*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xC1, 0x67, 0xB3, 0x72, 0xCB, 0xBF, 0x2F),
1985*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0xD5, 0xD3, 0x1D, 0x14, 0x58, 0x0A, 0x80),
1986*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x7A, 0x65, 0x98, 0xB3, 0x07, 0x4B, 0x2F),
1987*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1988*62c56f98SSadaf Ebrahimi };
1989*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_25_X[] = {
1990*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x87, 0x0F, 0x5F, 0xCF, 0xA2, 0x01, 0x08),
1991*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xC9, 0xC8, 0x6E, 0x35, 0x87, 0xA5, 0x67),
1992*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x3E, 0x91, 0xA0, 0xAB, 0x24, 0x1E, 0xF2),
1993*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xBC, 0x02, 0x35, 0x70, 0xC1, 0x5F, 0x98),
1994*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x59, 0xA0, 0x50, 0x04, 0x80, 0x52, 0x85),
1995*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x56, 0x6E, 0x42, 0x8F, 0x8C, 0x91, 0x65),
1996*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xA2, 0xCB, 0xA5, 0xDE, 0x14, 0x24, 0x38),
1997*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0xCB, 0x74, 0x28, 0xE6, 0xA7, 0xE7, 0xC3),
1998*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
1999*62c56f98SSadaf Ebrahimi };
2000*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_25_Y[] = {
2001*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x73, 0xA8, 0x8F, 0x9E, 0x0E, 0x63, 0x96),
2002*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x1B, 0x77, 0xC7, 0xC1, 0x38, 0xF9, 0xDC),
2003*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x3C, 0xCF, 0xA8, 0x7A, 0xD7, 0xF3, 0xC4),
2004*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x5F, 0x9A, 0xC9, 0xAD, 0xE9, 0x1A, 0x93),
2005*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0xCF, 0x2B, 0x5E, 0xD5, 0x81, 0x95, 0xA8),
2006*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x88, 0x75, 0x29, 0x1F, 0xC7, 0xC7, 0xD0),
2007*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA9, 0x5A, 0x4D, 0x63, 0x95, 0xF9, 0x4E),
2008*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xCD, 0x04, 0x8F, 0xCD, 0x91, 0xDE, 0xC6),
2009*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2010*62c56f98SSadaf Ebrahimi };
2011*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_26_X[] = {
2012*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xD4, 0xFD, 0x25, 0x11, 0x99, 0x6E, 0xEA),
2013*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x83, 0x01, 0x3D, 0xFB, 0x56, 0xA5, 0x4E),
2014*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x3A, 0xDC, 0x74, 0xC2, 0xD7, 0xCF, 0xE8),
2015*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0xBD, 0xF1, 0xDD, 0xA3, 0x07, 0x03, 0xE2),
2016*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xBE, 0xE9, 0x2E, 0x58, 0x84, 0x66, 0xFC),
2017*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x20, 0x78, 0x37, 0x79, 0x0B, 0xA6, 0x64),
2018*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xF2, 0xAC, 0x65, 0xC8, 0xC9, 0x2F, 0x61),
2019*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x93, 0xE5, 0x0D, 0x0C, 0xC6, 0xB8, 0xCB),
2020*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2021*62c56f98SSadaf Ebrahimi };
2022*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_26_Y[] = {
2023*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xAD, 0x5C, 0x19, 0x12, 0x61, 0x0E, 0x25),
2024*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x4F, 0x0B, 0x1F, 0x49, 0x7E, 0xCD, 0x81),
2025*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x2E, 0x30, 0x61, 0xDB, 0x08, 0x68, 0x9B),
2026*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x78, 0xAF, 0xB3, 0x08, 0xC1, 0x69, 0xE5),
2027*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x5F, 0x5D, 0xC1, 0x57, 0x6F, 0xD8, 0x34),
2028*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0xD3, 0x6A, 0xF7, 0xFD, 0x86, 0xE5, 0xB3),
2029*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x63, 0xBD, 0x70, 0x7B, 0x47, 0xE8, 0x6D),
2030*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x62, 0xC8, 0x7E, 0x9D, 0x11, 0x2B, 0xA5),
2031*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2032*62c56f98SSadaf Ebrahimi };
2033*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_27_X[] = {
2034*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x84, 0xFD, 0xD5, 0x9A, 0x56, 0x7F, 0x5C),
2035*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xBB, 0xA4, 0x6F, 0x12, 0x6E, 0x4D, 0xF8),
2036*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x08, 0xA1, 0x82, 0x9C, 0x62, 0x74, 0x7B),
2037*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x58, 0x22, 0x05, 0x1D, 0x15, 0x35, 0x79),
2038*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x88, 0xCF, 0x5C, 0x05, 0x78, 0xFB, 0x94),
2039*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x6B, 0x2F, 0x79, 0x09, 0x73, 0x67, 0xEC),
2040*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA0, 0x80, 0xD8, 0xE8, 0xEC, 0xFB, 0x42),
2041*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xE7, 0x0B, 0xB7, 0x81, 0x48, 0x7B, 0xD9),
2042*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2043*62c56f98SSadaf Ebrahimi };
2044*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_27_Y[] = {
2045*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x53, 0xA9, 0xED, 0x61, 0x92, 0xD7, 0x85),
2046*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x49, 0xD9, 0x5D, 0x9B, 0x4E, 0x89, 0x35),
2047*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x12, 0xEB, 0x9A, 0xC9, 0xCB, 0xC1, 0x95),
2048*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xDC, 0x95, 0x16, 0xFE, 0x29, 0x70, 0x01),
2049*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x33, 0xB1, 0xD6, 0x78, 0xB9, 0xE2, 0x36),
2050*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xCE, 0x88, 0xC3, 0xFD, 0x7A, 0x6B, 0xB8),
2051*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x1E, 0x50, 0x1E, 0xAF, 0xB1, 0x25, 0x2D),
2052*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xE7, 0xD7, 0xD5, 0xBD, 0x7A, 0x12, 0xF9),
2053*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2054*62c56f98SSadaf Ebrahimi };
2055*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_28_X[] = {
2056*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xAA, 0xA2, 0x80, 0x5D, 0x8F, 0xCD, 0xC8),
2057*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x39, 0x79, 0x64, 0xA1, 0x67, 0x3C, 0xB7),
2058*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xC7, 0x49, 0xFF, 0x7F, 0xAC, 0xAB, 0x55),
2059*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x54, 0x3E, 0x83, 0xF0, 0x3D, 0xBC, 0xB5),
2060*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x92, 0x4A, 0x38, 0x42, 0x8A, 0xAB, 0xF6),
2061*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x0B, 0x4F, 0xEE, 0x9E, 0x92, 0xA5, 0xBE),
2062*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0xDD, 0x19, 0x96, 0xF2, 0xF0, 0x6B, 0x2E),
2063*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xFC, 0xDD, 0xB2, 0x8A, 0xE5, 0x4C, 0x22),
2064*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2065*62c56f98SSadaf Ebrahimi };
2066*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_28_Y[] = {
2067*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x06, 0x49, 0xAC, 0x99, 0x7E, 0xF8, 0x12),
2068*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xC8, 0x01, 0x51, 0xEA, 0xF6, 0x52, 0xE7),
2069*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x89, 0x66, 0x2B, 0x1F, 0x9B, 0x2A, 0xA3),
2070*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x0F, 0x95, 0x07, 0x2B, 0x6C, 0x6E, 0x9E),
2071*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0xC3, 0xB4, 0xBB, 0x91, 0x1F, 0xA3, 0x72),
2072*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x6E, 0x54, 0x28, 0x7B, 0x9C, 0x79, 0x2E),
2073*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x45, 0xFF, 0xA6, 0xDA, 0xA2, 0x83, 0x71),
2074*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xDE, 0x8F, 0x17, 0x37, 0x82, 0xCB, 0xE2),
2075*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2076*62c56f98SSadaf Ebrahimi };
2077*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_29_X[] = {
2078*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x94, 0x3F, 0x26, 0xC9, 0x1D, 0xD9, 0xAE),
2079*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x97, 0x28, 0x20, 0xCD, 0xC1, 0xF3, 0x40),
2080*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0xC9, 0xB5, 0x60, 0x9B, 0x1E, 0xDC, 0x74),
2081*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0xB9, 0x5B, 0x7D, 0xA0, 0xB2, 0x8C, 0xF0),
2082*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xD1, 0x42, 0xE6, 0x39, 0x33, 0x6D, 0xBB),
2083*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xC0, 0xFC, 0xD2, 0x14, 0x5D, 0x3E, 0x3C),
2084*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0x4A, 0x3E, 0x40, 0x16, 0x93, 0x15, 0xCF),
2085*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x24, 0xC1, 0x27, 0x27, 0xE5, 0x4B, 0xD8),
2086*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2087*62c56f98SSadaf Ebrahimi };
2088*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_29_Y[] = {
2089*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x50, 0xD8, 0xBC, 0xC1, 0x46, 0x22, 0xBB),
2090*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x0E, 0x60, 0xA1, 0xB3, 0x50, 0xD4, 0x86),
2091*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0xB1, 0x26, 0xB6, 0x6D, 0x47, 0x5A, 0x6F),
2092*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0xAC, 0x11, 0x35, 0x3E, 0xB9, 0xF4, 0x01),
2093*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x97, 0xFA, 0xBB, 0x6B, 0x39, 0x13, 0xD8),
2094*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x7B, 0x34, 0x12, 0x75, 0x8E, 0x9B, 0xC6),
2095*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x9E, 0xCD, 0x29, 0xB6, 0xEF, 0x8D, 0x10),
2096*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xAC, 0xE9, 0x25, 0x27, 0xBB, 0x78, 0x47),
2097*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2098*62c56f98SSadaf Ebrahimi };
2099*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_30_X[] = {
2100*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x7A, 0xA8, 0xD3, 0xE3, 0x66, 0xE5, 0x66),
2101*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x4C, 0xC4, 0x2C, 0x76, 0x81, 0x50, 0x32),
2102*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x71, 0x08, 0xB8, 0x52, 0x7C, 0xAF, 0xDC),
2103*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x59, 0x24, 0xDD, 0xFB, 0x2F, 0xD0, 0xDA),
2104*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xCD, 0x56, 0xE9, 0xAC, 0x91, 0xE6, 0xB9),
2105*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x64, 0x20, 0xC6, 0x9F, 0xE4, 0xEF, 0xDF),
2106*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x2C, 0x8F, 0x8C, 0x97, 0xF6, 0x22, 0xC3),
2107*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xF4, 0x88, 0xAA, 0xA8, 0xD7, 0xA5, 0x68),
2108*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2109*62c56f98SSadaf Ebrahimi };
2110*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_30_Y[] = {
2111*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x6C, 0xAE, 0x83, 0xB1, 0x55, 0x55, 0xEE),
2112*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x67, 0x84, 0x47, 0x7C, 0x83, 0x5C, 0x89),
2113*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x10, 0x4D, 0xDD, 0x30, 0x60, 0xB0, 0xE6),
2114*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xA7, 0x36, 0x76, 0x24, 0x32, 0x9F, 0x9D),
2115*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x42, 0x81, 0xFB, 0xA4, 0x2E, 0x13, 0x68),
2116*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x94, 0x91, 0xFF, 0x99, 0xA0, 0x09, 0x61),
2117*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x83, 0xA1, 0x76, 0xAF, 0x37, 0x5C, 0x77),
2118*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xA8, 0x04, 0x86, 0xC4, 0xA9, 0x79, 0x42),
2119*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2120*62c56f98SSadaf Ebrahimi };
2121*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_31_X[] = {
2122*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x8C, 0xC2, 0x34, 0xFB, 0x83, 0x28, 0x27),
2123*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x03, 0x7D, 0x5E, 0x9E, 0x0E, 0xB0, 0x22),
2124*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x02, 0x46, 0x7F, 0xB9, 0xAC, 0xBB, 0x23),
2125*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xED, 0x48, 0xC2, 0x96, 0x4D, 0x56, 0x27),
2126*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0xB5, 0xC5, 0xD1, 0xE6, 0x1C, 0x7E, 0x9B),
2127*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x2E, 0x18, 0x71, 0x2D, 0x7B, 0xD7, 0xB3),
2128*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x46, 0x9D, 0xDE, 0xAA, 0x78, 0x8E, 0xB1),
2129*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xD7, 0x69, 0x2E, 0xE1, 0xD9, 0x48, 0xDE),
2130*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2131*62c56f98SSadaf Ebrahimi };
2132*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp521r1_T_31_Y[] = {
2133*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xFF, 0x9E, 0x09, 0x22, 0x22, 0xE6, 0x8D),
2134*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x14, 0x28, 0x13, 0x1B, 0x62, 0x12, 0x22),
2135*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x7F, 0x67, 0x03, 0xB0, 0xC0, 0xF3, 0x05),
2136*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xC3, 0x0F, 0xFB, 0x25, 0x48, 0x3E, 0xF4),
2137*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x6E, 0x53, 0x98, 0x36, 0xB3, 0xD3, 0x94),
2138*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x81, 0x54, 0x22, 0xA4, 0xCC, 0xC1, 0x22),
2139*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xBA, 0xFC, 0xA9, 0xDF, 0x68, 0x86, 0x2B),
2140*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x92, 0x0E, 0xC3, 0xF2, 0x58, 0xE8, 0x51),
2141*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2142*62c56f98SSadaf Ebrahimi };
2143*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp521r1_T[32] = {
2144*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp521r1_T_0_X, secp521r1_T_0_Y),
2145*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_1_X, secp521r1_T_1_Y),
2146*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_2_X, secp521r1_T_2_Y),
2147*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_3_X, secp521r1_T_3_Y),
2148*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_4_X, secp521r1_T_4_Y),
2149*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_5_X, secp521r1_T_5_Y),
2150*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_6_X, secp521r1_T_6_Y),
2151*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_7_X, secp521r1_T_7_Y),
2152*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_8_X, secp521r1_T_8_Y),
2153*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_9_X, secp521r1_T_9_Y),
2154*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_10_X, secp521r1_T_10_Y),
2155*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_11_X, secp521r1_T_11_Y),
2156*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_12_X, secp521r1_T_12_Y),
2157*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_13_X, secp521r1_T_13_Y),
2158*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_14_X, secp521r1_T_14_Y),
2159*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_15_X, secp521r1_T_15_Y),
2160*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_16_X, secp521r1_T_16_Y),
2161*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_17_X, secp521r1_T_17_Y),
2162*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_18_X, secp521r1_T_18_Y),
2163*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_19_X, secp521r1_T_19_Y),
2164*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_20_X, secp521r1_T_20_Y),
2165*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_21_X, secp521r1_T_21_Y),
2166*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_22_X, secp521r1_T_22_Y),
2167*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_23_X, secp521r1_T_23_Y),
2168*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_24_X, secp521r1_T_24_Y),
2169*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_25_X, secp521r1_T_25_Y),
2170*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_26_X, secp521r1_T_26_Y),
2171*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_27_X, secp521r1_T_27_Y),
2172*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_28_X, secp521r1_T_28_Y),
2173*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_29_X, secp521r1_T_29_Y),
2174*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_30_X, secp521r1_T_30_Y),
2175*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp521r1_T_31_X, secp521r1_T_31_Y),
2176*62c56f98SSadaf Ebrahimi };
2177*62c56f98SSadaf Ebrahimi #else
2178*62c56f98SSadaf Ebrahimi #define secp521r1_T NULL
2179*62c56f98SSadaf Ebrahimi #endif
2180*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
2181*62c56f98SSadaf Ebrahimi 
2182*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
2183*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_p[] = {
2184*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xEE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF),
2185*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2186*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2187*62c56f98SSadaf Ebrahimi };
2188*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_a[] = {
2189*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x00, 0x00),
2190*62c56f98SSadaf Ebrahimi };
2191*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_b[] = {
2192*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x03, 0x00),
2193*62c56f98SSadaf Ebrahimi };
2194*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_gx[] = {
2195*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x6C, 0xE0, 0xEA, 0xB1, 0xD1, 0xA5, 0x1D),
2196*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xF4, 0xB7, 0x80, 0x02, 0x7D, 0xB0, 0x26),
2197*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xE9, 0x57, 0xC0, 0x0E, 0xF1, 0x4F, 0xDB),
2198*62c56f98SSadaf Ebrahimi };
2199*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_gy[] = {
2200*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x2F, 0x5E, 0xD9, 0x88, 0xAA, 0x82, 0x40),
2201*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x86, 0xBE, 0x15, 0xD0, 0x63, 0x41, 0x84),
2202*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x28, 0x56, 0x9C, 0x6D, 0x2F, 0x2F, 0x9B),
2203*62c56f98SSadaf Ebrahimi };
2204*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_n[] = {
2205*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xFD, 0xDE, 0x74, 0x6A, 0x46, 0x69, 0x0F),
2206*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xFC, 0xF2, 0x26, 0xFE, 0xFF, 0xFF, 0xFF),
2207*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2208*62c56f98SSadaf Ebrahimi };
2209*62c56f98SSadaf Ebrahimi 
2210*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2211*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_0_X[] = {
2212*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x6C, 0xE0, 0xEA, 0xB1, 0xD1, 0xA5, 0x1D),
2213*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xF4, 0xB7, 0x80, 0x02, 0x7D, 0xB0, 0x26),
2214*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xE9, 0x57, 0xC0, 0x0E, 0xF1, 0x4F, 0xDB),
2215*62c56f98SSadaf Ebrahimi };
2216*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_0_Y[] = {
2217*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x2F, 0x5E, 0xD9, 0x88, 0xAA, 0x82, 0x40),
2218*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x86, 0xBE, 0x15, 0xD0, 0x63, 0x41, 0x84),
2219*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x28, 0x56, 0x9C, 0x6D, 0x2F, 0x2F, 0x9B),
2220*62c56f98SSadaf Ebrahimi };
2221*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_1_X[] = {
2222*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x77, 0x3D, 0x0D, 0x85, 0x48, 0xA8, 0xA9),
2223*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x07, 0xDF, 0x1D, 0xB3, 0xB3, 0x01, 0x54),
2224*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x86, 0xF6, 0xAF, 0x19, 0x2A, 0x88, 0x2E),
2225*62c56f98SSadaf Ebrahimi };
2226*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_1_Y[] = {
2227*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x90, 0xB6, 0x2F, 0x48, 0x36, 0x4C, 0x5B),
2228*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x11, 0x14, 0xA6, 0xCB, 0xBA, 0x15, 0xD9),
2229*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0xB0, 0xF2, 0xD4, 0xC9, 0xDA, 0xBA, 0xD7),
2230*62c56f98SSadaf Ebrahimi };
2231*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_2_X[] = {
2232*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0xC1, 0x9C, 0xE6, 0xBB, 0xFB, 0xCF, 0x23),
2233*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x19, 0xAC, 0x5A, 0xC9, 0x8A, 0x1C, 0x75),
2234*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xF6, 0x76, 0x86, 0x89, 0x27, 0x8D, 0x28),
2235*62c56f98SSadaf Ebrahimi };
2236*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_2_Y[] = {
2237*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xE0, 0x6F, 0x34, 0xBA, 0x5E, 0xD3, 0x96),
2238*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0xDC, 0xA6, 0x87, 0xC9, 0x9D, 0xC0, 0x82),
2239*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x11, 0x7E, 0xD6, 0xF7, 0x33, 0xFC, 0xE4),
2240*62c56f98SSadaf Ebrahimi };
2241*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_3_X[] = {
2242*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x37, 0x3E, 0xC0, 0x7F, 0x62, 0xE7, 0x54),
2243*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x3B, 0x69, 0x9D, 0x44, 0xBC, 0x82, 0x99),
2244*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x84, 0xB3, 0x5F, 0x2B, 0xA5, 0x9E, 0x2C),
2245*62c56f98SSadaf Ebrahimi };
2246*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_3_Y[] = {
2247*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x95, 0xEB, 0x4C, 0x04, 0xB4, 0xF4, 0x75),
2248*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xAD, 0x4B, 0xD5, 0x9A, 0xEB, 0xC4, 0x4E),
2249*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xB1, 0xC5, 0x59, 0xE3, 0xD5, 0x16, 0x2A),
2250*62c56f98SSadaf Ebrahimi };
2251*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_4_X[] = {
2252*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x2A, 0xCC, 0xAC, 0xD0, 0xEE, 0x50, 0xEC),
2253*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x83, 0xE0, 0x5B, 0x14, 0x44, 0x52, 0x20),
2254*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x15, 0x2D, 0x78, 0xF6, 0x51, 0x32, 0xCF),
2255*62c56f98SSadaf Ebrahimi };
2256*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_4_Y[] = {
2257*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x36, 0x9B, 0xDD, 0xF8, 0xDD, 0xEF, 0xB2),
2258*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xB1, 0x6A, 0x2B, 0xAF, 0xEB, 0x2B, 0xB1),
2259*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x87, 0x7A, 0x66, 0x5D, 0x5B, 0xDF, 0x8F),
2260*62c56f98SSadaf Ebrahimi };
2261*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_5_X[] = {
2262*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x45, 0xE5, 0x81, 0x9B, 0xEB, 0x37, 0x23),
2263*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x29, 0xE2, 0x20, 0x64, 0x23, 0x6B, 0x6E),
2264*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x1D, 0x41, 0xE1, 0x9B, 0x61, 0x7B, 0xD9),
2265*62c56f98SSadaf Ebrahimi };
2266*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_5_Y[] = {
2267*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x57, 0xA3, 0x0A, 0x13, 0xE4, 0x59, 0x15),
2268*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x6E, 0x4A, 0x48, 0x84, 0x90, 0xAC, 0xC7),
2269*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xB8, 0xF5, 0xF3, 0xDE, 0xA0, 0xA1, 0x1D),
2270*62c56f98SSadaf Ebrahimi };
2271*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_6_X[] = {
2272*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x32, 0x81, 0xA9, 0x91, 0x5A, 0x4E, 0x33),
2273*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0xA8, 0x90, 0xBE, 0x0F, 0xEC, 0xC0, 0x85),
2274*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x30, 0xD7, 0x08, 0xAE, 0xC4, 0x3A, 0xA5),
2275*62c56f98SSadaf Ebrahimi };
2276*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_6_Y[] = {
2277*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x55, 0xE3, 0x76, 0xB3, 0x64, 0x74, 0x9F),
2278*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x75, 0xD4, 0xDB, 0x98, 0xD7, 0x39, 0xAE),
2279*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xEB, 0x8A, 0xAB, 0x16, 0xD9, 0xD4, 0x0B),
2280*62c56f98SSadaf Ebrahimi };
2281*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_7_X[] = {
2282*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xBE, 0xF9, 0xC7, 0xC7, 0xBA, 0xF3, 0xA1),
2283*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x85, 0x59, 0xF3, 0x60, 0x41, 0x02, 0xD2),
2284*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x1C, 0x4A, 0xA4, 0xC7, 0xED, 0x66, 0xBC),
2285*62c56f98SSadaf Ebrahimi };
2286*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_7_Y[] = {
2287*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x9C, 0x2E, 0x46, 0x52, 0x18, 0x87, 0x14),
2288*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x35, 0x5A, 0x75, 0xAC, 0x4D, 0x75, 0x91),
2289*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0x2F, 0xAC, 0xFC, 0xBC, 0xE6, 0x93, 0x5E),
2290*62c56f98SSadaf Ebrahimi };
2291*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_8_X[] = {
2292*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x4D, 0xC9, 0x18, 0xE9, 0x00, 0xEB, 0x33),
2293*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x69, 0x72, 0x07, 0x5A, 0x59, 0xA8, 0x26),
2294*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x65, 0x83, 0x20, 0x10, 0xF9, 0x69, 0x82),
2295*62c56f98SSadaf Ebrahimi };
2296*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_8_Y[] = {
2297*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x56, 0x7F, 0x9F, 0xBF, 0x46, 0x0C, 0x7E),
2298*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0xCF, 0xF0, 0xDC, 0xDF, 0x2D, 0xE6, 0xE5),
2299*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0xF0, 0x72, 0x3A, 0x7A, 0x03, 0xE5, 0x22),
2300*62c56f98SSadaf Ebrahimi };
2301*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_9_X[] = {
2302*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xAA, 0x57, 0x13, 0x37, 0xA7, 0x2C, 0xD4),
2303*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xAC, 0xA2, 0x23, 0xF9, 0x84, 0x60, 0xD3),
2304*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xEB, 0x51, 0x70, 0x64, 0x78, 0xCA, 0x05),
2305*62c56f98SSadaf Ebrahimi };
2306*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_9_Y[] = {
2307*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xCC, 0x30, 0x62, 0x93, 0x46, 0x13, 0xE9),
2308*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x26, 0xCC, 0x6C, 0x3D, 0x5C, 0xDA, 0x2C),
2309*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xAA, 0xB8, 0x03, 0xA4, 0x1A, 0x00, 0x96),
2310*62c56f98SSadaf Ebrahimi };
2311*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_10_X[] = {
2312*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x9D, 0xE6, 0xCC, 0x4E, 0x2E, 0xC2, 0xD5),
2313*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xC3, 0x8A, 0xAE, 0x6F, 0x40, 0x05, 0xEB),
2314*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x8F, 0x4A, 0x4D, 0x35, 0xD3, 0x50, 0x9D),
2315*62c56f98SSadaf Ebrahimi };
2316*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_10_Y[] = {
2317*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xFD, 0x98, 0xAB, 0xC7, 0x03, 0xB4, 0x55),
2318*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x40, 0xD2, 0x9F, 0xCA, 0xD0, 0x53, 0x00),
2319*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x84, 0x00, 0x6F, 0xC8, 0xAD, 0xED, 0x8D),
2320*62c56f98SSadaf Ebrahimi };
2321*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_11_X[] = {
2322*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xD3, 0x57, 0xD7, 0xC3, 0x07, 0xBD, 0xD7),
2323*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0xBA, 0x47, 0x1D, 0x3D, 0xEF, 0x98, 0x6C),
2324*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xC0, 0x6C, 0x7F, 0x12, 0xEE, 0x9F, 0x67),
2325*62c56f98SSadaf Ebrahimi };
2326*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_11_Y[] = {
2327*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x02, 0xDA, 0x79, 0xAA, 0xC9, 0x27, 0xC4),
2328*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x79, 0xC7, 0x71, 0x84, 0xCB, 0xE5, 0x5A),
2329*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x37, 0x06, 0xBA, 0xB5, 0xD5, 0x18, 0x4C),
2330*62c56f98SSadaf Ebrahimi };
2331*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_12_X[] = {
2332*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x65, 0x72, 0x6C, 0xF2, 0x63, 0x27, 0x6A),
2333*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0xBC, 0x71, 0xDF, 0x75, 0xF8, 0x98, 0x4D),
2334*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x70, 0x9B, 0xDC, 0xE7, 0x18, 0x71, 0xFF),
2335*62c56f98SSadaf Ebrahimi };
2336*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_12_Y[] = {
2337*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x5B, 0x9F, 0x00, 0x5A, 0xB6, 0x80, 0x7A),
2338*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xE0, 0xBB, 0xFC, 0x5E, 0x78, 0x9C, 0x89),
2339*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x03, 0x68, 0x83, 0x3D, 0x2E, 0x4C, 0xDD),
2340*62c56f98SSadaf Ebrahimi };
2341*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_13_X[] = {
2342*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x49, 0x23, 0xA8, 0xCB, 0x3B, 0x1A, 0xF6),
2343*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x3D, 0xA7, 0x46, 0xCF, 0x75, 0xB6, 0x2C),
2344*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0xFD, 0x30, 0x01, 0xB6, 0xEF, 0xF9, 0xE8),
2345*62c56f98SSadaf Ebrahimi };
2346*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_13_Y[] = {
2347*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xFA, 0xDA, 0xB8, 0x29, 0x42, 0xC9, 0xC7),
2348*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xD7, 0xA0, 0xE6, 0x6B, 0x86, 0x61, 0x39),
2349*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0xE9, 0xD3, 0x37, 0xD8, 0xE7, 0x35, 0xA9),
2350*62c56f98SSadaf Ebrahimi };
2351*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_14_X[] = {
2352*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xC8, 0x8E, 0xB1, 0xCB, 0xB1, 0xB5, 0x4D),
2353*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xD7, 0x46, 0x7D, 0xAF, 0xE2, 0xDC, 0xBB),
2354*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x46, 0xE7, 0xD8, 0x76, 0x31, 0x90, 0x76),
2355*62c56f98SSadaf Ebrahimi };
2356*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_14_Y[] = {
2357*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xD3, 0xF4, 0x74, 0xE1, 0x67, 0xD8, 0x66),
2358*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x70, 0x3C, 0xC8, 0xAF, 0x5F, 0xF4, 0x58),
2359*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x4E, 0xED, 0x5C, 0x43, 0xB3, 0x16, 0x35),
2360*62c56f98SSadaf Ebrahimi };
2361*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_15_X[] = {
2362*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xAE, 0xD1, 0xDD, 0x31, 0x14, 0xD3, 0xF0),
2363*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x14, 0x06, 0x13, 0x12, 0x1C, 0x81, 0xF5),
2364*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xF9, 0x0C, 0x91, 0xF7, 0x67, 0x59, 0x63),
2365*62c56f98SSadaf Ebrahimi };
2366*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp192k1_T_15_Y[] = {
2367*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x91, 0xE2, 0xF4, 0x9D, 0xEB, 0x88, 0x87),
2368*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x82, 0x30, 0x9C, 0xAE, 0x18, 0x4D, 0xB7),
2369*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x79, 0xCF, 0x17, 0xA5, 0x1E, 0xE8, 0xC8),
2370*62c56f98SSadaf Ebrahimi };
2371*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp192k1_T[16] = {
2372*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp192k1_T_0_X, secp192k1_T_0_Y),
2373*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_1_X, secp192k1_T_1_Y),
2374*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_2_X, secp192k1_T_2_Y),
2375*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_3_X, secp192k1_T_3_Y),
2376*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_4_X, secp192k1_T_4_Y),
2377*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_5_X, secp192k1_T_5_Y),
2378*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_6_X, secp192k1_T_6_Y),
2379*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_7_X, secp192k1_T_7_Y),
2380*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_8_X, secp192k1_T_8_Y),
2381*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_9_X, secp192k1_T_9_Y),
2382*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_10_X, secp192k1_T_10_Y),
2383*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_11_X, secp192k1_T_11_Y),
2384*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_12_X, secp192k1_T_12_Y),
2385*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_13_X, secp192k1_T_13_Y),
2386*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_14_X, secp192k1_T_14_Y),
2387*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp192k1_T_15_X, secp192k1_T_15_Y),
2388*62c56f98SSadaf Ebrahimi };
2389*62c56f98SSadaf Ebrahimi #else
2390*62c56f98SSadaf Ebrahimi #define secp192k1_T NULL
2391*62c56f98SSadaf Ebrahimi #endif
2392*62c56f98SSadaf Ebrahimi 
2393*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
2394*62c56f98SSadaf Ebrahimi 
2395*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
2396*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_p[] = {
2397*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xE5, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF),
2398*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2399*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2400*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_4(0xFF, 0xFF, 0xFF, 0xFF),
2401*62c56f98SSadaf Ebrahimi };
2402*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_a[] = {
2403*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x00, 0x00),
2404*62c56f98SSadaf Ebrahimi };
2405*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_b[] = {
2406*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x05, 0x00),
2407*62c56f98SSadaf Ebrahimi };
2408*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_gx[] = {
2409*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xA4, 0xB7, 0xB6, 0x0E, 0x65, 0x7E, 0x0F),
2410*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x75, 0x70, 0xE4, 0xE9, 0x67, 0xA4, 0x69),
2411*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x28, 0xFC, 0x30, 0xDF, 0x99, 0xF0, 0x4D),
2412*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_4(0x33, 0x5B, 0x45, 0xA1),
2413*62c56f98SSadaf Ebrahimi };
2414*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_gy[] = {
2415*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x61, 0x6D, 0x55, 0xDB, 0x4B, 0xCA, 0xE2),
2416*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xBD, 0xB0, 0xC0, 0xF7, 0x19, 0xE3, 0xF7),
2417*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xFB, 0xCA, 0x82, 0x42, 0x34, 0xBA, 0x7F),
2418*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_4(0xED, 0x9F, 0x08, 0x7E),
2419*62c56f98SSadaf Ebrahimi };
2420*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_n[] = {
2421*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xB1, 0x9F, 0x76, 0x71, 0xA9, 0xF0, 0xCA),
2422*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x61, 0xEC, 0xD2, 0xE8, 0xDC, 0x01, 0x00),
2423*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
2424*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00),
2425*62c56f98SSadaf Ebrahimi };
2426*62c56f98SSadaf Ebrahimi 
2427*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2428*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_0_X[] = {
2429*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xA4, 0xB7, 0xB6, 0x0E, 0x65, 0x7E, 0x0F),
2430*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x75, 0x70, 0xE4, 0xE9, 0x67, 0xA4, 0x69),
2431*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x28, 0xFC, 0x30, 0xDF, 0x99, 0xF0, 0x4D),
2432*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x5B, 0x45, 0xA1, 0x00, 0x00, 0x00, 0x00),
2433*62c56f98SSadaf Ebrahimi };
2434*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_0_Y[] = {
2435*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x61, 0x6D, 0x55, 0xDB, 0x4B, 0xCA, 0xE2),
2436*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xBD, 0xB0, 0xC0, 0xF7, 0x19, 0xE3, 0xF7),
2437*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xFB, 0xCA, 0x82, 0x42, 0x34, 0xBA, 0x7F),
2438*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x9F, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00),
2439*62c56f98SSadaf Ebrahimi };
2440*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_1_X[] = {
2441*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x6C, 0x22, 0x22, 0x40, 0x89, 0xAE, 0x7A),
2442*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x92, 0xE1, 0x87, 0x56, 0x35, 0xAF, 0x9B),
2443*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xAF, 0x08, 0x35, 0x27, 0xEA, 0x04, 0xED),
2444*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x53, 0xFD, 0xCF, 0x00, 0x00, 0x00, 0x00),
2445*62c56f98SSadaf Ebrahimi };
2446*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_1_Y[] = {
2447*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0xD0, 0x9F, 0x8D, 0xF3, 0x63, 0x54, 0x30),
2448*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0xDB, 0x0F, 0x61, 0x54, 0x26, 0xD1, 0x98),
2449*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x21, 0xF7, 0x1B, 0xB5, 0x1D, 0xF6, 0x7E),
2450*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x05, 0xDA, 0x8F, 0x00, 0x00, 0x00, 0x00),
2451*62c56f98SSadaf Ebrahimi };
2452*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_2_X[] = {
2453*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x26, 0x73, 0xBC, 0xE4, 0x29, 0x62, 0x56),
2454*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x95, 0x17, 0x8B, 0xC3, 0x9B, 0xAC, 0xCC),
2455*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0xDB, 0x77, 0xDF, 0xDD, 0x13, 0x04, 0x98),
2456*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0xFC, 0x22, 0x93, 0x00, 0x00, 0x00, 0x00),
2457*62c56f98SSadaf Ebrahimi };
2458*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_2_Y[] = {
2459*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x65, 0xF1, 0x5A, 0x37, 0xEF, 0x79, 0xAD),
2460*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x01, 0x37, 0xAC, 0x9A, 0x5B, 0x51, 0x65),
2461*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x75, 0x13, 0xA9, 0x4A, 0xAD, 0xFE, 0x9B),
2462*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x82, 0x6F, 0x66, 0x00, 0x00, 0x00, 0x00),
2463*62c56f98SSadaf Ebrahimi };
2464*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_3_X[] = {
2465*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x5E, 0xF0, 0x40, 0xC3, 0xA6, 0xE2, 0x1E),
2466*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x9A, 0x6F, 0xCF, 0x11, 0x26, 0x66, 0x85),
2467*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0x73, 0xA8, 0xCF, 0x2B, 0x12, 0x36, 0x37),
2468*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xB3, 0x0A, 0x58, 0x00, 0x00, 0x00, 0x00),
2469*62c56f98SSadaf Ebrahimi };
2470*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_3_Y[] = {
2471*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x79, 0x00, 0x55, 0x04, 0x34, 0x90, 0x1A),
2472*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x54, 0x1C, 0xC2, 0x45, 0x0C, 0x1B, 0x23),
2473*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x19, 0xAB, 0xA8, 0xFC, 0x73, 0xDC, 0xEE),
2474*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0xFB, 0x93, 0xCE, 0x00, 0x00, 0x00, 0x00),
2475*62c56f98SSadaf Ebrahimi };
2476*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_4_X[] = {
2477*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x75, 0xD0, 0x66, 0x95, 0x86, 0xCA, 0x66),
2478*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xEA, 0x29, 0x16, 0x6A, 0x38, 0xDF, 0x41),
2479*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xA2, 0x36, 0x2F, 0xDC, 0xBB, 0x5E, 0xF7),
2480*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x89, 0x59, 0x49, 0x00, 0x00, 0x00, 0x00),
2481*62c56f98SSadaf Ebrahimi };
2482*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_4_Y[] = {
2483*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xA3, 0x99, 0x9D, 0xB8, 0x77, 0x9D, 0x1D),
2484*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x93, 0x43, 0x47, 0xC6, 0x5C, 0xF9, 0xFD),
2485*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x00, 0x79, 0x42, 0x64, 0xB8, 0x25, 0x3E),
2486*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x54, 0xB4, 0x33, 0x00, 0x00, 0x00, 0x00),
2487*62c56f98SSadaf Ebrahimi };
2488*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_5_X[] = {
2489*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x0C, 0x42, 0x90, 0x83, 0x0B, 0x31, 0x5F),
2490*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x2E, 0xAE, 0xC8, 0xC7, 0x5F, 0xD2, 0x70),
2491*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xBC, 0xAD, 0x41, 0xE7, 0x32, 0x3A, 0x81),
2492*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x97, 0x52, 0x83, 0x00, 0x00, 0x00, 0x00),
2493*62c56f98SSadaf Ebrahimi };
2494*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_5_Y[] = {
2495*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x13, 0x7A, 0xBD, 0xAE, 0x94, 0x60, 0xFD),
2496*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x9B, 0x95, 0xB4, 0x6E, 0x68, 0xB2, 0x1F),
2497*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x49, 0xBE, 0x51, 0xFE, 0x66, 0x15, 0x74),
2498*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x37, 0xE4, 0xFE, 0x00, 0x00, 0x00, 0x00),
2499*62c56f98SSadaf Ebrahimi };
2500*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_6_X[] = {
2501*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x9B, 0xEE, 0x64, 0xC9, 0x1B, 0xBD, 0x77),
2502*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x5F, 0x34, 0xA9, 0x0B, 0xB7, 0x25, 0x52),
2503*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0x13, 0xB1, 0x38, 0xFB, 0x9D, 0x78, 0xED),
2504*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0xE7, 0x1B, 0xFA, 0x00, 0x00, 0x00, 0x00),
2505*62c56f98SSadaf Ebrahimi };
2506*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_6_Y[] = {
2507*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xB3, 0xB7, 0x44, 0x92, 0x6B, 0x00, 0x82),
2508*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x82, 0x44, 0x3E, 0x18, 0x1A, 0x58, 0x6A),
2509*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0xF8, 0xC0, 0xE4, 0xEE, 0xC1, 0xBF, 0x44),
2510*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x32, 0x27, 0xB2, 0x00, 0x00, 0x00, 0x00),
2511*62c56f98SSadaf Ebrahimi };
2512*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_7_X[] = {
2513*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x9A, 0x42, 0x62, 0x8B, 0x26, 0x54, 0x21),
2514*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x85, 0x74, 0xA0, 0x79, 0xA8, 0xEE, 0xBE),
2515*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x36, 0x60, 0xB3, 0x28, 0x4D, 0x55, 0xBE),
2516*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x27, 0x82, 0x29, 0x00, 0x00, 0x00, 0x00),
2517*62c56f98SSadaf Ebrahimi };
2518*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_7_Y[] = {
2519*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0xFC, 0x73, 0x77, 0xAF, 0x5C, 0xAC, 0x78),
2520*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0xED, 0xE5, 0xF6, 0x1D, 0xA8, 0x67, 0x43),
2521*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xDE, 0x33, 0x1C, 0xF1, 0x80, 0x73, 0xF8),
2522*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xE2, 0xDE, 0x3C, 0x00, 0x00, 0x00, 0x00),
2523*62c56f98SSadaf Ebrahimi };
2524*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_8_X[] = {
2525*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x3E, 0x6B, 0xFE, 0xF0, 0x04, 0x28, 0x01),
2526*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xB2, 0x14, 0x9D, 0x18, 0x11, 0x7D, 0x9D),
2527*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xC4, 0xD6, 0x2E, 0x6E, 0x57, 0x4D, 0xE1),
2528*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x55, 0x1B, 0xDE, 0x00, 0x00, 0x00, 0x00),
2529*62c56f98SSadaf Ebrahimi };
2530*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_8_Y[] = {
2531*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xF7, 0x17, 0xBC, 0x45, 0xAB, 0x16, 0xAB),
2532*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xB0, 0xEF, 0x61, 0xE3, 0x20, 0x7C, 0xF8),
2533*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x85, 0x41, 0x4D, 0xF1, 0x7E, 0x4D, 0x41),
2534*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xC2, 0x9B, 0x5E, 0x00, 0x00, 0x00, 0x00),
2535*62c56f98SSadaf Ebrahimi };
2536*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_9_X[] = {
2537*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x2E, 0x49, 0x3D, 0x3E, 0x4B, 0xD3, 0x32),
2538*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x2B, 0x9D, 0xD5, 0x27, 0xFA, 0xCA, 0xE0),
2539*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0xB3, 0x6A, 0xE0, 0x79, 0x14, 0x28, 0x0F),
2540*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x1E, 0xDC, 0xF5, 0x00, 0x00, 0x00, 0x00),
2541*62c56f98SSadaf Ebrahimi };
2542*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_9_Y[] = {
2543*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x44, 0x56, 0xCD, 0xFC, 0x9F, 0x09, 0xFF),
2544*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x8C, 0x59, 0xA4, 0x64, 0x2A, 0x3A, 0xED),
2545*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xA0, 0xB5, 0x86, 0x4E, 0x69, 0xDA, 0x06),
2546*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x8B, 0x11, 0x38, 0x00, 0x00, 0x00, 0x00),
2547*62c56f98SSadaf Ebrahimi };
2548*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_10_X[] = {
2549*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x17, 0x16, 0x12, 0x17, 0xDC, 0x00, 0x7E),
2550*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0x76, 0x24, 0x6C, 0x97, 0x2C, 0xB5, 0xF9),
2551*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x71, 0xE3, 0xB0, 0xBB, 0x4E, 0x50, 0x52),
2552*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0x48, 0x26, 0xD5, 0x00, 0x00, 0x00, 0x00),
2553*62c56f98SSadaf Ebrahimi };
2554*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_10_Y[] = {
2555*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x5F, 0x28, 0xF6, 0x01, 0x5A, 0x60, 0x41),
2556*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x95, 0xFE, 0xD0, 0xAD, 0x15, 0xD4, 0xD9),
2557*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x5B, 0x7A, 0xFD, 0x80, 0xF7, 0x9F, 0x64),
2558*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xBC, 0x1B, 0xDF, 0x00, 0x00, 0x00, 0x00),
2559*62c56f98SSadaf Ebrahimi };
2560*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_11_X[] = {
2561*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xE6, 0xDF, 0x14, 0x29, 0xF4, 0xD4, 0x14),
2562*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x12, 0xDD, 0xEC, 0x5B, 0x8A, 0x59, 0xE5),
2563*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x92, 0x3E, 0x35, 0x08, 0xE9, 0xCF, 0x0E),
2564*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0x35, 0x29, 0x97, 0x00, 0x00, 0x00, 0x00),
2565*62c56f98SSadaf Ebrahimi };
2566*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_11_Y[] = {
2567*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xDB, 0xD6, 0x6A, 0xC5, 0x43, 0xA4, 0xA1),
2568*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x33, 0x50, 0x61, 0x70, 0xA1, 0xE9, 0xCE),
2569*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x15, 0x6E, 0x5F, 0x01, 0x0C, 0x8C, 0xFA),
2570*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0xA1, 0x9A, 0x9D, 0x00, 0x00, 0x00, 0x00),
2571*62c56f98SSadaf Ebrahimi };
2572*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_12_X[] = {
2573*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xC6, 0xF7, 0xE2, 0x4A, 0xCD, 0x9B, 0x61),
2574*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x4D, 0x5A, 0xB8, 0xE2, 0x6D, 0xA6, 0x50),
2575*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x3F, 0xB6, 0x17, 0xE3, 0x2C, 0x6F, 0x65),
2576*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xA4, 0x59, 0x51, 0x00, 0x00, 0x00, 0x00),
2577*62c56f98SSadaf Ebrahimi };
2578*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_12_Y[] = {
2579*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x4F, 0x7C, 0x49, 0xCD, 0x6E, 0xEB, 0x3C),
2580*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0xC9, 0x1F, 0xB7, 0x4D, 0x98, 0xC7, 0x67),
2581*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4C, 0xFD, 0x98, 0x20, 0x95, 0xBB, 0x20, 0x3A),
2582*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xF2, 0x73, 0x92, 0x00, 0x00, 0x00, 0x00),
2583*62c56f98SSadaf Ebrahimi };
2584*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_13_X[] = {
2585*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xEF, 0xFB, 0x30, 0xFA, 0x12, 0x1A, 0xB0),
2586*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0x4C, 0x24, 0xB4, 0x5B, 0xC9, 0x4C, 0x0F),
2587*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xDD, 0x5E, 0x84, 0x95, 0x4D, 0x26, 0xED),
2588*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xFA, 0xF9, 0x3A, 0x00, 0x00, 0x00, 0x00),
2589*62c56f98SSadaf Ebrahimi };
2590*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_13_Y[] = {
2591*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0xA3, 0x2E, 0x7A, 0xDC, 0xA7, 0x53, 0xA9),
2592*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x9F, 0x81, 0x84, 0xB2, 0x0D, 0xFE, 0x31),
2593*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x89, 0x1B, 0x77, 0x0C, 0x89, 0x71, 0xEC),
2594*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xFF, 0x7F, 0xB2, 0x00, 0x00, 0x00, 0x00),
2595*62c56f98SSadaf Ebrahimi };
2596*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_14_X[] = {
2597*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xE9, 0x2C, 0x79, 0xA6, 0x3C, 0xAD, 0x93),
2598*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xE0, 0x23, 0x02, 0x86, 0x0F, 0x77, 0x2A),
2599*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x93, 0x6D, 0xE9, 0xF9, 0x3C, 0xBE, 0xB9),
2600*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0xE7, 0x24, 0x92, 0x00, 0x00, 0x00, 0x00),
2601*62c56f98SSadaf Ebrahimi };
2602*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_14_Y[] = {
2603*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x3C, 0x5B, 0x4B, 0x1B, 0x25, 0x37, 0xD6),
2604*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xE8, 0x38, 0x1B, 0xA1, 0x5A, 0x2E, 0x68),
2605*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x19, 0xFD, 0xF4, 0x78, 0x01, 0x6B, 0x44),
2606*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0x69, 0x37, 0x4F, 0x00, 0x00, 0x00, 0x00),
2607*62c56f98SSadaf Ebrahimi };
2608*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_15_X[] = {
2609*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0xE2, 0xBF, 0xD3, 0xEC, 0x95, 0x9C, 0x03),
2610*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x7B, 0xFC, 0xD5, 0xD3, 0x25, 0x5E, 0x0F),
2611*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x55, 0x09, 0xA2, 0x58, 0x6A, 0xC9, 0xFF),
2612*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0xCC, 0x3B, 0xD9, 0x00, 0x00, 0x00, 0x00),
2613*62c56f98SSadaf Ebrahimi };
2614*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp224k1_T_15_Y[] = {
2615*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0x08, 0x65, 0x5E, 0xCB, 0xAB, 0x48, 0xC8),
2616*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x79, 0x8B, 0xC0, 0x11, 0xC0, 0x69, 0x38),
2617*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xE8, 0x8C, 0x4C, 0xC5, 0x28, 0xE4, 0xAE),
2618*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x1F, 0x34, 0x5C, 0x00, 0x00, 0x00, 0x00),
2619*62c56f98SSadaf Ebrahimi };
2620*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp224k1_T[16] = {
2621*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp224k1_T_0_X, secp224k1_T_0_Y),
2622*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_1_X, secp224k1_T_1_Y),
2623*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_2_X, secp224k1_T_2_Y),
2624*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_3_X, secp224k1_T_3_Y),
2625*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_4_X, secp224k1_T_4_Y),
2626*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_5_X, secp224k1_T_5_Y),
2627*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_6_X, secp224k1_T_6_Y),
2628*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_7_X, secp224k1_T_7_Y),
2629*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_8_X, secp224k1_T_8_Y),
2630*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_9_X, secp224k1_T_9_Y),
2631*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_10_X, secp224k1_T_10_Y),
2632*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_11_X, secp224k1_T_11_Y),
2633*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_12_X, secp224k1_T_12_Y),
2634*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_13_X, secp224k1_T_13_Y),
2635*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_14_X, secp224k1_T_14_Y),
2636*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp224k1_T_15_X, secp224k1_T_15_Y),
2637*62c56f98SSadaf Ebrahimi };
2638*62c56f98SSadaf Ebrahimi #else
2639*62c56f98SSadaf Ebrahimi #define secp224k1_T NULL
2640*62c56f98SSadaf Ebrahimi #endif
2641*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
2642*62c56f98SSadaf Ebrahimi 
2643*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
2644*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_p[] = {
2645*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF),
2646*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2647*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2648*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2649*62c56f98SSadaf Ebrahimi };
2650*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_a[] = {
2651*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x00, 0x00),
2652*62c56f98SSadaf Ebrahimi };
2653*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_b[] = {
2654*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_2(0x07, 0x00),
2655*62c56f98SSadaf Ebrahimi };
2656*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_gx[] = {
2657*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x17, 0xF8, 0x16, 0x5B, 0x81, 0xF2, 0x59),
2658*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x28, 0xCE, 0x2D, 0xDB, 0xFC, 0x9B, 0x02),
2659*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x0B, 0x87, 0xCE, 0x95, 0x62, 0xA0, 0x55),
2660*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xBB, 0xDC, 0xF9, 0x7E, 0x66, 0xBE, 0x79),
2661*62c56f98SSadaf Ebrahimi };
2662*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_gy[] = {
2663*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0xD4, 0x10, 0xFB, 0x8F, 0xD0, 0x47, 0x9C),
2664*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x54, 0x85, 0xA6, 0x48, 0xB4, 0x17, 0xFD),
2665*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x08, 0x11, 0x0E, 0xFC, 0xFB, 0xA4, 0x5D),
2666*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0xC4, 0xA3, 0x26, 0x77, 0xDA, 0x3A, 0x48),
2667*62c56f98SSadaf Ebrahimi };
2668*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_n[] = {
2669*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x41, 0x36, 0xD0, 0x8C, 0x5E, 0xD2, 0xBF),
2670*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0xA0, 0x48, 0xAF, 0xE6, 0xDC, 0xAE, 0xBA),
2671*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2672*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF),
2673*62c56f98SSadaf Ebrahimi };
2674*62c56f98SSadaf Ebrahimi 
2675*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2676*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_0_X[] = {
2677*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x17, 0xF8, 0x16, 0x5B, 0x81, 0xF2, 0x59),
2678*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x28, 0xCE, 0x2D, 0xDB, 0xFC, 0x9B, 0x02),
2679*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x0B, 0x87, 0xCE, 0x95, 0x62, 0xA0, 0x55),
2680*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xBB, 0xDC, 0xF9, 0x7E, 0x66, 0xBE, 0x79),
2681*62c56f98SSadaf Ebrahimi };
2682*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_0_Y[] = {
2683*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0xD4, 0x10, 0xFB, 0x8F, 0xD0, 0x47, 0x9C),
2684*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x54, 0x85, 0xA6, 0x48, 0xB4, 0x17, 0xFD),
2685*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x08, 0x11, 0x0E, 0xFC, 0xFB, 0xA4, 0x5D),
2686*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0xC4, 0xA3, 0x26, 0x77, 0xDA, 0x3A, 0x48),
2687*62c56f98SSadaf Ebrahimi };
2688*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_1_X[] = {
2689*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xEE, 0xD7, 0x1E, 0x67, 0x86, 0x32, 0x74),
2690*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x73, 0xB1, 0xA9, 0xD5, 0xCC, 0x27, 0x78),
2691*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x0E, 0x11, 0x01, 0x71, 0xFE, 0x92, 0x73),
2692*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x28, 0x63, 0x6D, 0x72, 0x09, 0xA6, 0xC0),
2693*62c56f98SSadaf Ebrahimi };
2694*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_1_Y[] = {
2695*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xE1, 0x69, 0xDC, 0x3E, 0x2C, 0x75, 0xC3),
2696*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xB7, 0x3F, 0x30, 0x26, 0x3C, 0xDF, 0x8E),
2697*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xBE, 0xB9, 0x5D, 0x0E, 0xE8, 0x5E, 0x14),
2698*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0xC3, 0x05, 0xD6, 0xB7, 0xD5, 0x24, 0xFC),
2699*62c56f98SSadaf Ebrahimi };
2700*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_2_X[] = {
2701*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0xCF, 0x7B, 0xDC, 0xCD, 0xC3, 0x39, 0x9D),
2702*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0xDA, 0xB9, 0xE5, 0x64, 0xA7, 0x47, 0x91),
2703*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0x46, 0xA8, 0x61, 0xF6, 0x23, 0xEB, 0x58),
2704*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xC1, 0xFF, 0xE4, 0x55, 0xD5, 0xC2, 0xBF),
2705*62c56f98SSadaf Ebrahimi };
2706*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_2_Y[] = {
2707*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xBE, 0xB9, 0x59, 0x24, 0x13, 0x4A, 0x2A),
2708*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x45, 0x12, 0xDE, 0xBA, 0x4F, 0xEF, 0x56),
2709*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x08, 0xBF, 0xC1, 0x66, 0xAA, 0x0A, 0xBC),
2710*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xFE, 0x30, 0x55, 0x31, 0x86, 0xA7, 0xB4),
2711*62c56f98SSadaf Ebrahimi };
2712*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_3_X[] = {
2713*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xBF, 0x18, 0x81, 0x67, 0x27, 0x42, 0xBD),
2714*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x05, 0x83, 0xA4, 0xDD, 0x57, 0xD3, 0x50),
2715*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x63, 0xAB, 0xE4, 0x90, 0x70, 0xD0, 0x7C),
2716*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x5D, 0xFD, 0xA0, 0xEF, 0xCF, 0x1C, 0x54),
2717*62c56f98SSadaf Ebrahimi };
2718*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_3_Y[] = {
2719*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x80, 0xE4, 0xF6, 0x09, 0xBC, 0x57, 0x90),
2720*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x9F, 0x6E, 0x88, 0x54, 0x6E, 0x51, 0xF2),
2721*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x5F, 0x85, 0xFB, 0x84, 0x3E, 0x4A, 0xAA),
2722*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x19, 0xF5, 0x55, 0xC9, 0x07, 0xD8, 0xCE),
2723*62c56f98SSadaf Ebrahimi };
2724*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_4_X[] = {
2725*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0xB4, 0xC3, 0xD9, 0x5C, 0xA0, 0xD4, 0x90),
2726*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x30, 0xAF, 0x59, 0x9B, 0xF8, 0x04, 0x85),
2727*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xA6, 0xFD, 0x66, 0x7B, 0xC3, 0x39, 0x85),
2728*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE0, 0xBF, 0xF0, 0xC2, 0xE9, 0x71, 0xA4, 0x9E),
2729*62c56f98SSadaf Ebrahimi };
2730*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_4_Y[] = {
2731*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x2D, 0xB9, 0x88, 0x28, 0xF1, 0xBE, 0x78),
2732*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xF3, 0x1A, 0x0E, 0xB9, 0x01, 0x66, 0x34),
2733*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0xA7, 0xA4, 0xF4, 0x05, 0xD0, 0xAA, 0x53),
2734*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x39, 0x1E, 0x47, 0xE5, 0x68, 0xC8, 0xC0),
2735*62c56f98SSadaf Ebrahimi };
2736*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_5_X[] = {
2737*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0xB9, 0xFC, 0xE0, 0x33, 0x8A, 0x7D, 0x96),
2738*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x93, 0xA5, 0x53, 0x55, 0x16, 0xB4, 0x6E),
2739*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x5F, 0xEA, 0x9B, 0x29, 0x52, 0x71, 0xDA),
2740*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xF0, 0x24, 0xB8, 0x7D, 0xB7, 0xA0, 0x9B),
2741*62c56f98SSadaf Ebrahimi };
2742*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_5_Y[] = {
2743*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x00, 0x27, 0xB2, 0xDF, 0x73, 0xA2, 0xE0),
2744*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x2E, 0x4D, 0x7C, 0xDE, 0x7A, 0x23, 0x32),
2745*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x65, 0x60, 0xC7, 0x97, 0x1E, 0xA4, 0x22),
2746*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x13, 0x5B, 0x77, 0x59, 0xCB, 0x36, 0xE1),
2747*62c56f98SSadaf Ebrahimi };
2748*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_6_X[] = {
2749*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xBC, 0x9F, 0x9E, 0x2D, 0x53, 0x2A, 0xA8),
2750*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x5F, 0x64, 0x9F, 0x1A, 0x19, 0xE6, 0x77),
2751*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x7B, 0x39, 0xD2, 0xDB, 0x85, 0x84, 0xD5),
2752*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xC7, 0x0D, 0x58, 0x6E, 0x3F, 0x52, 0x15),
2753*62c56f98SSadaf Ebrahimi };
2754*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_6_Y[] = {
2755*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x68, 0x19, 0x0B, 0x68, 0xC9, 0x1E, 0xFB),
2756*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x4E, 0x21, 0x49, 0x3D, 0x55, 0xCC, 0x25),
2757*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xF9, 0x25, 0x45, 0x54, 0x45, 0xB1, 0x0F),
2758*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xB3, 0xF7, 0xCD, 0x80, 0xA4, 0x04, 0x05),
2759*62c56f98SSadaf Ebrahimi };
2760*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_7_X[] = {
2761*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x1E, 0x88, 0xC4, 0xAA, 0x18, 0x7E, 0x45),
2762*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xAC, 0xD9, 0xB2, 0xA1, 0xC0, 0x71, 0x5D),
2763*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xA2, 0xF1, 0x15, 0xA6, 0x5F, 0x6C, 0x86),
2764*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x5B, 0x05, 0xBC, 0xB7, 0xC6, 0x4E, 0x72),
2765*62c56f98SSadaf Ebrahimi };
2766*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_7_Y[] = {
2767*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x80, 0xF8, 0x5C, 0x20, 0x2A, 0xE1, 0xE2),
2768*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x48, 0x2E, 0x68, 0x82, 0x7F, 0xEB, 0x5F),
2769*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x3B, 0x25, 0xDB, 0x32, 0x4D, 0x88, 0x42),
2770*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0x6E, 0xA6, 0xB6, 0x6D, 0x62, 0x78, 0x22),
2771*62c56f98SSadaf Ebrahimi };
2772*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_8_X[] = {
2773*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x4D, 0x3E, 0x86, 0x58, 0xC3, 0xEB, 0xBA),
2774*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x89, 0x33, 0x18, 0x21, 0x1D, 0x9B, 0xE7),
2775*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x9D, 0xFF, 0xC3, 0x79, 0xC1, 0x88, 0xF8),
2776*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0xD4, 0x48, 0x53, 0xE8, 0xAD, 0x21, 0x16),
2777*62c56f98SSadaf Ebrahimi };
2778*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_8_Y[] = {
2779*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x7B, 0xDE, 0xCB, 0xD8, 0x39, 0x17, 0x7C),
2780*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0xF3, 0x03, 0xF2, 0x5C, 0xBC, 0xC8, 0x8A),
2781*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0xAE, 0x4C, 0xB0, 0x16, 0xA4, 0x93, 0x86),
2782*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x8B, 0x6B, 0xDC, 0xD7, 0x9A, 0x3E, 0x7E),
2783*62c56f98SSadaf Ebrahimi };
2784*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_9_X[] = {
2785*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x2D, 0x7A, 0xD2, 0x59, 0x05, 0xA2, 0x82),
2786*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x56, 0x09, 0x32, 0xF1, 0xE8, 0xE3, 0x72),
2787*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0xCA, 0xE5, 0x2E, 0xF0, 0xFB, 0x18, 0x19),
2788*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x85, 0xA9, 0x23, 0x15, 0x31, 0x1F, 0x0E),
2789*62c56f98SSadaf Ebrahimi };
2790*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_9_Y[] = {
2791*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xE5, 0xB1, 0x86, 0xB9, 0x6E, 0x8D, 0xD3),
2792*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x77, 0xFC, 0xC9, 0xA3, 0x3F, 0x89, 0xD2),
2793*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x6A, 0xDC, 0x25, 0xB0, 0xC7, 0x41, 0x54),
2794*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x11, 0x6B, 0xA6, 0x11, 0x62, 0xD4, 0x2D),
2795*62c56f98SSadaf Ebrahimi };
2796*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_10_X[] = {
2797*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x7D, 0x34, 0xB3, 0x20, 0x7F, 0x37, 0xAA),
2798*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0xD4, 0x45, 0xE8, 0xC2, 0xE9, 0xC5, 0xEA),
2799*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x32, 0x3B, 0x25, 0x7E, 0x79, 0xAF, 0xE7),
2800*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0xE4, 0x54, 0x71, 0xBE, 0x35, 0x4E, 0xD0),
2801*62c56f98SSadaf Ebrahimi };
2802*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_10_Y[] = {
2803*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x94, 0xDD, 0x8F, 0xB5, 0xC2, 0xDD, 0x75),
2804*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x49, 0xE9, 0x1C, 0x2F, 0x08, 0x49, 0xC6),
2805*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0xB6, 0x03, 0x88, 0x6F, 0xB8, 0x15, 0x67),
2806*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xD3, 0x1C, 0xF3, 0xA5, 0xEB, 0x79, 0x01),
2807*62c56f98SSadaf Ebrahimi };
2808*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_11_X[] = {
2809*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0xF9, 0x43, 0x88, 0x89, 0x0D, 0x06, 0xEA),
2810*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x2D, 0xF5, 0x98, 0x32, 0xF6, 0xB1, 0x05),
2811*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x73, 0x8F, 0x2B, 0x50, 0x27, 0x0A, 0xE7),
2812*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xE3, 0xBD, 0x16, 0x05, 0xC8, 0x93, 0x12),
2813*62c56f98SSadaf Ebrahimi };
2814*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_11_Y[] = {
2815*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0x6A, 0xF7, 0xE3, 0x3D, 0xDE, 0x5F, 0x2F),
2816*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xA3, 0x9C, 0x22, 0x3C, 0x33, 0x36, 0x5D),
2817*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x24, 0x4C, 0x69, 0x45, 0x78, 0x14, 0xAE),
2818*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xF8, 0xD4, 0xBF, 0xB8, 0xC0, 0xA1, 0x25),
2819*62c56f98SSadaf Ebrahimi };
2820*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_12_X[] = {
2821*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x88, 0xE1, 0x91, 0x03, 0xEB, 0xB3, 0x2B),
2822*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x11, 0xA1, 0xEF, 0x14, 0x0D, 0xC4, 0x7D),
2823*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0xD4, 0x0D, 0x1D, 0x96, 0x33, 0x5C, 0x19),
2824*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x45, 0x2A, 0x1A, 0xE6, 0x57, 0x04, 0x9B),
2825*62c56f98SSadaf Ebrahimi };
2826*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_12_Y[] = {
2827*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xB5, 0xA7, 0x80, 0xE9, 0x93, 0x97, 0x8D),
2828*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0xB9, 0x7C, 0xA0, 0xC9, 0x57, 0x26, 0x43),
2829*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0xEF, 0x56, 0xDA, 0x66, 0xF6, 0x1B, 0x9A),
2830*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x89, 0x6B, 0x91, 0xE0, 0xA9, 0x65, 0x2B),
2831*62c56f98SSadaf Ebrahimi };
2832*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_13_X[] = {
2833*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x98, 0x96, 0x9B, 0x06, 0x7D, 0x5E, 0x5A),
2834*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xFA, 0xC1, 0x5F, 0x19, 0x37, 0x94, 0x9D),
2835*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xBE, 0x6B, 0x1A, 0x05, 0xE4, 0xBF, 0x9F),
2836*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0xCD, 0x5D, 0x35, 0xB4, 0x51, 0xF7, 0x64),
2837*62c56f98SSadaf Ebrahimi };
2838*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_13_Y[] = {
2839*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xEF, 0x96, 0xDB, 0xF2, 0x61, 0x63, 0x59),
2840*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x04, 0x88, 0xC9, 0x9F, 0x1B, 0x94, 0xB9),
2841*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x30, 0x79, 0x7E, 0x24, 0xE7, 0x5F, 0xB8),
2842*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0xB8, 0x90, 0xB7, 0x94, 0x25, 0xBB, 0x0F),
2843*62c56f98SSadaf Ebrahimi };
2844*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_14_X[] = {
2845*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x79, 0xEA, 0xAD, 0xC0, 0x6D, 0x18, 0x57),
2846*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xA4, 0x58, 0x2A, 0x8D, 0x95, 0xB3, 0xE6),
2847*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xC4, 0xC2, 0x12, 0x0D, 0x79, 0xE2, 0x2B),
2848*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x6F, 0xBE, 0x97, 0x4D, 0xA4, 0x20, 0x07),
2849*62c56f98SSadaf Ebrahimi };
2850*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_14_Y[] = {
2851*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x31, 0x71, 0xC6, 0xA6, 0x91, 0xEB, 0x1F),
2852*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x9B, 0xA8, 0x4A, 0xE7, 0x77, 0xE1, 0xAA),
2853*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0x06, 0xD3, 0x3D, 0x94, 0x30, 0xEF, 0x8C),
2854*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xDF, 0xCA, 0xFA, 0xF5, 0x28, 0xF8, 0xC9),
2855*62c56f98SSadaf Ebrahimi };
2856*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_15_X[] = {
2857*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0xE1, 0x32, 0xFD, 0x3E, 0x81, 0xF8, 0x11),
2858*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0xF2, 0x4B, 0x1D, 0x19, 0xC9, 0x0F, 0xCC),
2859*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xB1, 0x8A, 0x22, 0x8B, 0x05, 0x6B, 0x56),
2860*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0x21, 0xEF, 0x30, 0xEC, 0x09, 0x2A, 0x89),
2861*62c56f98SSadaf Ebrahimi };
2862*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint secp256k1_T_15_Y[] = {
2863*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x84, 0x4A, 0x46, 0x07, 0x6C, 0x3C, 0x4C),
2864*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x18, 0x3A, 0xF4, 0xCC, 0xF5, 0xB2, 0xF2),
2865*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0x8F, 0xCD, 0x0A, 0x9C, 0xF4, 0xBD, 0x95),
2866*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x89, 0x7F, 0x8A, 0xB1, 0x52, 0x3A, 0xAB),
2867*62c56f98SSadaf Ebrahimi };
2868*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point secp256k1_T[16] = {
2869*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(secp256k1_T_0_X, secp256k1_T_0_Y),
2870*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_1_X, secp256k1_T_1_Y),
2871*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_2_X, secp256k1_T_2_Y),
2872*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_3_X, secp256k1_T_3_Y),
2873*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_4_X, secp256k1_T_4_Y),
2874*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_5_X, secp256k1_T_5_Y),
2875*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_6_X, secp256k1_T_6_Y),
2876*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_7_X, secp256k1_T_7_Y),
2877*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_8_X, secp256k1_T_8_Y),
2878*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_9_X, secp256k1_T_9_Y),
2879*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_10_X, secp256k1_T_10_Y),
2880*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_11_X, secp256k1_T_11_Y),
2881*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_12_X, secp256k1_T_12_Y),
2882*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_13_X, secp256k1_T_13_Y),
2883*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_14_X, secp256k1_T_14_Y),
2884*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(secp256k1_T_15_X, secp256k1_T_15_Y),
2885*62c56f98SSadaf Ebrahimi };
2886*62c56f98SSadaf Ebrahimi #else
2887*62c56f98SSadaf Ebrahimi #define secp256k1_T NULL
2888*62c56f98SSadaf Ebrahimi #endif
2889*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
2890*62c56f98SSadaf Ebrahimi 
2891*62c56f98SSadaf Ebrahimi /*
2892*62c56f98SSadaf Ebrahimi  * Domain parameters for brainpoolP256r1 (RFC 5639 3.4)
2893*62c56f98SSadaf Ebrahimi  */
2894*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
2895*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_p[] = {
2896*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x53, 0x6E, 0x1F, 0x1D, 0x48, 0x13, 0x20),
2897*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x20, 0x26, 0xD5, 0x23, 0xF6, 0x3B, 0x6E),
2898*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E),
2899*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9),
2900*62c56f98SSadaf Ebrahimi };
2901*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_a[] = {
2902*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0xB5, 0x30, 0xF3, 0x44, 0x4B, 0x4A, 0xE9),
2903*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x5C, 0xDC, 0x26, 0xC1, 0x55, 0x80, 0xFB),
2904*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xFF, 0x7A, 0x41, 0x30, 0x75, 0xF6, 0xEE),
2905*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x30, 0x2C, 0xFC, 0x75, 0x09, 0x5A, 0x7D),
2906*62c56f98SSadaf Ebrahimi };
2907*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_b[] = {
2908*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x07, 0x8C, 0xFF, 0x18, 0xDC, 0xCC, 0x6B),
2909*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xE1, 0xF7, 0x5C, 0x29, 0x16, 0x84, 0x95),
2910*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x7C, 0xD7, 0xBB, 0xD9, 0xB5, 0x30, 0xF3),
2911*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0x4B, 0x4A, 0xE9, 0x6C, 0x5C, 0xDC, 0x26),
2912*62c56f98SSadaf Ebrahimi };
2913*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_gx[] = {
2914*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x32, 0xCE, 0x9A, 0xBD, 0x53, 0x44, 0x3A),
2915*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x23, 0xBD, 0xE3, 0xE1, 0x27, 0xDE, 0xB9),
2916*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xB7, 0x81, 0xFC, 0x2F, 0x48, 0x4B, 0x2C),
2917*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x57, 0x7E, 0xCB, 0xB9, 0xAE, 0xD2, 0x8B),
2918*62c56f98SSadaf Ebrahimi };
2919*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_gy[] = {
2920*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x69, 0x04, 0x2F, 0xC7, 0x54, 0x1D, 0x5C),
2921*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x8E, 0xED, 0x2D, 0x13, 0x45, 0x77, 0xC2),
2922*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x1D, 0x61, 0x14, 0x1A, 0x46, 0xF8, 0x97),
2923*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xC4, 0xDA, 0xC3, 0x35, 0xF8, 0x7E, 0x54),
2924*62c56f98SSadaf Ebrahimi };
2925*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_n[] = {
2926*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x56, 0x48, 0x97, 0x82, 0x0E, 0x1E, 0x90),
2927*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xA6, 0x61, 0xB5, 0xA3, 0x7A, 0x39, 0x8C),
2928*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E),
2929*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9),
2930*62c56f98SSadaf Ebrahimi };
2931*62c56f98SSadaf Ebrahimi 
2932*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
2933*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_0_X[] = {
2934*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0x32, 0xCE, 0x9A, 0xBD, 0x53, 0x44, 0x3A),
2935*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x23, 0xBD, 0xE3, 0xE1, 0x27, 0xDE, 0xB9),
2936*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xB7, 0x81, 0xFC, 0x2F, 0x48, 0x4B, 0x2C),
2937*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x57, 0x7E, 0xCB, 0xB9, 0xAE, 0xD2, 0x8B),
2938*62c56f98SSadaf Ebrahimi };
2939*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_0_Y[] = {
2940*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x69, 0x04, 0x2F, 0xC7, 0x54, 0x1D, 0x5C),
2941*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x8E, 0xED, 0x2D, 0x13, 0x45, 0x77, 0xC2),
2942*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x1D, 0x61, 0x14, 0x1A, 0x46, 0xF8, 0x97),
2943*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xC4, 0xDA, 0xC3, 0x35, 0xF8, 0x7E, 0x54),
2944*62c56f98SSadaf Ebrahimi };
2945*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_1_X[] = {
2946*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xA2, 0xED, 0x52, 0xC9, 0x8C, 0xE3, 0xA5),
2947*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0xC9, 0xC4, 0x87, 0x3F, 0x93, 0x7A, 0xD1),
2948*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x12, 0x53, 0x61, 0x3E, 0x76, 0x08, 0xCB),
2949*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0x8C, 0x74, 0xF4, 0x08, 0xC3, 0x76, 0x80),
2950*62c56f98SSadaf Ebrahimi };
2951*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_1_Y[] = {
2952*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0xDD, 0x09, 0xA6, 0xED, 0xEE, 0xC4, 0x38),
2953*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xD9, 0xBE, 0x4B, 0xA5, 0xB7, 0x2B, 0x6E),
2954*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x20, 0x12, 0xCA, 0x0A, 0x38, 0x24, 0xAB),
2955*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x72, 0x71, 0x90, 0x7A, 0x2E, 0xB7, 0x23),
2956*62c56f98SSadaf Ebrahimi };
2957*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_2_X[] = {
2958*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x66, 0xA1, 0x93, 0x10, 0x2A, 0x51, 0x17),
2959*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0x10, 0x11, 0x12, 0xBC, 0xB0, 0xB6, 0x93),
2960*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x58, 0xD7, 0x0A, 0x84, 0x05, 0xA3, 0x9C),
2961*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x8E, 0x95, 0x61, 0xD3, 0x0B, 0xDF, 0x36),
2962*62c56f98SSadaf Ebrahimi };
2963*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_2_Y[] = {
2964*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x92, 0x12, 0x0F, 0x5E, 0x87, 0x70, 0x1B),
2965*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0xE9, 0x9B, 0xEB, 0x3A, 0xFB, 0xCF, 0xC4),
2966*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0x92, 0xB9, 0xF7, 0x45, 0xD3, 0x06, 0xB6),
2967*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x28, 0x65, 0xE1, 0xC5, 0x6C, 0x57, 0x18),
2968*62c56f98SSadaf Ebrahimi };
2969*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_3_X[] = {
2970*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x0E, 0x77, 0x01, 0x81, 0x9E, 0x38, 0x5C),
2971*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0xF0, 0xD5, 0xA5, 0x91, 0x2B, 0xDF, 0xC0),
2972*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xEE, 0xB6, 0x25, 0xD6, 0x98, 0xDE, 0x2D),
2973*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0xA1, 0x55, 0x63, 0x39, 0xEB, 0xB5, 0x47),
2974*62c56f98SSadaf Ebrahimi };
2975*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_3_Y[] = {
2976*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0xD6, 0xB8, 0xE3, 0x13, 0xED, 0x7F, 0xA3),
2977*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xE8, 0xAE, 0x36, 0xB8, 0xCD, 0x19, 0x02),
2978*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x82, 0x83, 0x7A, 0x7B, 0x46, 0x56, 0xE8),
2979*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x60, 0x46, 0x15, 0x5A, 0xAC, 0x99, 0x30),
2980*62c56f98SSadaf Ebrahimi };
2981*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_4_X[] = {
2982*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x61, 0x50, 0xC6, 0xFF, 0x10, 0x7D, 0x04),
2983*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x51, 0xDF, 0xA9, 0x7D, 0x78, 0x26, 0x74),
2984*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0x15, 0x9A, 0xF7, 0x01, 0xC1, 0xBB, 0x40),
2985*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x0F, 0xE6, 0x2A, 0xBD, 0x4A, 0x9E, 0x87),
2986*62c56f98SSadaf Ebrahimi };
2987*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_4_Y[] = {
2988*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xF8, 0xD1, 0x77, 0xD2, 0x49, 0xB3, 0xDD),
2989*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x86, 0xFB, 0x9E, 0x1F, 0x5A, 0x60, 0x47),
2990*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xC4, 0x8D, 0xCD, 0x86, 0x61, 0x2F, 0xF9),
2991*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xF6, 0xB9, 0xAC, 0x37, 0x9D, 0xE9, 0x28),
2992*62c56f98SSadaf Ebrahimi };
2993*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_5_X[] = {
2994*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x77, 0xAA, 0x97, 0x9C, 0x0B, 0x04, 0x20),
2995*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0xA6, 0x60, 0x81, 0xCE, 0x25, 0x13, 0x3E),
2996*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x00, 0xF3, 0xBB, 0x82, 0x99, 0x95, 0xB7),
2997*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x5A, 0xCE, 0x90, 0x71, 0x38, 0x2F, 0x10),
2998*62c56f98SSadaf Ebrahimi };
2999*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_5_Y[] = {
3000*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x1A, 0xC0, 0x84, 0x27, 0xD6, 0x9D, 0xB7),
3001*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x37, 0x52, 0x16, 0x13, 0x0E, 0xCE, 0x92),
3002*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xBF, 0x5A, 0xDB, 0xDB, 0x6E, 0x1E, 0x69),
3003*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0xB7, 0x5E, 0xF9, 0x86, 0xDD, 0x8A, 0x5C),
3004*62c56f98SSadaf Ebrahimi };
3005*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_6_X[] = {
3006*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xAB, 0x5C, 0x8D, 0x1D, 0xF2, 0x2D, 0x1E),
3007*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0xC5, 0xF8, 0xF7, 0x1D, 0x96, 0x0B, 0x4D),
3008*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x4C, 0xA7, 0x45, 0x20, 0x6A, 0x1E, 0x5B),
3009*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x5D, 0xEF, 0xDE, 0xEE, 0x39, 0x44, 0x19),
3010*62c56f98SSadaf Ebrahimi };
3011*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_6_Y[] = {
3012*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x2F, 0x6D, 0x52, 0xC9, 0x58, 0x60, 0xE8),
3013*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0xC9, 0x62, 0xCB, 0x38, 0x3C, 0x55, 0xCA),
3014*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xA5, 0x09, 0x10, 0x88, 0xDB, 0xE3, 0xBD),
3015*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xE0, 0x3C, 0xCE, 0x06, 0x0B, 0x4B, 0x5D),
3016*62c56f98SSadaf Ebrahimi };
3017*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_7_X[] = {
3018*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x1D, 0xB4, 0x10, 0x76, 0x8F, 0xBA, 0x09),
3019*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x70, 0x5A, 0x07, 0xF5, 0x1A, 0x74, 0xC7),
3020*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xE9, 0x94, 0xA8, 0xC0, 0xD5, 0x4A, 0x4A),
3021*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x6D, 0xD4, 0xE8, 0x9B, 0xE9, 0x6D, 0x0E),
3022*62c56f98SSadaf Ebrahimi };
3023*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_7_Y[] = {
3024*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x00, 0x32, 0x41, 0x57, 0x84, 0x89, 0x52),
3025*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xC7, 0x14, 0xEC, 0xE9, 0x27, 0xFF, 0xF3),
3026*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x67, 0x9E, 0xFB, 0xB6, 0xB8, 0x96, 0xF3),
3027*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0x4A, 0xE3, 0x97, 0x4B, 0x58, 0xDE, 0x30),
3028*62c56f98SSadaf Ebrahimi };
3029*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_8_X[] = {
3030*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0x1E, 0x5C, 0xF5, 0x7F, 0xD5, 0xD4, 0xAA),
3031*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x08, 0x7A, 0xF1, 0xBD, 0x89, 0xC7, 0x1E),
3032*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0xF9, 0x11, 0x1B, 0xF5, 0x3C, 0x6D, 0x8C),
3033*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x50, 0xE5, 0x69, 0x1D, 0x59, 0xFC, 0x0C),
3034*62c56f98SSadaf Ebrahimi };
3035*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_8_Y[] = {
3036*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x2F, 0xF8, 0x3F, 0xEC, 0x55, 0x99, 0x57),
3037*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0xA7, 0x29, 0x90, 0x43, 0x81, 0x31, 0x4C),
3038*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x18, 0x44, 0x50, 0x5D, 0x76, 0xCB, 0xDD),
3039*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xC5, 0x5B, 0x9A, 0x03, 0xE6, 0x17, 0x39),
3040*62c56f98SSadaf Ebrahimi };
3041*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_9_X[] = {
3042*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x89, 0xFC, 0x55, 0x94, 0x91, 0x6A, 0xA2),
3043*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x46, 0x35, 0xF2, 0x3A, 0x42, 0x08, 0x2F),
3044*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0xD2, 0x76, 0x49, 0x42, 0x87, 0xD3, 0x7F),
3045*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xEA, 0xA0, 0x52, 0xF1, 0x6A, 0x30, 0x57),
3046*62c56f98SSadaf Ebrahimi };
3047*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_9_Y[] = {
3048*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0xB2, 0x57, 0xA3, 0x8A, 0x4D, 0x1B, 0x3C),
3049*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0xA3, 0x99, 0x94, 0xB5, 0x3D, 0x64, 0x09),
3050*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xC3, 0xD7, 0x53, 0xF6, 0x49, 0x1C, 0x60),
3051*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x23, 0x41, 0x4D, 0xFB, 0x7A, 0x5C, 0x53),
3052*62c56f98SSadaf Ebrahimi };
3053*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_10_X[] = {
3054*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xB8, 0x15, 0x65, 0x5C, 0x85, 0x94, 0xD7),
3055*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x37, 0xC7, 0xF8, 0x7E, 0xAE, 0x6C, 0x10),
3056*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xD8, 0x11, 0x54, 0x98, 0x44, 0xE3, 0xF1),
3057*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x4D, 0xA6, 0x4B, 0x28, 0xF2, 0x57, 0x9E),
3058*62c56f98SSadaf Ebrahimi };
3059*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_10_Y[] = {
3060*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xD0, 0xEB, 0x1E, 0xAA, 0x30, 0xD3, 0x6A),
3061*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x9B, 0x4D, 0xA7, 0x73, 0x6E, 0xB6, 0x45),
3062*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x47, 0xF6, 0xED, 0x37, 0xEF, 0x71, 0x4D),
3063*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0xB5, 0x49, 0x61, 0x5E, 0x45, 0xF6, 0x4A),
3064*62c56f98SSadaf Ebrahimi };
3065*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_11_X[] = {
3066*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x0E, 0xB3, 0x84, 0x3A, 0x63, 0x72, 0x84),
3067*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x53, 0x5C, 0xA7, 0xC6, 0x2E, 0xAB, 0x9E),
3068*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x0F, 0x8F, 0x87, 0x50, 0x28, 0xB4, 0xAE),
3069*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x98, 0x4A, 0x98, 0x31, 0x86, 0xCA, 0x51),
3070*62c56f98SSadaf Ebrahimi };
3071*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_11_Y[] = {
3072*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xC9, 0xE2, 0xFD, 0x5D, 0x1F, 0xE8, 0xC2),
3073*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x90, 0x91, 0xC4, 0x84, 0xF0, 0xBA, 0xC5),
3074*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x5A, 0xB3, 0x4E, 0xFB, 0xE0, 0x57, 0xE8),
3075*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x0B, 0x90, 0xA6, 0xFD, 0x9D, 0x8E, 0x02),
3076*62c56f98SSadaf Ebrahimi };
3077*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_12_X[] = {
3078*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x41, 0x8F, 0x31, 0xFA, 0x5A, 0xF6, 0x33),
3079*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xE9, 0xE3, 0xF6, 0xE0, 0x4A, 0xE7, 0xD2),
3080*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0x4E, 0xCD, 0xA2, 0x22, 0x14, 0xD4, 0x12),
3081*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xED, 0x21, 0xB7, 0x0F, 0x53, 0x10, 0x17),
3082*62c56f98SSadaf Ebrahimi };
3083*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_12_Y[] = {
3084*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x06, 0x24, 0x2C, 0x4E, 0xD1, 0x1E, 0x9F),
3085*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x3F, 0xC1, 0x9F, 0xAB, 0xF0, 0x37, 0x95),
3086*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x03, 0x5E, 0x12, 0xCE, 0x83, 0x1B, 0x2A, 0x18),
3087*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x65, 0xCF, 0xE8, 0x5C, 0xA5, 0xA2, 0x70),
3088*62c56f98SSadaf Ebrahimi };
3089*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_13_X[] = {
3090*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x86, 0x76, 0x3A, 0x94, 0xF6, 0x1D, 0xC1),
3091*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xDA, 0xC9, 0xA6, 0x29, 0x93, 0x15, 0x10),
3092*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x61, 0x6A, 0x7D, 0xC7, 0xA9, 0xF3, 0x76),
3093*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x03, 0x71, 0xA2, 0x15, 0xCE, 0x50, 0x72),
3094*62c56f98SSadaf Ebrahimi };
3095*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_13_Y[] = {
3096*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0xD0, 0xA8, 0x1E, 0x91, 0xC4, 0x4F, 0x24),
3097*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x4B, 0x7E, 0xD7, 0x71, 0x58, 0x7E, 0x1E),
3098*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x45, 0xAF, 0x2A, 0x18, 0x93, 0x95, 0x3B),
3099*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x8F, 0xC7, 0xFA, 0x4C, 0x7A, 0x86, 0x54),
3100*62c56f98SSadaf Ebrahimi };
3101*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_14_X[] = {
3102*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0xAF, 0x68, 0x3A, 0x23, 0xC1, 0x2E, 0xBF),
3103*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x50, 0x11, 0x67, 0x39, 0xB9, 0xAF, 0x48),
3104*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x86, 0xAA, 0x1E, 0x88, 0x21, 0x29, 0x8B),
3105*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x28, 0xA4, 0x9D, 0x89, 0xA9, 0x9A, 0x10),
3106*62c56f98SSadaf Ebrahimi };
3107*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_14_Y[] = {
3108*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xBA, 0x04, 0x67, 0xB7, 0x01, 0x40, 0x38),
3109*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xE9, 0x09, 0xA3, 0xCA, 0xA6, 0x37, 0xF6),
3110*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x97, 0xA8, 0xB6, 0x3C, 0xEE, 0x90, 0x3D),
3111*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xED, 0xC4, 0xF7, 0xC3, 0x95, 0xEC, 0x85),
3112*62c56f98SSadaf Ebrahimi };
3113*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_15_X[] = {
3114*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x84, 0xBD, 0xEB, 0xD5, 0x64, 0xBB, 0x9D),
3115*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x9B, 0xE2, 0x28, 0x50, 0xC2, 0x72, 0x40),
3116*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0xF2, 0x74, 0xD1, 0x26, 0xBF, 0x32, 0x68),
3117*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xCB, 0xAF, 0x72, 0xDB, 0x6D, 0x30, 0x98),
3118*62c56f98SSadaf Ebrahimi };
3119*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP256r1_T_15_Y[] = {
3120*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x50, 0x85, 0xF4, 0x2B, 0x48, 0xC1, 0xAD),
3121*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x28, 0xBB, 0x11, 0xBA, 0x5B, 0x22, 0x6C),
3122*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xA1, 0xE5, 0x5C, 0xC9, 0x1D, 0x44, 0x45),
3123*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xE8, 0xE6, 0x6F, 0xBB, 0xC1, 0x81, 0x7F),
3124*62c56f98SSadaf Ebrahimi };
3125*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point brainpoolP256r1_T[16] = {
3126*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(brainpoolP256r1_T_0_X, brainpoolP256r1_T_0_Y),
3127*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_1_X, brainpoolP256r1_T_1_Y),
3128*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_2_X, brainpoolP256r1_T_2_Y),
3129*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_3_X, brainpoolP256r1_T_3_Y),
3130*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_4_X, brainpoolP256r1_T_4_Y),
3131*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_5_X, brainpoolP256r1_T_5_Y),
3132*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_6_X, brainpoolP256r1_T_6_Y),
3133*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_7_X, brainpoolP256r1_T_7_Y),
3134*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_8_X, brainpoolP256r1_T_8_Y),
3135*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_9_X, brainpoolP256r1_T_9_Y),
3136*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_10_X, brainpoolP256r1_T_10_Y),
3137*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_11_X, brainpoolP256r1_T_11_Y),
3138*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_12_X, brainpoolP256r1_T_12_Y),
3139*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_13_X, brainpoolP256r1_T_13_Y),
3140*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_14_X, brainpoolP256r1_T_14_Y),
3141*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP256r1_T_15_X, brainpoolP256r1_T_15_Y),
3142*62c56f98SSadaf Ebrahimi };
3143*62c56f98SSadaf Ebrahimi #else
3144*62c56f98SSadaf Ebrahimi #define brainpoolP256r1_T NULL
3145*62c56f98SSadaf Ebrahimi #endif
3146*62c56f98SSadaf Ebrahimi 
3147*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
3148*62c56f98SSadaf Ebrahimi 
3149*62c56f98SSadaf Ebrahimi /*
3150*62c56f98SSadaf Ebrahimi  * Domain parameters for brainpoolP384r1 (RFC 5639 3.6)
3151*62c56f98SSadaf Ebrahimi  */
3152*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
3153*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_p[] = {
3154*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xEC, 0x07, 0x31, 0x13, 0x00, 0x47, 0x87),
3155*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x1A, 0x1D, 0x90, 0x29, 0xA7, 0xD3, 0xAC),
3156*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x11, 0xB7, 0x7F, 0x19, 0xDA, 0xB1, 0x12),
3157*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15),
3158*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F),
3159*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C),
3160*62c56f98SSadaf Ebrahimi };
3161*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_a[] = {
3162*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04),
3163*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0xD4, 0x3A, 0x50, 0x4A, 0x81, 0xA5, 0x8A),
3164*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xF9, 0x91, 0xBA, 0xEF, 0x65, 0x91, 0x13),
3165*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x27, 0xB2, 0x4F, 0x8E, 0xA2, 0xBE, 0xC2),
3166*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xAF, 0x05, 0xCE, 0x0A, 0x08, 0x72, 0x3C),
3167*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x15, 0x8C, 0x3D, 0xC6, 0x82, 0xC3, 0x7B),
3168*62c56f98SSadaf Ebrahimi };
3169*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_b[] = {
3170*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x4C, 0x50, 0xFA, 0x96, 0x86, 0xB7, 0x3A),
3171*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0xC9, 0xDB, 0x95, 0x02, 0x39, 0xB4, 0x7C),
3172*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x62, 0xEB, 0x3E, 0xA5, 0x0E, 0x88, 0x2E),
3173*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA6, 0xD2, 0xDC, 0x07, 0xE1, 0x7D, 0xB7, 0x2F),
3174*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x44, 0xF0, 0x16, 0x54, 0xB5, 0x39, 0x8B),
3175*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04),
3176*62c56f98SSadaf Ebrahimi };
3177*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_gx[] = {
3178*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xAF, 0xD4, 0x47, 0xE2, 0xB2, 0x87, 0xEF),
3179*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x46, 0xD6, 0x36, 0x34, 0xE0, 0x26, 0xE8),
3180*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x10, 0xBD, 0x0C, 0xFE, 0xCA, 0x7F, 0xDB),
3181*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x4F, 0xF1, 0x7E, 0xE7, 0xA3, 0x47, 0x88),
3182*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x3F, 0xC1, 0xB7, 0x81, 0x3A, 0xA6, 0xA2),
3183*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x45, 0xCF, 0x68, 0xF0, 0x64, 0x1C, 0x1D),
3184*62c56f98SSadaf Ebrahimi };
3185*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_gy[] = {
3186*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x53, 0x3C, 0x26, 0x41, 0x03, 0x82, 0x42),
3187*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x91, 0x77, 0x21, 0x46, 0x46, 0x0E),
3188*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x29, 0x91, 0xF9, 0x4F, 0x05, 0x9C, 0xE1),
3189*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x58, 0xEC, 0xFE, 0x29, 0x0B, 0xB7, 0x62),
3190*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xD5, 0xCF, 0x95, 0x8E, 0xEB, 0xB1, 0x5C),
3191*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xC2, 0xF9, 0x20, 0x75, 0x1D, 0xBE, 0x8A),
3192*62c56f98SSadaf Ebrahimi };
3193*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_n[] = {
3194*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x65, 0x04, 0xE9, 0x02, 0x32, 0x88, 0x3B),
3195*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xC3, 0x7F, 0x6B, 0xAF, 0xB6, 0x3A, 0xCF),
3196*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x25, 0x04, 0xAC, 0x6C, 0x6E, 0x16, 0x1F),
3197*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15),
3198*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F),
3199*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C),
3200*62c56f98SSadaf Ebrahimi };
3201*62c56f98SSadaf Ebrahimi 
3202*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
3203*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_0_X[] = {
3204*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xAF, 0xD4, 0x47, 0xE2, 0xB2, 0x87, 0xEF),
3205*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x46, 0xD6, 0x36, 0x34, 0xE0, 0x26, 0xE8),
3206*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x10, 0xBD, 0x0C, 0xFE, 0xCA, 0x7F, 0xDB),
3207*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x4F, 0xF1, 0x7E, 0xE7, 0xA3, 0x47, 0x88),
3208*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x3F, 0xC1, 0xB7, 0x81, 0x3A, 0xA6, 0xA2),
3209*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x45, 0xCF, 0x68, 0xF0, 0x64, 0x1C, 0x1D),
3210*62c56f98SSadaf Ebrahimi };
3211*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_0_Y[] = {
3212*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x53, 0x3C, 0x26, 0x41, 0x03, 0x82, 0x42),
3213*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x91, 0x77, 0x21, 0x46, 0x46, 0x0E),
3214*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x29, 0x91, 0xF9, 0x4F, 0x05, 0x9C, 0xE1),
3215*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x58, 0xEC, 0xFE, 0x29, 0x0B, 0xB7, 0x62),
3216*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0xD5, 0xCF, 0x95, 0x8E, 0xEB, 0xB1, 0x5C),
3217*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xC2, 0xF9, 0x20, 0x75, 0x1D, 0xBE, 0x8A),
3218*62c56f98SSadaf Ebrahimi };
3219*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_1_X[] = {
3220*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0xD8, 0x8A, 0x54, 0x41, 0xD6, 0x6B, 0x1D),
3221*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x3B, 0xF1, 0x22, 0xFD, 0x2D, 0x4B, 0x03),
3222*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x55, 0xE3, 0x33, 0xF0, 0x73, 0x52, 0x5A),
3223*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x3F, 0x30, 0x26, 0xCA, 0x7F, 0x52, 0xA3),
3224*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD3, 0x6E, 0x17, 0x9B, 0xD5, 0x2A, 0x4A, 0x31),
3225*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xDA, 0x6B, 0xE5, 0x03, 0x07, 0x1D, 0x2E),
3226*62c56f98SSadaf Ebrahimi };
3227*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_1_Y[] = {
3228*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x7A, 0xAF, 0x98, 0xE3, 0xA4, 0xF6, 0x19),
3229*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x7D, 0xFE, 0x51, 0x40, 0x3B, 0x47, 0xD2),
3230*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x88, 0xEC, 0xC4, 0xE2, 0x8F, 0xCB, 0xA4),
3231*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0xE2, 0x88, 0x2D, 0x4E, 0x50, 0xEB, 0x9A),
3232*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x54, 0x94, 0x5E, 0xF4, 0x7F, 0x3A, 0x04),
3233*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x07, 0x1C, 0xE1, 0xBD, 0x0F, 0xF8, 0x63),
3234*62c56f98SSadaf Ebrahimi };
3235*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_2_X[] = {
3236*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x92, 0x28, 0x2E, 0x32, 0x04, 0xB1, 0x4D),
3237*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x82, 0x44, 0x43, 0x76, 0x0D, 0x55, 0xBF),
3238*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0xE3, 0xFF, 0x89, 0x46, 0xDE, 0x4E, 0xFE),
3239*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0x22, 0xBB, 0x67, 0x1A, 0x81, 0xEE, 0x27),
3240*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x54, 0xE2, 0x7A, 0xAE, 0xDA, 0x2C, 0xD0),
3241*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x9A, 0x90, 0xAA, 0x6E, 0x8B, 0xCC, 0x5F),
3242*62c56f98SSadaf Ebrahimi };
3243*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_2_Y[] = {
3244*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x40, 0xAC, 0xED, 0x7D, 0x37, 0x87, 0xAC),
3245*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0xF8, 0xB1, 0x80, 0x4C, 0x8C, 0x04, 0x42),
3246*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x98, 0x2C, 0xAD, 0x30, 0x69, 0x35, 0xC0),
3247*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x2E, 0x00, 0x2F, 0x44, 0x8C, 0xF0, 0xC0),
3248*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x58, 0x07, 0xD7, 0xCD, 0x60, 0xA1, 0x5B),
3249*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0xFB, 0x7B, 0x03, 0x05, 0x5E, 0x79, 0x73),
3250*62c56f98SSadaf Ebrahimi };
3251*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_3_X[] = {
3252*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x17, 0xCE, 0x38, 0x4B, 0x5E, 0x5B, 0xC8),
3253*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x0E, 0x0A, 0x61, 0x9D, 0x7C, 0x62, 0x08),
3254*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0xF0, 0x98, 0x71, 0x7F, 0x17, 0x26, 0xD7),
3255*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0xD3, 0xFA, 0x3C, 0xF0, 0x70, 0x07, 0x82),
3256*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x47, 0x5C, 0x09, 0x43, 0xB7, 0x65, 0x15),
3257*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xA9, 0xA7, 0x3E, 0xFA, 0xF3, 0xEC, 0x22),
3258*62c56f98SSadaf Ebrahimi };
3259*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_3_Y[] = {
3260*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x78, 0x22, 0x2B, 0x58, 0x71, 0xFA, 0xAA),
3261*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x30, 0xCE, 0x6A, 0xB3, 0xB0, 0x4F, 0x83),
3262*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0x95, 0x20, 0xA9, 0x23, 0xC2, 0x65, 0xE7),
3263*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0xCF, 0x03, 0x5B, 0x8A, 0x80, 0x44, 0xBB),
3264*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xF8, 0x91, 0xF7, 0xD5, 0xED, 0xEA, 0x81),
3265*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x5B, 0x16, 0x10, 0x25, 0xAC, 0x2A, 0x17),
3266*62c56f98SSadaf Ebrahimi };
3267*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_4_X[] = {
3268*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xEC, 0xDC, 0xC4, 0x7B, 0x8C, 0x6B, 0xE9),
3269*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xBB, 0x1C, 0xD3, 0x5A, 0xEE, 0xD9, 0x97),
3270*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x5D, 0x30, 0x5E, 0xF7, 0xB2, 0x41, 0x9D),
3271*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xCE, 0x0F, 0x1A, 0xC6, 0x41, 0x64, 0x62),
3272*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x18, 0xE1, 0xE3, 0x82, 0x15, 0x66, 0x4B),
3273*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0xE2, 0x24, 0x04, 0x72, 0x39, 0xA0, 0x7C),
3274*62c56f98SSadaf Ebrahimi };
3275*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_4_Y[] = {
3276*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x51, 0xA2, 0x58, 0x88, 0x62, 0xE1, 0x02),
3277*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xD2, 0x65, 0x14, 0xE9, 0x4C, 0x82, 0x30),
3278*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xE1, 0xAC, 0x87, 0xAE, 0x31, 0x1A, 0x7A),
3279*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0x4F, 0x96, 0x1E, 0x85, 0x7A, 0xC3, 0x2B),
3280*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x86, 0xBB, 0xF0, 0xC0, 0x9D, 0x08, 0x7B),
3281*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x53, 0x03, 0x09, 0x80, 0x91, 0xEF, 0x68),
3282*62c56f98SSadaf Ebrahimi };
3283*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_5_X[] = {
3284*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0xD7, 0xAF, 0x6F, 0x69, 0x7B, 0x88, 0xA1),
3285*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x13, 0xE4, 0x30, 0xA2, 0x47, 0xB5, 0xC1),
3286*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xD2, 0xC0, 0xDD, 0x8A, 0x1C, 0x3C, 0xF2),
3287*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x8C, 0xB3, 0x4C, 0xBA, 0x8B, 0x6D, 0xCF),
3288*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0xC7, 0xA1, 0xA8, 0x6E, 0x3C, 0x4F, 0xF1),
3289*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x4A, 0x97, 0xC8, 0x03, 0x6F, 0x01, 0x82),
3290*62c56f98SSadaf Ebrahimi };
3291*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_5_Y[] = {
3292*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x18, 0x12, 0xA9, 0x39, 0xD5, 0x22, 0x26),
3293*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0xA7, 0xC0, 0xBD, 0x9D, 0x8D, 0x78, 0x38),
3294*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xB3, 0xD0, 0x7F, 0xDF, 0xD0, 0x30, 0xDE),
3295*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x25, 0x73, 0x96, 0xEC, 0xA8, 0x1D, 0x7C),
3296*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xD1, 0x65, 0x66, 0xDC, 0xD9, 0xCF, 0xDF),
3297*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0xED, 0x7B, 0x37, 0xAD, 0xE2, 0xBE, 0x2D),
3298*62c56f98SSadaf Ebrahimi };
3299*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_6_X[] = {
3300*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x79, 0x42, 0x6A, 0x07, 0x66, 0xB1, 0xBD),
3301*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x53, 0x62, 0x65, 0x92, 0x09, 0x4C, 0xA1),
3302*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xAF, 0xC3, 0x03, 0xF6, 0xF4, 0x2D, 0x9B),
3303*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xCA, 0x41, 0xD9, 0xA2, 0x69, 0x9B, 0xC9),
3304*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0xB2, 0xA6, 0x8D, 0xE1, 0xAA, 0x61, 0x76),
3305*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xBA, 0x4D, 0x12, 0xB6, 0xBE, 0xF3, 0x7E),
3306*62c56f98SSadaf Ebrahimi };
3307*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_6_Y[] = {
3308*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xD9, 0x92, 0x22, 0x07, 0xCE, 0xC9, 0x26),
3309*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0xA1, 0x7C, 0x91, 0xDB, 0x32, 0xF7, 0xE5),
3310*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x49, 0x4B, 0x6D, 0xFB, 0xD9, 0x70, 0x3B),
3311*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xFB, 0x4E, 0x4C, 0x5E, 0x66, 0x81, 0x1D),
3312*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0xB3, 0xE1, 0x00, 0xB7, 0xD9, 0xCC, 0x58),
3313*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x36, 0x8B, 0xC4, 0x39, 0x20, 0xFD, 0x30),
3314*62c56f98SSadaf Ebrahimi };
3315*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_7_X[] = {
3316*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x1F, 0x60, 0x03, 0xBB, 0xD7, 0x60, 0x57),
3317*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x3C, 0x62, 0xDD, 0x71, 0x95, 0xE9, 0x61),
3318*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x5B, 0x7A, 0x5F, 0x68, 0x81, 0xC5, 0x90),
3319*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xAF, 0xB5, 0xB9, 0x98, 0x42, 0x28, 0xA5),
3320*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x29, 0x8E, 0x11, 0x49, 0xB4, 0xD7, 0x20),
3321*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x3E, 0xD2, 0x30, 0xA1, 0xBA, 0xCA, 0x03),
3322*62c56f98SSadaf Ebrahimi };
3323*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_7_Y[] = {
3324*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x37, 0x64, 0x44, 0x2F, 0x03, 0xE5, 0x41),
3325*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x42, 0xBC, 0xFF, 0xA2, 0x1A, 0x5F, 0x06),
3326*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0x04, 0xAB, 0x04, 0xE0, 0x24, 0xAD, 0x2A),
3327*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x45, 0x17, 0x67, 0x1F, 0x3E, 0x53, 0xF8),
3328*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x0F, 0xB3, 0x1B, 0x57, 0x54, 0xC2, 0x03),
3329*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xD3, 0xF8, 0xC4, 0x1B, 0x9B, 0xFA, 0x30),
3330*62c56f98SSadaf Ebrahimi };
3331*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_8_X[] = {
3332*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x90, 0xFD, 0xFB, 0xCA, 0x49, 0x38, 0x4E),
3333*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0xCF, 0xC6, 0xDD, 0xF0, 0xFF, 0x8C, 0x11),
3334*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x69, 0x9D, 0xBD, 0x5F, 0x33, 0xE9, 0xB4),
3335*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x19, 0x82, 0x3D, 0xAC, 0x1C, 0x40, 0x23),
3336*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0xC7, 0x02, 0x46, 0x14, 0x77, 0x00, 0xBE),
3337*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x05, 0xF2, 0x77, 0x3A, 0x66, 0x5C, 0x39),
3338*62c56f98SSadaf Ebrahimi };
3339*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_8_Y[] = {
3340*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xE6, 0x17, 0xDE, 0xB2, 0xA1, 0xE5, 0xB8),
3341*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x71, 0xEC, 0x9D, 0xD8, 0xF5, 0xD4, 0x66),
3342*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0xC6, 0x42, 0x5E, 0xE7, 0x18, 0xBA, 0xD0),
3343*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x21, 0x68, 0x5A, 0x26, 0xFB, 0xD7, 0x17),
3344*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x00, 0x5C, 0xBA, 0x8A, 0x34, 0xEC, 0x75),
3345*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0x9C, 0x3C, 0xAF, 0x53, 0xE8, 0x65, 0x35),
3346*62c56f98SSadaf Ebrahimi };
3347*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_9_X[] = {
3348*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xEF, 0x28, 0xDC, 0x67, 0x05, 0xC8, 0xDF),
3349*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x78, 0xC3, 0x85, 0x49, 0xA0, 0xBC, 0x0F),
3350*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x3E, 0x2D, 0xA0, 0xCF, 0xD4, 0x7A, 0xF5),
3351*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x93, 0xFE, 0x60, 0xB3, 0x6E, 0x99, 0xE2),
3352*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x62, 0xAD, 0x04, 0xE7, 0x49, 0xAF, 0x5E, 0xE3),
3353*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x7A, 0xED, 0xA6, 0x9E, 0x18, 0x09, 0x31),
3354*62c56f98SSadaf Ebrahimi };
3355*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_9_Y[] = {
3356*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x05, 0x94, 0x44, 0xDC, 0xB8, 0x85, 0x94),
3357*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xB7, 0x37, 0xC2, 0x50, 0x75, 0x15, 0xDA),
3358*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0xC6, 0x0F, 0xB2, 0xA9, 0x91, 0x3E, 0xE8),
3359*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x81, 0xAD, 0x25, 0xA1, 0x26, 0x73, 0x15),
3360*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xF1, 0xD1, 0x61, 0x7C, 0x76, 0x8F, 0x13),
3361*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0xDB, 0x4A, 0xFF, 0x14, 0xA7, 0x48, 0x0B),
3362*62c56f98SSadaf Ebrahimi };
3363*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_10_X[] = {
3364*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x73, 0xC6, 0xC2, 0xCC, 0xF1, 0x57, 0x04),
3365*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0xED, 0x73, 0x27, 0x70, 0x82, 0xB6, 0x5E),
3366*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xBA, 0xAC, 0x3A, 0xCF, 0xF4, 0xEA, 0xA6),
3367*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xD6, 0xB1, 0x8F, 0x0E, 0x08, 0x2C, 0x5E),
3368*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xE3, 0x8F, 0x2F, 0x0E, 0xA1, 0xF3, 0x07),
3369*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0xF5, 0x7C, 0x9B, 0x29, 0x0A, 0xF6, 0x28),
3370*62c56f98SSadaf Ebrahimi };
3371*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_10_Y[] = {
3372*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0xEE, 0x17, 0x47, 0x34, 0x15, 0xA3, 0xAF),
3373*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xBE, 0x88, 0x48, 0xE7, 0xA2, 0xBB, 0xDE),
3374*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0xAD, 0xDC, 0x65, 0x61, 0x37, 0x0F, 0xC1),
3375*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x67, 0xAD, 0xA2, 0x3A, 0x1C, 0x91, 0x78),
3376*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x07, 0x0C, 0x3A, 0x41, 0x6E, 0x13, 0x28),
3377*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0xBD, 0x7E, 0xED, 0xAA, 0x14, 0xDD, 0x61),
3378*62c56f98SSadaf Ebrahimi };
3379*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_11_X[] = {
3380*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC3, 0xDC, 0x20, 0x01, 0x72, 0x11, 0x48, 0x55),
3381*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xC4, 0x7B, 0xF8, 0x62, 0x3D, 0xF0, 0x9F),
3382*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xC2, 0x3D, 0x2E, 0x52, 0xA3, 0x4A, 0x89),
3383*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xE2, 0x53, 0x46, 0x5E, 0x21, 0xF8, 0xCE),
3384*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xC7, 0x8F, 0xA9, 0x26, 0x42, 0x32, 0x3A),
3385*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xA6, 0xA0, 0x8D, 0x4B, 0x9A, 0x19, 0x03),
3386*62c56f98SSadaf Ebrahimi };
3387*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_11_Y[] = {
3388*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xAB, 0x6D, 0x1E, 0xFB, 0xEE, 0x60, 0x0C),
3389*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x56, 0x3C, 0xC5, 0x5D, 0x10, 0x79, 0x1C),
3390*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0xBC, 0x41, 0x9F, 0x71, 0xEF, 0x02, 0xF9),
3391*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x36, 0xC4, 0xD0, 0x88, 0x9B, 0x32, 0xFC),
3392*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xD4, 0x5D, 0x17, 0x39, 0xE6, 0x22, 0x2C),
3393*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7B, 0x26, 0x01, 0xCE, 0xBE, 0x4A, 0x9C, 0x27),
3394*62c56f98SSadaf Ebrahimi };
3395*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_12_X[] = {
3396*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x6D, 0x11, 0xCA, 0x6C, 0x5A, 0x93, 0x0C),
3397*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x96, 0x26, 0xAF, 0x2F, 0xE4, 0x30, 0x98),
3398*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xC1, 0x4C, 0xC6, 0x30, 0x1F, 0x5C, 0x04),
3399*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x59, 0xB3, 0xE8, 0xFC, 0x35, 0xEB, 0x63, 0x6C),
3400*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x1D, 0xCA, 0xFC, 0x50, 0x36, 0x4B, 0x96),
3401*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x0E, 0x23, 0x5B, 0xAF, 0xEB, 0x2D, 0x31),
3402*62c56f98SSadaf Ebrahimi };
3403*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_12_Y[] = {
3404*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0x88, 0xB6, 0xD7, 0x74, 0x4A, 0x23, 0xB6),
3405*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x66, 0xE2, 0xBB, 0x29, 0xA6, 0x4F, 0x55),
3406*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0x6F, 0x7E, 0x68, 0x6E, 0xA0, 0x14, 0x94),
3407*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x73, 0xD4, 0xE8, 0xAB, 0x5B, 0xF6, 0x0D),
3408*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xE0, 0x3C, 0x24, 0x00, 0x95, 0xE9, 0xAD),
3409*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x0D, 0x4F, 0x81, 0xD0, 0xF2, 0x3F, 0x00),
3410*62c56f98SSadaf Ebrahimi };
3411*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_13_X[] = {
3412*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0x1D, 0xCD, 0x78, 0x39, 0xC4, 0x6B, 0xD9),
3413*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x45, 0xC7, 0xB8, 0x2F, 0xAA, 0x5D, 0xE3),
3414*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0x8C, 0x6E, 0xA3, 0x24, 0xB2, 0xDB, 0x4B),
3415*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x2D, 0xD9, 0xF1, 0xC7, 0x9B, 0x8A, 0xAF),
3416*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0xE1, 0x2C, 0xB9, 0x40, 0x37, 0x91, 0x75),
3417*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x2C, 0xB5, 0x23, 0x03, 0x2B, 0xAF, 0x2F),
3418*62c56f98SSadaf Ebrahimi };
3419*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_13_Y[] = {
3420*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0x9D, 0x5A, 0x20, 0x10, 0xA9, 0x84, 0xDA),
3421*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x30, 0x89, 0x20, 0x13, 0xE9, 0xB2, 0xCA),
3422*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x6E, 0x52, 0xEB, 0x03, 0x18, 0x1F, 0xA6),
3423*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x9E, 0x1C, 0x35, 0x87, 0x92, 0x69, 0xC7),
3424*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0xC9, 0x88, 0xAF, 0xC6, 0x6C, 0x83, 0x72),
3425*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0xD5, 0x7A, 0x54, 0x34, 0x99, 0xB6, 0x6F),
3426*62c56f98SSadaf Ebrahimi };
3427*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_14_X[] = {
3428*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0xAD, 0x45, 0x9B, 0x4B, 0x41, 0x4D, 0x50),
3429*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0x5D, 0xAB, 0x7F, 0x35, 0x34, 0xE9, 0x29),
3430*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0xBE, 0x78, 0x34, 0x44, 0xF3, 0x4A, 0x87),
3431*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xDE, 0xE3, 0xC4, 0xEE, 0x0B, 0xF9, 0xEB),
3432*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x86, 0x16, 0x48, 0x32, 0xB8, 0x74, 0x41),
3433*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0xEE, 0x7C, 0xBA, 0xBD, 0x81, 0xE3, 0x55),
3434*62c56f98SSadaf Ebrahimi };
3435*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_14_Y[] = {
3436*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x6A, 0xFA, 0x84, 0xDA, 0xB8, 0xD5, 0x14),
3437*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0x9F, 0x8A, 0xD5, 0x1B, 0x2E, 0x1A, 0x0B),
3438*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x0C, 0x61, 0xE2, 0xFF, 0x5B, 0xE6, 0xD5),
3439*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0x62, 0xC1, 0x87, 0x53, 0x1B, 0x92, 0xA3),
3440*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x90, 0x00, 0xD1, 0x6A, 0x0C, 0x0E, 0x28),
3441*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x2E, 0xB5, 0x3B, 0x44, 0xB5, 0xA0, 0x78),
3442*62c56f98SSadaf Ebrahimi };
3443*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_15_X[] = {
3444*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x5D, 0x02, 0x58, 0xB5, 0xBE, 0x45, 0x14),
3445*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xEF, 0x8E, 0x90, 0x4D, 0x2A, 0x32, 0xAC),
3446*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0x99, 0x75, 0x5C, 0x0A, 0x33, 0x8F, 0x36),
3447*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x6C, 0x95, 0xD4, 0x1F, 0xF3, 0xEB, 0xDA),
3448*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0xE4, 0x4C, 0x91, 0x20, 0xF3, 0x25, 0xEB),
3449*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x95, 0xEB, 0x29, 0x6F, 0x20, 0x34, 0x81),
3450*62c56f98SSadaf Ebrahimi };
3451*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_15_Y[] = {
3452*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x15, 0xE5, 0x13, 0x7E, 0x64, 0x8B, 0xAD),
3453*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xBC, 0x0D, 0x18, 0x7E, 0x37, 0x9E, 0xFA),
3454*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x82, 0x20, 0xF7, 0x2D, 0x7A, 0x77, 0x52),
3455*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x29, 0xA2, 0xDB, 0x7A, 0xE6, 0x6F, 0xA5),
3456*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xC6, 0x50, 0x5C, 0xBC, 0xE6, 0x4F, 0xBD),
3457*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x9F, 0xD5, 0xE8, 0xC5, 0x3D, 0xB7, 0x30),
3458*62c56f98SSadaf Ebrahimi };
3459*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_16_X[] = {
3460*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x03, 0x55, 0x10, 0xDB, 0xA6, 0x8B, 0x22),
3461*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x17, 0xAE, 0x78, 0xC9, 0x1D, 0x43, 0xCA),
3462*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x35, 0x49, 0xD4, 0x47, 0x84, 0x8D, 0x20),
3463*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x95, 0x2F, 0xEA, 0xBC, 0xB4, 0x18, 0xB3),
3464*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x48, 0xAE, 0x89, 0xF5, 0x65, 0x3D, 0x89),
3465*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xF2, 0x2B, 0x20, 0xD1, 0x75, 0x50, 0x63),
3466*62c56f98SSadaf Ebrahimi };
3467*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_16_Y[] = {
3468*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0xE6, 0x5C, 0x2C, 0xE0, 0x7D, 0xDF, 0x2D),
3469*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x07, 0x3E, 0xCE, 0x9F, 0x18, 0xB6, 0x05),
3470*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0xF8, 0xF0, 0xD5, 0xFA, 0x42, 0x1D, 0x6D),
3471*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x6C, 0x1D, 0x03, 0xC9, 0x0E, 0x2B, 0x2F),
3472*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x18, 0x52, 0xA5, 0xB4, 0x63, 0xE1, 0x06),
3473*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x0A, 0xD9, 0xC4, 0xFD, 0x16, 0x60, 0x54),
3474*62c56f98SSadaf Ebrahimi };
3475*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_17_X[] = {
3476*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x7D, 0xDE, 0xDF, 0x4B, 0x4A, 0xB0, 0xCB),
3477*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x4E, 0x8C, 0x94, 0xC1, 0xE2, 0x85, 0xDF),
3478*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4F, 0xF0, 0xEA, 0xB5, 0x9B, 0x70, 0xEF, 0x10),
3479*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x56, 0xC2, 0x39, 0x5D, 0xF3, 0x2C, 0xD9, 0x2C),
3480*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0x1C, 0x2E, 0xCC, 0x2F, 0x54, 0x87, 0x80),
3481*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB0, 0x72, 0xC7, 0xB5, 0x50, 0xA3, 0x84, 0x77),
3482*62c56f98SSadaf Ebrahimi };
3483*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_17_Y[] = {
3484*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xD1, 0xAF, 0xA9, 0xB4, 0x8B, 0x5D, 0xFA),
3485*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xF6, 0x52, 0x8A, 0xC3, 0x56, 0xA5, 0x5E),
3486*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x52, 0xFF, 0xEA, 0x05, 0x42, 0x77, 0x83),
3487*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x08, 0x90, 0x72, 0x86, 0xC4, 0xC3, 0xB8),
3488*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x15, 0xF8, 0xF1, 0x16, 0x67, 0xC6, 0xD5),
3489*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x87, 0xAC, 0x8F, 0x71, 0xEC, 0x83, 0x81),
3490*62c56f98SSadaf Ebrahimi };
3491*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_18_X[] = {
3492*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0xE1, 0xE6, 0x2D, 0x0E, 0x11, 0xA1, 0x62),
3493*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0xE2, 0xA8, 0x32, 0xE6, 0xE3, 0x83, 0xD1),
3494*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x56, 0xE5, 0xCD, 0xB7, 0x2B, 0x67, 0x6F),
3495*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xED, 0xC9, 0x65, 0x6D, 0x87, 0xE1, 0x8E),
3496*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x8E, 0xFD, 0x9A, 0x53, 0x0E, 0xFA, 0xA3),
3497*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0x4C, 0x4A, 0xE2, 0x23, 0x84, 0xFA, 0x01),
3498*62c56f98SSadaf Ebrahimi };
3499*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_18_Y[] = {
3500*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xFE, 0x49, 0x81, 0xD1, 0x3E, 0xF4, 0x7C),
3501*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x72, 0xE0, 0xEF, 0x0D, 0xB8, 0x3E, 0x6F),
3502*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x00, 0x0F, 0x5F, 0xCE, 0x60, 0x72, 0x2C),
3503*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xCC, 0xD8, 0x03, 0x07, 0x6E, 0x5A, 0xCD),
3504*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x3A, 0x35, 0x50, 0x4E, 0x1F, 0xCA, 0x5F),
3505*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0xEA, 0x88, 0x55, 0xBD, 0x6E, 0x05, 0x7F),
3506*62c56f98SSadaf Ebrahimi };
3507*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_19_X[] = {
3508*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x6D, 0xF1, 0x97, 0xA6, 0x69, 0x39, 0x24),
3509*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0x41, 0x99, 0xFF, 0x3B, 0xA1, 0x26, 0xEC),
3510*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x2F, 0x95, 0x80, 0x12, 0x4A, 0x1B, 0xCB),
3511*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xBF, 0x51, 0xAA, 0xAE, 0x2D, 0xDA, 0xCF),
3512*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x1C, 0xB3, 0x52, 0x36, 0x49, 0xD4, 0x86),
3513*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xC1, 0x1F, 0x3A, 0xD3, 0x3E, 0x5C, 0x1A),
3514*62c56f98SSadaf Ebrahimi };
3515*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_19_Y[] = {
3516*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x51, 0xF7, 0x2B, 0xC8, 0xA9, 0xA7, 0x15),
3517*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0x4E, 0x7F, 0x98, 0x41, 0x66, 0xB0, 0x03),
3518*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x1D, 0xC0, 0x42, 0xCD, 0xF8, 0xC3, 0x2B),
3519*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x41, 0x91, 0x7D, 0xCC, 0x8B, 0xCC, 0x41),
3520*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xAE, 0x76, 0xED, 0x56, 0x18, 0xC5, 0xAB),
3521*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x6A, 0x06, 0xA3, 0x7F, 0x65, 0x10, 0x1F),
3522*62c56f98SSadaf Ebrahimi };
3523*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_20_X[] = {
3524*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xEC, 0x3C, 0x05, 0x05, 0xCA, 0xF6, 0xED),
3525*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x48, 0xCD, 0x02, 0x51, 0x12, 0x16, 0x3C, 0x63),
3526*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0xEB, 0xB3, 0x43, 0x7B, 0xDD, 0xB2, 0x7C),
3527*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x59, 0x90, 0x41, 0xDB, 0xE4, 0xF5, 0x91),
3528*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x0E, 0x18, 0x2A, 0x5A, 0x83, 0x7C, 0x2F),
3529*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x37, 0xA1, 0x0D, 0xF1, 0x2F, 0x63, 0x79),
3530*62c56f98SSadaf Ebrahimi };
3531*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_20_Y[] = {
3532*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xC0, 0xFA, 0x6F, 0x1F, 0x67, 0xCF, 0xEC),
3533*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x34, 0x45, 0xBB, 0xF4, 0xF9, 0x9B, 0x89),
3534*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0x69, 0xFE, 0x67, 0x1D, 0x64, 0x8F, 0xB9),
3535*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x39, 0xBF, 0xD8, 0xB3, 0xC7, 0xAD, 0x8A),
3536*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x93, 0xFF, 0xF3, 0x28, 0xFA, 0x39, 0xF6),
3537*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xF9, 0xC3, 0x85, 0x26, 0x7A, 0x88, 0x89),
3538*62c56f98SSadaf Ebrahimi };
3539*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_21_X[] = {
3540*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xD5, 0x79, 0xD8, 0x11, 0xDE, 0xEB, 0x4E),
3541*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x46, 0xA4, 0x6A, 0xDA, 0x74, 0x34, 0xA8),
3542*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0xBD, 0xD3, 0xF5, 0x14, 0xEE, 0xFE, 0xAE),
3543*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x4C, 0xA3, 0x71, 0x43, 0x65, 0xF8, 0x94),
3544*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x6C, 0x35, 0xFA, 0x90, 0x25, 0xD8, 0xE2),
3545*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x34, 0x84, 0x96, 0xA1, 0x43, 0x03, 0x4D),
3546*62c56f98SSadaf Ebrahimi };
3547*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_21_Y[] = {
3548*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x3B, 0x3B, 0x2F, 0xCA, 0x59, 0xF2, 0x42),
3549*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCD, 0x48, 0x24, 0x74, 0xD8, 0x72, 0x90, 0xA3),
3550*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x42, 0x74, 0x8C, 0x6F, 0x52, 0x19, 0x3D),
3551*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x40, 0x9E, 0x41, 0x63, 0x68, 0x78, 0x4C, 0x2F),
3552*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0x94, 0xB6, 0x6B, 0x38, 0x52, 0xA8, 0x9F),
3553*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x30, 0x25, 0x93, 0xA1, 0x6F, 0x6E, 0x68),
3554*62c56f98SSadaf Ebrahimi };
3555*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_22_X[] = {
3556*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x2F, 0x4B, 0x64, 0x79, 0x50, 0xFF, 0x01),
3557*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0x36, 0xED, 0x57, 0x39, 0x3B, 0xE7, 0xF3),
3558*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x85, 0xEA, 0x35, 0xD6, 0xC0, 0xA0, 0x52),
3559*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x89, 0x3A, 0xCC, 0x22, 0x1C, 0x46, 0x02),
3560*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x7A, 0xB0, 0xA1, 0x1B, 0x69, 0x62, 0x55),
3561*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xB8, 0x8A, 0x6C, 0x18, 0x85, 0x0D, 0x88),
3562*62c56f98SSadaf Ebrahimi };
3563*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_22_Y[] = {
3564*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xB6, 0x50, 0xE9, 0x4E, 0x7F, 0xE8, 0x07),
3565*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x5B, 0x5C, 0xD1, 0x4B, 0x11, 0x9A, 0xD8),
3566*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x25, 0x56, 0x74, 0x51, 0x9C, 0xEC, 0x9C),
3567*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x7F, 0xB6, 0x8A, 0xCB, 0x3A, 0x10, 0x6A),
3568*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x60, 0x33, 0x07, 0x01, 0xE9, 0x49, 0x59, 0xE6),
3569*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xA5, 0x2E, 0xF2, 0xBA, 0x32, 0x63, 0x44),
3570*62c56f98SSadaf Ebrahimi };
3571*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_23_X[] = {
3572*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x06, 0x0B, 0xA5, 0x44, 0x27, 0x7F, 0x22),
3573*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x74, 0xAC, 0x0F, 0xCC, 0x4F, 0x13, 0x61),
3574*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0xB1, 0xBF, 0x97, 0x49, 0xA5, 0x1C, 0x1D),
3575*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x64, 0x68, 0x7B, 0x0F, 0xCC, 0x77, 0xF8),
3576*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x39, 0xF9, 0x4E, 0x84, 0x9C, 0xF6, 0x96),
3577*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xCF, 0x6D, 0xE2, 0xA1, 0x2D, 0xF9, 0x2B),
3578*62c56f98SSadaf Ebrahimi };
3579*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_23_Y[] = {
3580*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0xC4, 0x90, 0x57, 0x31, 0x01, 0x05, 0x5E),
3581*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x1E, 0xBB, 0xBF, 0x98, 0xA4, 0x7C, 0xE3),
3582*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0xE3, 0xA0, 0xB2, 0xCD, 0x39, 0x9A, 0x3F),
3583*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x34, 0x60, 0x7A, 0x89, 0x98, 0xB5, 0x52),
3584*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0x20, 0x3D, 0x3A, 0x04, 0x8F, 0x5A, 0xAC),
3585*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x26, 0xB6, 0x49, 0x09, 0x9C, 0x0F, 0x59),
3586*62c56f98SSadaf Ebrahimi };
3587*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_24_X[] = {
3588*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x66, 0xD2, 0x38, 0x2A, 0x62, 0x81, 0xCA),
3589*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0xC8, 0x20, 0x5E, 0x28, 0xA3, 0x81, 0xA7),
3590*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x31, 0xA4, 0xF1, 0xEA, 0x7D, 0x87, 0x45),
3591*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8F, 0x2C, 0x99, 0x09, 0x6F, 0x63, 0xEB, 0x2F),
3592*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x73, 0x76, 0xDA, 0x1A, 0x06, 0xBE, 0xDE, 0xA2),
3593*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x09, 0x2E, 0x75, 0x39, 0x30, 0x2D, 0x42),
3594*62c56f98SSadaf Ebrahimi };
3595*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_24_Y[] = {
3596*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x9B, 0xC1, 0x5A, 0x17, 0xC3, 0x8C, 0x31),
3597*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x58, 0x8D, 0x94, 0x4D, 0x3D, 0xAB, 0x60, 0xD4),
3598*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xFD, 0x1E, 0x0F, 0x43, 0xAE, 0x9D, 0x62),
3599*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0xF2, 0xF3, 0x20, 0x1B, 0xAA, 0xB7, 0x41),
3600*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0x5B, 0xA4, 0xF4, 0x90, 0x3B, 0xE3, 0x71),
3601*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x78, 0x72, 0xBD, 0x65, 0x09, 0x0B, 0x01),
3602*62c56f98SSadaf Ebrahimi };
3603*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_25_X[] = {
3604*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x37, 0x2A, 0x6C, 0x16, 0x4F, 0x64, 0x59),
3605*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0xCE, 0xA3, 0x90, 0xB4, 0x9A, 0xBC, 0xF7),
3606*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x38, 0x55, 0x63, 0x1D, 0x3A, 0x6E, 0x18),
3607*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xB4, 0xAA, 0x99, 0x22, 0x45, 0x89, 0x2C),
3608*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0x7C, 0x8C, 0xA6, 0x3D, 0xA7, 0x3E, 0xE8),
3609*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x06, 0x42, 0xDC, 0xA6, 0xE3, 0xC6, 0x12),
3610*62c56f98SSadaf Ebrahimi };
3611*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_25_Y[] = {
3612*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x8C, 0x3D, 0x5D, 0x47, 0x31, 0x7C, 0xEB),
3613*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x85, 0xEE, 0x46, 0x7E, 0x13, 0x04, 0x41),
3614*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x3C, 0x8B, 0x43, 0x2E, 0x74, 0xF5, 0xF6),
3615*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x88, 0x8E, 0x07, 0x29, 0x08, 0x03, 0x26),
3616*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0x9B, 0x89, 0xEB, 0x08, 0xE8, 0x43, 0xB5),
3617*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x07, 0x67, 0xFD, 0xD9, 0x73, 0x6F, 0x18),
3618*62c56f98SSadaf Ebrahimi };
3619*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_26_X[] = {
3620*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0xEB, 0x21, 0x8D, 0x98, 0x43, 0x74, 0x98),
3621*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x88, 0xCC, 0x14, 0xD8, 0x08, 0xBB, 0xA6, 0xE3),
3622*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x98, 0xF2, 0x6A, 0x18, 0xC3, 0xDD, 0x9E),
3623*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x38, 0x91, 0xA0, 0x03, 0xF2, 0x04, 0x62),
3624*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0xAF, 0xE8, 0xFD, 0xFB, 0x13, 0x70, 0x74),
3625*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x93, 0x87, 0x98, 0x4A, 0xE0, 0x00, 0x12),
3626*62c56f98SSadaf Ebrahimi };
3627*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_26_Y[] = {
3628*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x2E, 0x69, 0x9C, 0xA2, 0x2D, 0x03, 0x3F),
3629*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xFE, 0xF3, 0xB9, 0xC1, 0x85, 0x2A, 0xEE),
3630*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xFD, 0x86, 0xB1, 0xCD, 0xBF, 0x41, 0xB7),
3631*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xD8, 0x9A, 0x21, 0xF3, 0xFE, 0xCB, 0xF1),
3632*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x78, 0x04, 0x60, 0xB7, 0xA9, 0xA2, 0x84),
3633*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x1E, 0x66, 0x2A, 0x54, 0x51, 0xBD, 0x8B),
3634*62c56f98SSadaf Ebrahimi };
3635*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_27_X[] = {
3636*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x16, 0x36, 0xEF, 0x61, 0x2D, 0xEE, 0x3B),
3637*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x5F, 0x88, 0xA0, 0x13, 0x12, 0xF7, 0x23),
3638*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA9, 0xC6, 0xAD, 0x4A, 0x4A, 0x07, 0x01, 0x5B),
3639*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB8, 0x74, 0xB1, 0x4F, 0xEB, 0xBD, 0xD5, 0x6B),
3640*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xF9, 0x71, 0xA2, 0x06, 0x4F, 0xD7, 0xBC),
3641*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x8B, 0x4D, 0x48, 0xE0, 0x98, 0xFB, 0x6A),
3642*62c56f98SSadaf Ebrahimi };
3643*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_27_Y[] = {
3644*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0xBA, 0x10, 0xA3, 0x0D, 0x52, 0xAC, 0x3A),
3645*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xD0, 0xE0, 0x36, 0xE6, 0x07, 0x3A, 0x30),
3646*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x80, 0xF0, 0xAA, 0x49, 0x22, 0x4B, 0xDD),
3647*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xC7, 0xAB, 0x1C, 0x89, 0xCD, 0x24, 0x40),
3648*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x82, 0x2A, 0xFC, 0xB3, 0x6D, 0x45, 0x96, 0x49),
3649*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0xE4, 0xDB, 0x52, 0x3F, 0xC4, 0xB4, 0x19),
3650*62c56f98SSadaf Ebrahimi };
3651*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_28_X[] = {
3652*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5B, 0xCC, 0xC8, 0x7F, 0xBB, 0x6B, 0x87, 0x47),
3653*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x21, 0x3C, 0x69, 0x7D, 0x38, 0x57, 0x50),
3654*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x4C, 0x18, 0x3C, 0x53, 0xA5, 0x48, 0x6D),
3655*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xC3, 0x64, 0x45, 0xDB, 0xC4, 0x6D, 0x15),
3656*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xCC, 0xD1, 0xBB, 0x17, 0xB8, 0x34, 0x2D),
3657*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x69, 0x71, 0xFA, 0xA0, 0x28, 0x4A, 0x3D),
3658*62c56f98SSadaf Ebrahimi };
3659*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_28_Y[] = {
3660*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xE8, 0x9E, 0x39, 0xEA, 0x8D, 0x38, 0xDB),
3661*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x9C, 0xBB, 0xCD, 0x80, 0x1A, 0xEE, 0xB7),
3662*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xA0, 0x45, 0xBF, 0xD9, 0x22, 0x11, 0x32),
3663*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x7C, 0x5C, 0xD9, 0xC0, 0x9F, 0x69, 0xF5),
3664*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x8A, 0xA6, 0x79, 0x4E, 0x35, 0xB9, 0xD5),
3665*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCC, 0x8B, 0x9A, 0x3E, 0xA1, 0xB8, 0x28, 0x10),
3666*62c56f98SSadaf Ebrahimi };
3667*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_29_X[] = {
3668*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x2F, 0xEF, 0xBB, 0xA9, 0x72, 0x7F, 0xEA),
3669*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x34, 0xB7, 0x12, 0xB9, 0xE7, 0xC3, 0x2A),
3670*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x1D, 0xD9, 0x42, 0x77, 0x0C, 0x71, 0x6E),
3671*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x01, 0x59, 0xA7, 0x56, 0x03, 0x91, 0x8D),
3672*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x91, 0x99, 0x33, 0x30, 0x3E, 0xEF, 0x13),
3673*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0xC9, 0x5A, 0x9A, 0x54, 0x66, 0xF1, 0x70),
3674*62c56f98SSadaf Ebrahimi };
3675*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_29_Y[] = {
3676*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0x2C, 0xB7, 0x6E, 0x71, 0x7D, 0x35, 0x30),
3677*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x0D, 0xEF, 0xD1, 0x2D, 0x99, 0x63, 0x2F),
3678*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x31, 0xAF, 0x2D, 0xC9, 0xC6, 0xC2, 0xAE),
3679*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0xC0, 0xDF, 0x80, 0x54, 0xC4, 0xAC, 0xF3),
3680*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x6B, 0xA0, 0x84, 0x96, 0xF7, 0x31, 0xC8),
3681*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0xE2, 0x7C, 0x7A, 0x41, 0x45, 0x75, 0x6A),
3682*62c56f98SSadaf Ebrahimi };
3683*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_30_X[] = {
3684*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xEE, 0x58, 0x31, 0xE8, 0x68, 0xD6, 0x76),
3685*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x2E, 0x48, 0xB7, 0x09, 0x9F, 0xD4, 0xCA),
3686*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xA9, 0x5C, 0xE7, 0x64, 0x43, 0x5D, 0xC9),
3687*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9E, 0x58, 0x9F, 0x50, 0xAB, 0x68, 0xFF, 0x6D),
3688*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0x88, 0x2D, 0xBA, 0x12, 0xBF, 0x8D, 0x7D),
3689*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xDF, 0x6F, 0xB3, 0x75, 0xA4, 0x55, 0x73),
3690*62c56f98SSadaf Ebrahimi };
3691*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_30_Y[] = {
3692*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x17, 0x92, 0x39, 0xB7, 0x13, 0x37, 0x6F),
3693*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x43, 0x71, 0xA7, 0xCA, 0x17, 0x1B, 0x32),
3694*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE7, 0xB9, 0xB0, 0x78, 0xEF, 0xA0, 0xDA, 0x83),
3695*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x84, 0xF2, 0x0F, 0x85, 0xA2, 0xB6, 0x1F),
3696*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x72, 0x65, 0x2E, 0x6E, 0x45, 0xB9, 0x4C, 0x3C),
3697*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x6A, 0x8C, 0x2B, 0x77, 0x96, 0x36, 0x22),
3698*62c56f98SSadaf Ebrahimi };
3699*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_31_X[] = {
3700*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x7A, 0x13, 0x4A, 0x97, 0x63, 0x02, 0x10),
3701*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x1E, 0x06, 0x03, 0x8F, 0xB9, 0xEE, 0x64),
3702*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0xEE, 0x8B, 0x89, 0xA9, 0x70, 0xDB, 0xCE),
3703*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x7B, 0x81, 0xC9, 0x70, 0x8D, 0x62, 0x32),
3704*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0xDA, 0x46, 0xF8, 0xF9, 0x3A, 0xBE, 0x55),
3705*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0x9C, 0x7A, 0x97, 0x62, 0xEB, 0xFA, 0x0F),
3706*62c56f98SSadaf Ebrahimi };
3707*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP384r1_T_31_Y[] = {
3708*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0x03, 0x3D, 0x3C, 0x46, 0x27, 0x9E, 0x65),
3709*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x08, 0x1C, 0xD5, 0x25, 0xAF, 0xE9, 0x40),
3710*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x69, 0xDC, 0x59, 0xF4, 0x8A, 0x7C, 0x1F),
3711*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x9A, 0x7A, 0x99, 0x21, 0x0C, 0x4E, 0xE3),
3712*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xCE, 0x85, 0x5F, 0xAC, 0xAA, 0x82, 0x10),
3713*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x83, 0x57, 0x69, 0x90, 0x76, 0xF3, 0x53, 0x3F),
3714*62c56f98SSadaf Ebrahimi };
3715*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point brainpoolP384r1_T[32] = {
3716*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(brainpoolP384r1_T_0_X, brainpoolP384r1_T_0_Y),
3717*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_1_X, brainpoolP384r1_T_1_Y),
3718*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_2_X, brainpoolP384r1_T_2_Y),
3719*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_3_X, brainpoolP384r1_T_3_Y),
3720*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_4_X, brainpoolP384r1_T_4_Y),
3721*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_5_X, brainpoolP384r1_T_5_Y),
3722*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_6_X, brainpoolP384r1_T_6_Y),
3723*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_7_X, brainpoolP384r1_T_7_Y),
3724*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_8_X, brainpoolP384r1_T_8_Y),
3725*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_9_X, brainpoolP384r1_T_9_Y),
3726*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_10_X, brainpoolP384r1_T_10_Y),
3727*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_11_X, brainpoolP384r1_T_11_Y),
3728*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_12_X, brainpoolP384r1_T_12_Y),
3729*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_13_X, brainpoolP384r1_T_13_Y),
3730*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_14_X, brainpoolP384r1_T_14_Y),
3731*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_15_X, brainpoolP384r1_T_15_Y),
3732*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_16_X, brainpoolP384r1_T_16_Y),
3733*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_17_X, brainpoolP384r1_T_17_Y),
3734*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_18_X, brainpoolP384r1_T_18_Y),
3735*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_19_X, brainpoolP384r1_T_19_Y),
3736*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_20_X, brainpoolP384r1_T_20_Y),
3737*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_21_X, brainpoolP384r1_T_21_Y),
3738*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_22_X, brainpoolP384r1_T_22_Y),
3739*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_23_X, brainpoolP384r1_T_23_Y),
3740*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_24_X, brainpoolP384r1_T_24_Y),
3741*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_25_X, brainpoolP384r1_T_25_Y),
3742*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_26_X, brainpoolP384r1_T_26_Y),
3743*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_27_X, brainpoolP384r1_T_27_Y),
3744*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_28_X, brainpoolP384r1_T_28_Y),
3745*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_29_X, brainpoolP384r1_T_29_Y),
3746*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_30_X, brainpoolP384r1_T_30_Y),
3747*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP384r1_T_31_X, brainpoolP384r1_T_31_Y),
3748*62c56f98SSadaf Ebrahimi };
3749*62c56f98SSadaf Ebrahimi #else
3750*62c56f98SSadaf Ebrahimi #define brainpoolP384r1_T NULL
3751*62c56f98SSadaf Ebrahimi #endif
3752*62c56f98SSadaf Ebrahimi 
3753*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
3754*62c56f98SSadaf Ebrahimi 
3755*62c56f98SSadaf Ebrahimi /*
3756*62c56f98SSadaf Ebrahimi  * Domain parameters for brainpoolP512r1 (RFC 5639 3.7)
3757*62c56f98SSadaf Ebrahimi  */
3758*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
3759*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_p[] = {
3760*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0x48, 0x3A, 0x58, 0x56, 0x60, 0xAA, 0x28),
3761*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x85, 0xC6, 0x82, 0x2D, 0x2F, 0xFF, 0x81, 0x28),
3762*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x80, 0xA3, 0xE6, 0x2A, 0xA1, 0xCD, 0xAE),
3763*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x68, 0xC6, 0x9B, 0x00, 0x9B, 0x4D, 0x7D),
3764*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6),
3765*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB),
3766*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F),
3767*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA),
3768*62c56f98SSadaf Ebrahimi };
3769*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_a[] = {
3770*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x94, 0xFC, 0x77, 0x4D, 0xAC, 0xC1, 0xE7),
3771*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xC7, 0xF2, 0x2B, 0xA7, 0x17, 0x11, 0x7F),
3772*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0xC8, 0x9A, 0x8B, 0xC9, 0xF1, 0x2E, 0x0A),
3773*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x3A, 0x25, 0xA8, 0x5A, 0x5D, 0xED, 0x2D),
3774*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0x63, 0x98, 0xEA, 0xCA, 0x41, 0x34, 0xA8),
3775*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x16, 0xF9, 0x3D, 0x8D, 0xDD, 0xCB, 0x94),
3776*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x4C, 0x23, 0xAC, 0x45, 0x71, 0x32, 0xE2),
3777*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x3B, 0x60, 0x8B, 0x31, 0xA3, 0x30, 0x78),
3778*62c56f98SSadaf Ebrahimi };
3779*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_b[] = {
3780*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0xF7, 0x16, 0x80, 0x63, 0xBD, 0x09, 0x28),
3781*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0xE5, 0xBA, 0x5E, 0xB7, 0x50, 0x40, 0x98),
3782*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x3E, 0x08, 0xDC, 0xCA, 0x94, 0xFC, 0x77),
3783*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0xAC, 0xC1, 0xE7, 0xB9, 0xC7, 0xF2, 0x2B),
3784*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x17, 0x11, 0x7F, 0xB5, 0xC8, 0x9A, 0x8B),
3785*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0xF1, 0x2E, 0x0A, 0xA1, 0x3A, 0x25, 0xA8),
3786*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x5D, 0xED, 0x2D, 0xBC, 0x63, 0x98, 0xEA),
3787*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0x41, 0x34, 0xA8, 0x10, 0x16, 0xF9, 0x3D),
3788*62c56f98SSadaf Ebrahimi };
3789*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_gx[] = {
3790*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xF8, 0xB9, 0xBC, 0x09, 0x22, 0x35, 0x8B),
3791*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x5E, 0x6A, 0x40, 0x47, 0x50, 0x6D, 0x7C),
3792*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x7D, 0xB9, 0x93, 0x7B, 0x68, 0xD1, 0x50),
3793*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xD4, 0xD0, 0xE2, 0x78, 0x1F, 0x3B, 0xFF),
3794*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x09, 0xD0, 0xF4, 0xEE, 0x62, 0x3B, 0xB4),
3795*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x16, 0xD9, 0xB5, 0x70, 0x9F, 0xED, 0x85),
3796*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x6A, 0x4C, 0x9C, 0x2E, 0x32, 0x21, 0x5A),
3797*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0xD9, 0x2E, 0xD8, 0xBD, 0xE4, 0xAE, 0x81),
3798*62c56f98SSadaf Ebrahimi };
3799*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_gy[] = {
3800*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x08, 0xD8, 0x3A, 0x0F, 0x1E, 0xCD, 0x78),
3801*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x54, 0xF0, 0xA8, 0x2F, 0x2B, 0xCA, 0xD1),
3802*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x63, 0x27, 0x8A, 0xD8, 0x4B, 0xCA, 0x5B),
3803*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x48, 0x5F, 0x4A, 0x49, 0xDE, 0xDC, 0xB2),
3804*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x1F, 0x88, 0x5B, 0xC5, 0x00, 0xA0),
3805*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x7B, 0xA5, 0x24, 0x00, 0xF7, 0x09, 0xF2),
3806*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x22, 0x78, 0xCF, 0xA9, 0xBF, 0xEA, 0xC0),
3807*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x32, 0x63, 0x56, 0x5D, 0x38, 0xDE, 0x7D),
3808*62c56f98SSadaf Ebrahimi };
3809*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_n[] = {
3810*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x69, 0x00, 0xA9, 0x9C, 0x82, 0x96, 0x87, 0xB5),
3811*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0xDA, 0x5D, 0x08, 0x81, 0xD3, 0xB1, 0x1D),
3812*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x47, 0x10, 0xAC, 0x7F, 0x19, 0x61, 0x86, 0x41),
3813*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x26, 0xA9, 0x4C, 0x41, 0x5C, 0x3E, 0x55),
3814*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6),
3815*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB),
3816*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F),
3817*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA),
3818*62c56f98SSadaf Ebrahimi };
3819*62c56f98SSadaf Ebrahimi 
3820*62c56f98SSadaf Ebrahimi #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1
3821*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_0_X[] = {
3822*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0xF8, 0xB9, 0xBC, 0x09, 0x22, 0x35, 0x8B),
3823*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x5E, 0x6A, 0x40, 0x47, 0x50, 0x6D, 0x7C),
3824*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0x7D, 0xB9, 0x93, 0x7B, 0x68, 0xD1, 0x50),
3825*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xD4, 0xD0, 0xE2, 0x78, 0x1F, 0x3B, 0xFF),
3826*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x09, 0xD0, 0xF4, 0xEE, 0x62, 0x3B, 0xB4),
3827*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC1, 0x16, 0xD9, 0xB5, 0x70, 0x9F, 0xED, 0x85),
3828*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x6A, 0x4C, 0x9C, 0x2E, 0x32, 0x21, 0x5A),
3829*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0xD9, 0x2E, 0xD8, 0xBD, 0xE4, 0xAE, 0x81),
3830*62c56f98SSadaf Ebrahimi };
3831*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_0_Y[] = {
3832*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x08, 0xD8, 0x3A, 0x0F, 0x1E, 0xCD, 0x78),
3833*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x06, 0x54, 0xF0, 0xA8, 0x2F, 0x2B, 0xCA, 0xD1),
3834*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0x63, 0x27, 0x8A, 0xD8, 0x4B, 0xCA, 0x5B),
3835*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x48, 0x5F, 0x4A, 0x49, 0xDE, 0xDC, 0xB2),
3836*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0x81, 0x1F, 0x88, 0x5B, 0xC5, 0x00, 0xA0),
3837*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x7B, 0xA5, 0x24, 0x00, 0xF7, 0x09, 0xF2),
3838*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x22, 0x78, 0xCF, 0xA9, 0xBF, 0xEA, 0xC0),
3839*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0x32, 0x63, 0x56, 0x5D, 0x38, 0xDE, 0x7D),
3840*62c56f98SSadaf Ebrahimi };
3841*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_1_X[] = {
3842*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xE9, 0x6B, 0x8C, 0x6F, 0x9D, 0x88, 0x43),
3843*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x4F, 0x86, 0x96, 0xA7, 0x56, 0xD1, 0x37),
3844*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xAB, 0xFA, 0xEE, 0xA7, 0xF5, 0x0E, 0xA6),
3845*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x40, 0xEF, 0x9E, 0x6D, 0xD6, 0x32, 0x33),
3846*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xED, 0x56, 0x14, 0x57, 0x1A, 0x8D, 0x69),
3847*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xED, 0x4D, 0x3A, 0xFA, 0x71, 0x75, 0x6B),
3848*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xC5, 0x76, 0x1C, 0x14, 0xBE, 0xB5, 0xCD),
3849*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x5A, 0xCB, 0xE7, 0x36, 0x1D, 0x52, 0x1C),
3850*62c56f98SSadaf Ebrahimi };
3851*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_1_Y[] = {
3852*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x8D, 0x7A, 0xEB, 0xA3, 0x8B, 0xD5, 0xB0),
3853*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0xA3, 0x41, 0xF8, 0xAC, 0x9E, 0xAB, 0x74),
3854*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x12, 0xE3, 0x65, 0x0D, 0x1C, 0xFE, 0x09, 0x2B),
3855*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0xCA, 0x13, 0x3F, 0xC5, 0xF9, 0x7E, 0xEC),
3856*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0x5D, 0x63, 0x28, 0xA6, 0x89, 0xD3, 0x91),
3857*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x95, 0x3F, 0x7A, 0x82, 0xD4, 0x77, 0xE3),
3858*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xBB, 0x92, 0x32, 0x00, 0xF4, 0x66, 0x42),
3859*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x58, 0x31, 0xD1, 0x17, 0x9F, 0x2A, 0x22),
3860*62c56f98SSadaf Ebrahimi };
3861*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_2_X[] = {
3862*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x36, 0xA9, 0xCD, 0x80, 0xA5, 0x2D, 0x78),
3863*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x91, 0x44, 0xAB, 0xCE, 0x71, 0xFF, 0x0C, 0x9B),
3864*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0x24, 0x58, 0x35, 0x5A, 0x21, 0x32, 0x93),
3865*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1B, 0xA6, 0x28, 0xF8, 0x7A, 0x97, 0xAE, 0x8B),
3866*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0xE7, 0x08, 0xFA, 0x47, 0xC9, 0x55, 0x09),
3867*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xAC, 0x2E, 0x84, 0xA4, 0xF5, 0x52, 0xC4),
3868*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x58, 0x05, 0x9D, 0xA7, 0xC8, 0x71, 0xBF),
3869*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x92, 0xB4, 0x92, 0xC1, 0x92, 0xEC, 0x6B),
3870*62c56f98SSadaf Ebrahimi };
3871*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_2_Y[] = {
3872*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4A, 0x48, 0x2D, 0x79, 0x5E, 0x58, 0xE5, 0x69),
3873*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x85, 0x26, 0xEC, 0xE9, 0x6E, 0xD4, 0x06),
3874*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x68, 0x26, 0x87, 0x38, 0xA2, 0xD2, 0x0B),
3875*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0x17, 0x60, 0xCE, 0x75, 0xF8, 0xA5, 0x6F),
3876*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0x51, 0xDB, 0xA9, 0xAE, 0x87, 0xF1, 0x15),
3877*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x49, 0x92, 0x3B, 0x19, 0x96, 0xF5, 0xB0),
3878*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0xD5, 0x52, 0x52, 0x8C, 0xCE, 0xFD, 0xFA),
3879*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x18, 0x0A, 0xE6, 0xF6, 0xAE, 0x08, 0x41),
3880*62c56f98SSadaf Ebrahimi };
3881*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_3_X[] = {
3882*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x2B, 0xD8, 0x54, 0xCE, 0xB0, 0x57, 0xFE),
3883*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xB0, 0xF8, 0x9E, 0x03, 0x03, 0x3C, 0x5D),
3884*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x0E, 0x29, 0x29, 0x00, 0xF3, 0x70, 0xBF),
3885*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0x33, 0x99, 0x0E, 0x00, 0x5D, 0xFE, 0x4B),
3886*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0x2D, 0xF2, 0x59, 0x32, 0xCF, 0x03, 0xF4),
3887*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0xC9, 0x72, 0xAE, 0x0C, 0xEF, 0xD1, 0x5B),
3888*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x5A, 0x27, 0xBF, 0x2F, 0x45, 0xF9, 0x51),
3889*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD4, 0xBE, 0xE5, 0x2C, 0xFF, 0x5B, 0x1E, 0x88),
3890*62c56f98SSadaf Ebrahimi };
3891*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_3_Y[] = {
3892*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0xAC, 0xBB, 0xD8, 0x83, 0xC2, 0x46, 0xF6),
3893*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xDC, 0xCE, 0x15, 0xB4, 0xEF, 0xCF, 0x46),
3894*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xDB, 0x5E, 0x94, 0x31, 0x0B, 0xB2, 0x7A),
3895*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0xB9, 0xE3, 0xE3, 0x11, 0x71, 0x41, 0x1E),
3896*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xE3, 0x01, 0xB7, 0x7D, 0xBC, 0x65, 0xBE),
3897*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x07, 0x65, 0x87, 0xA7, 0xE8, 0x48, 0xE3),
3898*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x48, 0x8F, 0xD4, 0x30, 0x8E, 0xB4, 0x6C),
3899*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0xE0, 0x73, 0xBE, 0x1E, 0xBF, 0x56, 0x36),
3900*62c56f98SSadaf Ebrahimi };
3901*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_4_X[] = {
3902*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFE, 0x0E, 0x5E, 0x87, 0xC5, 0xAB, 0x0E, 0x3C),
3903*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0xF9, 0x5F, 0x80, 0x24, 0x4C, 0x2A, 0xF1),
3904*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDE, 0x15, 0x21, 0x54, 0x92, 0x84, 0x8D, 0x6A),
3905*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA8, 0x8A, 0x47, 0x74, 0xDC, 0x42, 0xB1, 0xF8),
3906*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0xF7, 0x30, 0xFD, 0xC1, 0x9B, 0x0C, 0x5B),
3907*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x6C, 0xCC, 0xDF, 0xC5, 0xE3, 0xA9, 0xD5),
3908*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x67, 0x59, 0x10, 0x5C, 0x51, 0x54, 0x40),
3909*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x37, 0xFB, 0x6E, 0xB0, 0x78, 0x63, 0x8E),
3910*62c56f98SSadaf Ebrahimi };
3911*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_4_Y[] = {
3912*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0xEF, 0xC4, 0x39, 0x20, 0xF1, 0x46, 0x66),
3913*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0x62, 0xAE, 0xFF, 0x10, 0xE4, 0xE2, 0xE9),
3914*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x5C, 0xF5, 0x2E, 0x22, 0x89, 0xE5, 0x82),
3915*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0x0C, 0x29, 0xA8, 0x62, 0xAE, 0xDB, 0x65),
3916*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x9E, 0x0F, 0xCA, 0x87, 0x2A, 0x6F, 0x7B),
3917*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCE, 0xDC, 0x9B, 0x9F, 0x65, 0xD4, 0xAD, 0x27),
3918*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0xC3, 0x08, 0x0F, 0xCF, 0x67, 0xE9, 0xF4),
3919*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x5C, 0xD7, 0xFF, 0x41, 0x9C, 0xCB, 0x26),
3920*62c56f98SSadaf Ebrahimi };
3921*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_5_X[] = {
3922*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x25, 0x05, 0x12, 0xAD, 0x73, 0x63, 0x90),
3923*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x99, 0x07, 0x86, 0x57, 0xE7, 0x94, 0xB1),
3924*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x4B, 0xA5, 0xBF, 0x18, 0xA9, 0xEF, 0x6A),
3925*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0x4C, 0xC4, 0x09, 0xF2, 0x2F, 0x0C, 0xAA),
3926*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x3A, 0x04, 0xEA, 0x89, 0x6C, 0x91, 0xB9),
3927*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x6C, 0x3A, 0xE7, 0xA3, 0xEC, 0x24, 0x7B),
3928*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xA1, 0x26, 0x21, 0x04, 0xE3, 0xB9, 0x40),
3929*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0x71, 0x4B, 0x7B, 0xC2, 0x89, 0xCD, 0xA2),
3930*62c56f98SSadaf Ebrahimi };
3931*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_5_Y[] = {
3932*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB7, 0xB9, 0xA8, 0x9D, 0xFD, 0x00, 0x3A, 0x1F),
3933*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x41, 0x6C, 0xBB, 0x5A, 0xCA, 0x1F, 0x74),
3934*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0xD7, 0xE2, 0x6C, 0x6B, 0xA7, 0x48, 0xC9),
3935*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x19, 0xAD, 0xA7, 0xC1, 0x7E, 0x4F, 0x6E),
3936*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0xF7, 0x19, 0x3C, 0x06, 0x74, 0x2C, 0x3A),
3937*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x23, 0x4F, 0x0C, 0x09, 0xB0, 0x80, 0x4A),
3938*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4E, 0x74, 0x34, 0x08, 0x44, 0x7E, 0xA3, 0xDD),
3939*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xCC, 0x8D, 0x12, 0x6E, 0xE1, 0x3D, 0x0B),
3940*62c56f98SSadaf Ebrahimi };
3941*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_6_X[] = {
3942*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x18, 0xB1, 0x71, 0x02, 0x93, 0xC2, 0xA4),
3943*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x89, 0x40, 0xE2, 0x1F, 0xE7, 0x5E, 0x68),
3944*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x8E, 0xAE, 0x89, 0x01, 0xD4, 0x0C, 0xEB),
3945*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAE, 0xDA, 0x58, 0x70, 0x24, 0xF2, 0xE4, 0x5F),
3946*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0xC7, 0x1D, 0xD6, 0x4A, 0x6F, 0x66, 0x4F),
3947*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x1D, 0x7E, 0x4A, 0x2C, 0xCA, 0xEC, 0x3B),
3948*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA1, 0x06, 0x7F, 0xA8, 0x99, 0xE4, 0xD3, 0x4E),
3949*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x1D, 0x5A, 0xDF, 0x5E, 0x58, 0x36, 0x49),
3950*62c56f98SSadaf Ebrahimi };
3951*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_6_Y[] = {
3952*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0xB9, 0x32, 0x69, 0x1F, 0x72, 0x2A, 0xB3),
3953*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0x73, 0xE2, 0x03, 0x39, 0x35, 0xAA, 0xA8),
3954*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x5E, 0x5D, 0x48, 0xEF, 0xAE, 0x30, 0xF5),
3955*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x7F, 0x60, 0x19, 0xAF, 0xEC, 0x9D, 0xFC),
3956*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCA, 0xD9, 0x19, 0xE4, 0x1B, 0x56, 0x15, 0x5F),
3957*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xD7, 0x33, 0x59, 0x1F, 0x43, 0x59, 0x2C),
3958*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xCE, 0xEE, 0xCA, 0xA4, 0x7F, 0x63, 0xD4),
3959*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBD, 0x40, 0xC0, 0xF6, 0x19, 0x89, 0x43, 0x20),
3960*62c56f98SSadaf Ebrahimi };
3961*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_7_X[] = {
3962*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x92, 0xEA, 0x07, 0x65, 0x79, 0x86, 0xD3),
3963*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0xB7, 0x13, 0x75, 0xD3, 0xC5, 0x0A, 0xC9),
3964*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x9E, 0xFA, 0xE1, 0x1F, 0x0C, 0xF9, 0x74),
3965*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x8C, 0xED, 0x5C, 0x21, 0xE9, 0x09, 0xDD),
3966*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0x4D, 0xD8, 0x18, 0xC4, 0xF6, 0x36, 0x39),
3967*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xC9, 0xAC, 0x5C, 0xFA, 0x69, 0xA4, 0xA0),
3968*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0x8C, 0x94, 0x1C, 0x7B, 0x71, 0x36, 0x58),
3969*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xBD, 0x46, 0xCE, 0xB7, 0x1D, 0x9C, 0x5E),
3970*62c56f98SSadaf Ebrahimi };
3971*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_7_Y[] = {
3972*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xD6, 0x96, 0x4B, 0xA6, 0x47, 0xEB, 0xE5),
3973*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0xF1, 0x5F, 0x15, 0xDE, 0x99, 0x6F, 0x66),
3974*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xBD, 0xE5, 0x04, 0xB8, 0xE6, 0xC0, 0x0B),
3975*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x49, 0xD3, 0xF0, 0x04, 0x00, 0xE4, 0x05, 0xDB),
3976*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xF3, 0x06, 0xA3, 0x1A, 0xFF, 0xEA, 0x73),
3977*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x32, 0xAA, 0x99, 0x33, 0x09, 0xB6, 0x34),
3978*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xEF, 0xFC, 0x61, 0x10, 0x42, 0x31, 0x94),
3979*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0xF1, 0xF4, 0x33, 0xCF, 0x28, 0x90, 0x9C),
3980*62c56f98SSadaf Ebrahimi };
3981*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_8_X[] = {
3982*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xDE, 0xF9, 0x88, 0x87, 0x7B, 0xEB, 0xC9),
3983*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0xB8, 0xDA, 0xFA, 0xDA, 0x3D, 0xA6, 0x17),
3984*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xF0, 0x62, 0x82, 0x53, 0x32, 0x55, 0x03),
3985*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xA5, 0x32, 0x4A, 0x19, 0x11, 0x9C, 0x10),
3986*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xB3, 0x27, 0xE9, 0x75, 0x90, 0x05, 0x2D),
3987*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x1C, 0x90, 0x48, 0x77, 0x01, 0x85, 0x1B),
3988*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xD6, 0x9B, 0x84, 0xA8, 0xD7, 0xC5, 0x28),
3989*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x7A, 0xCB, 0xB3, 0x11, 0x46, 0xD7, 0x99),
3990*62c56f98SSadaf Ebrahimi };
3991*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_8_Y[] = {
3992*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0x23, 0xBF, 0x75, 0x75, 0xA1, 0x95, 0x90),
3993*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4B, 0x66, 0x5D, 0x34, 0x13, 0xA9, 0x03, 0xBE),
3994*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x80, 0x9D, 0x5F, 0xD2, 0x44, 0xE1, 0x62),
3995*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x5D, 0xBD, 0xA8, 0xBF, 0xB4, 0x25, 0x1F),
3996*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x99, 0x1F, 0x53, 0xF1, 0x57, 0xDB, 0xE7),
3997*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x7C, 0xE5, 0xC5, 0x51, 0x0B, 0x4C, 0x9B),
3998*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6B, 0xB0, 0x1A, 0x9C, 0x16, 0xB0, 0x32, 0x1F),
3999*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0xE3, 0xCF, 0xDD, 0x48, 0xB4, 0x7B, 0x33),
4000*62c56f98SSadaf Ebrahimi };
4001*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_9_X[] = {
4002*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0xDD, 0x9E, 0x3C, 0x98, 0x0E, 0x77, 0x65),
4003*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0xAB, 0x01, 0xD3, 0x87, 0x74, 0x25, 0x4A),
4004*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0xA3, 0xE3, 0x76, 0x43, 0x87, 0x12, 0xBD),
4005*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x54, 0xB1, 0x3B, 0x60, 0x66, 0xEB, 0x98, 0x54),
4006*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x78, 0xC8, 0xD7, 0x4E, 0x75, 0xCA, 0x69),
4007*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xDF, 0x71, 0x19, 0xE7, 0x07, 0x36, 0xB5),
4008*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0xC9, 0xA8, 0x5F, 0x91, 0xBF, 0x47, 0xB2),
4009*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x96, 0x58, 0x96, 0x18, 0xB6, 0xFA, 0x01),
4010*62c56f98SSadaf Ebrahimi };
4011*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_9_Y[] = {
4012*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x2D, 0xA9, 0x9B, 0x86, 0xDB, 0x0C, 0x4C),
4013*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x0B, 0x2D, 0x56, 0x4A, 0xD3, 0x93, 0x8A),
4014*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x15, 0xE2, 0x65, 0x12, 0x86, 0x0E, 0xB2),
4015*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x41, 0x4D, 0xC1, 0xCB, 0xE4, 0xC3, 0xD7),
4016*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x53, 0x10, 0xCA, 0xA3, 0xAC, 0x83, 0x26),
4017*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x01, 0x22, 0x96, 0x10, 0xAD, 0x69, 0xDB),
4018*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x42, 0x46, 0x4E, 0xD8, 0xEA, 0xD6, 0x9D, 0xF3),
4019*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x2F, 0x7F, 0x62, 0x62, 0x80, 0xD0, 0x14),
4020*62c56f98SSadaf Ebrahimi };
4021*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_10_X[] = {
4022*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xDA, 0x00, 0x63, 0x09, 0xBD, 0x6A, 0x83),
4023*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0F, 0xD4, 0x6E, 0x48, 0x05, 0xB7, 0xF7, 0x17),
4024*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0x4D, 0xD7, 0x00, 0x4A, 0x15, 0x27, 0x7A),
4025*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x15, 0xAA, 0x37, 0x27, 0x34, 0x18, 0x24),
4026*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x20, 0x2C, 0x84, 0x1B, 0x88, 0xBA, 0x05),
4027*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x09, 0xD6, 0x04, 0xA2, 0x60, 0x84, 0x72),
4028*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0x04, 0x94, 0x08, 0xD4, 0xED, 0x47, 0xDB),
4029*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xF3, 0xE4, 0x3E, 0xB9, 0x5B, 0x35, 0x42),
4030*62c56f98SSadaf Ebrahimi };
4031*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_10_Y[] = {
4032*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5F, 0xD8, 0xB6, 0x80, 0xD6, 0xF1, 0x30, 0xDD),
4033*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x14, 0xA6, 0x85, 0xEE, 0xA7, 0xD8, 0x61),
4034*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x49, 0x2A, 0x1E, 0x7C, 0xE9, 0x2D, 0xEC),
4035*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3A, 0x87, 0x56, 0x91, 0x03, 0x77, 0x4D, 0x55),
4036*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0x52, 0xD4, 0xAA, 0xF7, 0xFA, 0xB0, 0xC5),
4037*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x5D, 0x11, 0x39, 0xB1, 0xE7, 0x76, 0xAD),
4038*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x13, 0xBC, 0x37, 0x5D, 0x74, 0xCD, 0xC2),
4039*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x48, 0x14, 0x23, 0x30, 0xF8, 0x46, 0x37),
4040*62c56f98SSadaf Ebrahimi };
4041*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_11_X[] = {
4042*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x27, 0xB0, 0xD9, 0xB2, 0x74, 0xB4, 0xC0),
4043*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEA, 0xA6, 0xB9, 0x6F, 0x9F, 0x64, 0x36, 0x92),
4044*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2E, 0x2B, 0x78, 0x40, 0x05, 0x2B, 0x7B, 0xA9),
4045*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x68, 0x3A, 0xB6, 0x4A, 0xE2, 0xDB, 0xB8),
4046*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1E, 0x33, 0xD7, 0x34, 0x8B, 0x25, 0x45, 0xEF),
4047*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0xCE, 0xA8, 0xC9, 0x01, 0xFB, 0x0E, 0x7B),
4048*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xF9, 0x51, 0x4C, 0x12, 0x9F, 0x60, 0xE4),
4049*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0x85, 0xBD, 0x30, 0x37, 0x84, 0x39, 0x44),
4050*62c56f98SSadaf Ebrahimi };
4051*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_11_Y[] = {
4052*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x26, 0x33, 0xAF, 0x2E, 0xB8, 0x2E, 0xCC, 0x3C),
4053*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0xB1, 0x73, 0x59, 0x4E, 0x0C, 0x09, 0x4A),
4054*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0x24, 0x89, 0x81, 0x12, 0xFF, 0xBB, 0x6E),
4055*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x71, 0x37, 0x1A, 0x66, 0xEE, 0xED, 0xB6, 0x9B),
4056*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0xBD, 0x04, 0x20, 0x5D, 0xFB, 0xBF, 0x95),
4057*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0xF8, 0x34, 0xA3, 0xFF, 0x45, 0xDE, 0x92),
4058*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x18, 0x73, 0xF1, 0x32, 0x25, 0x58, 0xEB),
4059*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0xC1, 0x14, 0xE3, 0x9E, 0x40, 0x0F, 0x12),
4060*62c56f98SSadaf Ebrahimi };
4061*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_12_X[] = {
4062*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x07, 0x9D, 0x9C, 0x00, 0xF7, 0x56, 0x19),
4063*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0xBA, 0x87, 0xF9, 0x15, 0x0C, 0x66, 0x5D),
4064*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0x1F, 0xC1, 0x28, 0xB0, 0x47, 0x0D, 0xF5),
4065*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0xCA, 0x27, 0xEE, 0x4B, 0x23, 0x2B, 0x89),
4066*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7E, 0xB5, 0x68, 0xC8, 0x17, 0x5D, 0xC3, 0xAA),
4067*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0x02, 0x08, 0xEE, 0x20, 0x9D, 0xEA, 0x64),
4068*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x14, 0x50, 0xD4, 0x7D, 0x5F, 0xCF, 0xA0),
4069*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0xFA, 0xF8, 0xA7, 0xC6, 0xDC, 0x14, 0x8C),
4070*62c56f98SSadaf Ebrahimi };
4071*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_12_Y[] = {
4072*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x76, 0xBD, 0x0A, 0x1A, 0x18, 0x98, 0xDC, 0xB0),
4073*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x63, 0x63, 0x02, 0xB7, 0xD5, 0x5B, 0x5A, 0xC6),
4074*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0xB1, 0xD7, 0x4B, 0x15, 0x39, 0x61, 0x5D),
4075*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0x32, 0xE1, 0x9E, 0x70, 0x1B, 0xCE, 0x51),
4076*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x64, 0xD8, 0x18, 0x83, 0x52, 0x9B, 0x6D, 0xA2),
4077*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x55, 0x56, 0x19, 0x34, 0xA4, 0xEA, 0xFC),
4078*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0xA9, 0x55, 0x80, 0xE3, 0x15, 0x36, 0x8B),
4079*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0x06, 0xC8, 0x1D, 0x17, 0x0D, 0xAD, 0x16),
4080*62c56f98SSadaf Ebrahimi };
4081*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_13_X[] = {
4082*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0xD6, 0xF0, 0xCC, 0xF3, 0x63, 0x53, 0xD2),
4083*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x5A, 0xDC, 0x46, 0xBD, 0x0D, 0xAD, 0x96),
4084*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0x2F, 0x11, 0x60, 0x15, 0x51, 0x4A, 0xEA),
4085*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xE3, 0x93, 0x38, 0xD5, 0x83, 0xAA, 0x0D),
4086*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x90, 0xA6, 0xCC, 0xB1, 0xFD, 0xBB, 0x1A, 0x0F),
4087*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3B, 0x54, 0xC8, 0x54, 0x6F, 0x79, 0x1A, 0x59),
4088*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x4A, 0xDA, 0x28, 0x92, 0x97, 0x9D, 0x7F),
4089*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD6, 0x4B, 0xDB, 0xC7, 0x52, 0xC5, 0x66, 0x34),
4090*62c56f98SSadaf Ebrahimi };
4091*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_13_Y[] = {
4092*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x7E, 0x92, 0x53, 0x30, 0x93, 0xFD, 0xFF),
4093*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x16, 0x6A, 0xB1, 0x91, 0x0A, 0xB4, 0x52),
4094*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6D, 0x9D, 0x40, 0x3F, 0xE3, 0xF1, 0x01, 0x46),
4095*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x0E, 0xD8, 0xED, 0x11, 0x8E, 0x4C, 0xED),
4096*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x86, 0x4A, 0x1B, 0x88, 0xDF, 0x8D, 0x29, 0xE7),
4097*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x23, 0x21, 0x11, 0xAB, 0x77, 0x81, 0x62),
4098*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0B, 0xAF, 0x11, 0xFA, 0xBA, 0x40, 0x63, 0xE7),
4099*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x6F, 0x8D, 0x80, 0xDF, 0x67, 0xF5, 0x44),
4100*62c56f98SSadaf Ebrahimi };
4101*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_14_X[] = {
4102*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0x8B, 0xB7, 0x08, 0xF4, 0xD7, 0x2D, 0xA8),
4103*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x2B, 0x30, 0x02, 0x45, 0x71, 0x08, 0x49),
4104*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x97, 0x3A, 0xCA, 0x50, 0xF6, 0xC2, 0x19, 0x8C),
4105*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xB9, 0x9B, 0x3E, 0x73, 0x95, 0x1D, 0x49),
4106*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x60, 0x59, 0x48, 0xCB, 0xD8, 0xD6, 0xAA),
4107*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0xB9, 0x6C, 0x89, 0xAB, 0x99, 0xA8, 0xF8),
4108*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0xA1, 0x8B, 0x4E, 0x06, 0x19, 0xEC, 0x99),
4109*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x95, 0x04, 0xCF, 0xD5, 0x94, 0xB3, 0x02),
4110*62c56f98SSadaf Ebrahimi };
4111*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_14_Y[] = {
4112*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x29, 0x35, 0x93, 0x7C, 0xB3, 0xB8, 0x9E, 0x1B),
4113*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC4, 0x45, 0x5C, 0x7E, 0xBF, 0x75, 0x81, 0x0F),
4114*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xE8, 0x24, 0xDF, 0xEC, 0x2F, 0x7D, 0xB9),
4115*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF2, 0x8B, 0xD5, 0x6A, 0x9B, 0xA0, 0xE0, 0x4F),
4116*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0xE3, 0x27, 0x82, 0xDE, 0xDD, 0xCA, 0x4B),
4117*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x57, 0x56, 0x46, 0x05, 0x06, 0x01, 0x2E),
4118*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x74, 0x35, 0xA7, 0x47, 0xE2, 0x6B, 0x2C, 0x4F),
4119*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x9D, 0x4C, 0xEC, 0x1F, 0x11, 0x75, 0x2B),
4120*62c56f98SSadaf Ebrahimi };
4121*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_15_X[] = {
4122*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0xAA, 0x41, 0xC1, 0xE9, 0x0E, 0xE9, 0xAA),
4123*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xCF, 0x9C, 0x4B, 0xE8, 0xED, 0x0A, 0x49),
4124*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0x73, 0xCA, 0x0C, 0x46, 0x0A, 0x9C, 0xE4),
4125*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xE1, 0x9E, 0xBC, 0xFE, 0x44, 0x63, 0x6D),
4126*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x31, 0x43, 0x71, 0xEE, 0xF8, 0xC1, 0x8C, 0x5C),
4127*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6A, 0x4B, 0xF0, 0x69, 0x25, 0xBD, 0x71, 0x1A),
4128*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFD, 0x9A, 0xFE, 0x82, 0xE7, 0xC1, 0xC1, 0xEE),
4129*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFC, 0x5A, 0x6E, 0x5E, 0x97, 0x6A, 0x35, 0x8D),
4130*62c56f98SSadaf Ebrahimi };
4131*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_15_Y[] = {
4132*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA2, 0x18, 0x6C, 0x7E, 0xB8, 0x9E, 0x57, 0x32),
4133*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x35, 0xB9, 0xC1, 0xD0, 0xFE, 0x78, 0xFB, 0x32),
4134*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x08, 0xAE, 0x46, 0x34, 0xEA, 0x7A, 0x7F),
4135*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x1C, 0x56, 0xA9, 0x18, 0x37, 0xD4, 0x9E),
4136*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x28, 0x63, 0xE9, 0x0A, 0xB6, 0x38, 0x3C, 0xC1),
4137*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3E, 0x4F, 0xA4, 0x6E, 0x85, 0x31, 0x23, 0x52),
4138*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0D, 0xAD, 0xC4, 0xC3, 0xB1, 0x4B, 0x1C, 0x82),
4139*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x56, 0x4A, 0x38, 0xB3, 0x6B, 0x6F, 0x2C),
4140*62c56f98SSadaf Ebrahimi };
4141*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_16_X[] = {
4142*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x67, 0xC7, 0x19, 0xDE, 0x21, 0xED, 0x89, 0xD0),
4143*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2F, 0xBE, 0xA6, 0xAE, 0xEB, 0x9D, 0xA7, 0x2A),
4144*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x0E, 0x13, 0x1E, 0x86, 0x57, 0xC3, 0x3B),
4145*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x4B, 0x30, 0x46, 0x52, 0xC1, 0xEC, 0x52),
4146*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6E, 0xD5, 0x44, 0x31, 0x96, 0x3B, 0x26, 0x27),
4147*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x68, 0xA8, 0x67, 0x78, 0x39, 0xE8, 0x68),
4148*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0x78, 0xB7, 0xDD, 0xF2, 0x58, 0xB6, 0x3D),
4149*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x81, 0x3C, 0xB3, 0x26, 0xC4, 0x2C, 0x8C, 0xA5),
4150*62c56f98SSadaf Ebrahimi };
4151*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_16_Y[] = {
4152*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB9, 0x24, 0xE5, 0x73, 0xEE, 0x9A, 0x02, 0xA9),
4153*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0x6A, 0x65, 0x60, 0xF3, 0x62, 0xE3, 0xE9),
4154*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFB, 0x07, 0x84, 0xE6, 0x3B, 0x46, 0x65, 0x9F),
4155*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0x8F, 0x0C, 0xB0, 0xE1, 0x04, 0x82, 0x9D),
4156*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEB, 0x13, 0xBF, 0x3D, 0xA0, 0x48, 0xA2, 0x74),
4157*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0x26, 0x76, 0x74, 0xAB, 0x0B, 0x29, 0xE8),
4158*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x30, 0x6E, 0x5F, 0x03, 0x34, 0x7C, 0x38, 0xCE),
4159*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x72, 0xF9, 0x3B, 0x3C, 0xA4, 0xBC, 0x7C),
4160*62c56f98SSadaf Ebrahimi };
4161*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_17_X[] = {
4162*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5C, 0xCE, 0x18, 0x80, 0xB8, 0x24, 0x45, 0x81),
4163*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x09, 0x03, 0xB8, 0x06, 0x64, 0xF7, 0xEC),
4164*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF1, 0x26, 0xB1, 0x10, 0x6D, 0x71, 0x12, 0x2E),
4165*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x12, 0xC6, 0x6E, 0x1E, 0x6A, 0xC3, 0x80),
4166*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE5, 0xD3, 0x0A, 0xDE, 0xD8, 0x6B, 0x04, 0x5C),
4167*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x87, 0x5B, 0xAE, 0xDB, 0x3C, 0xC0, 0xC5),
4168*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8E, 0xF5, 0xF9, 0xC1, 0x9A, 0x89, 0xBB, 0x7E),
4169*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0x69, 0x72, 0x8B, 0xAE, 0x32, 0x13, 0x11),
4170*62c56f98SSadaf Ebrahimi };
4171*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_17_Y[] = {
4172*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x16, 0x07, 0x50, 0xFA, 0x4C, 0xCF, 0xE8),
4173*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x50, 0x21, 0xE9, 0xDE, 0xEC, 0x7E, 0xDF),
4174*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x2F, 0xE8, 0x83, 0x30, 0x0B, 0x65, 0x0E),
4175*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x0B, 0x99, 0xAC, 0xC9, 0xBA, 0x6C, 0x2A),
4176*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x59, 0x5A, 0x0D, 0x7B, 0x9E, 0x08, 0xAD),
4177*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x34, 0x91, 0xB2, 0xDC, 0x90, 0xCE, 0x67, 0xED),
4178*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x93, 0x60, 0x0C, 0xD7, 0x1F, 0x2F, 0x17),
4179*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x19, 0x7F, 0x9D, 0x40, 0xF8, 0x78, 0x7A, 0x54),
4180*62c56f98SSadaf Ebrahimi };
4181*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_18_X[] = {
4182*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x13, 0x22, 0x95, 0xE8, 0xEF, 0x31, 0x57, 0x35),
4183*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x88, 0x53, 0xFE, 0xAF, 0x7C, 0x47, 0x14),
4184*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xCE, 0xCC, 0x79, 0xE8, 0x9F, 0x8C, 0xC4),
4185*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDB, 0x16, 0xDD, 0x77, 0x6E, 0x8A, 0x73, 0x97),
4186*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x07, 0x97, 0x21, 0x3B, 0xF8, 0x5F, 0xA8),
4187*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC6, 0xB5, 0xD2, 0x81, 0x84, 0xF0, 0xE7, 0x9F),
4188*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCB, 0x8F, 0x75, 0x09, 0x6A, 0x0E, 0x53, 0xAD),
4189*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x4F, 0x70, 0x97, 0xC7, 0xAC, 0x7D, 0x3F),
4190*62c56f98SSadaf Ebrahimi };
4191*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_18_Y[] = {
4192*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF9, 0x3C, 0x6A, 0xB4, 0x10, 0xA9, 0xC8, 0x1D),
4193*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xC5, 0xD6, 0x69, 0x16, 0xB8, 0xAC, 0x25),
4194*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x44, 0xDC, 0xEB, 0x48, 0x54, 0x5D, 0x5F),
4195*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6F, 0x48, 0x9B, 0xD7, 0x72, 0x69, 0xA4, 0x8A),
4196*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x0D, 0x36, 0x9A, 0x66, 0x0B, 0xEC, 0x24),
4197*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0xC6, 0xD4, 0xB6, 0x60, 0xE5, 0xC3, 0x3A),
4198*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBA, 0x29, 0x42, 0xE0, 0x9D, 0xFD, 0x7C, 0x3E),
4199*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x10, 0xBA, 0x55, 0xBC, 0x3B, 0x38, 0x5D),
4200*62c56f98SSadaf Ebrahimi };
4201*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_19_X[] = {
4202*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x25, 0x66, 0xFA, 0x05, 0x73, 0x03, 0x1B, 0x69),
4203*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x11, 0xA4, 0x66, 0x12, 0x96, 0x7B, 0x02, 0x4C),
4204*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x44, 0xB5, 0xDE, 0x6D, 0x98, 0xD1, 0xD5, 0xA8),
4205*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE2, 0xF5, 0x44, 0xB8, 0x8E, 0xF6, 0x8C, 0x05),
4206*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x15, 0x2B, 0x72, 0xBC, 0x49, 0xE5, 0xDF),
4207*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x6C, 0x44, 0xD7, 0xDF, 0x8F, 0xEB, 0x8D, 0x80),
4208*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x64, 0x88, 0xAA, 0xB7, 0xE4, 0x70, 0x1D),
4209*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9C, 0x14, 0xBB, 0xE9, 0x9B, 0xB9, 0x65, 0x5D),
4210*62c56f98SSadaf Ebrahimi };
4211*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_19_Y[] = {
4212*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x66, 0x8E, 0x88, 0xF5, 0xF1, 0xC1, 0x89, 0xA2),
4213*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x16, 0x30, 0x53, 0xE6, 0xFB, 0x2D, 0x82, 0xB4),
4214*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0xE4, 0xFF, 0xBA, 0x31, 0x79, 0xAB, 0xC2),
4215*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x45, 0x09, 0xF7, 0xB7, 0x09, 0x78, 0x4C, 0x90),
4216*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xAE, 0xC2, 0x44, 0xDC, 0x17, 0x78, 0x47),
4217*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xD4, 0x17, 0x43, 0x19, 0x74, 0x9E, 0x23),
4218*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x64, 0x3B, 0x73, 0xA2, 0x99, 0x27, 0x76),
4219*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x74, 0x36, 0x5F, 0xD3, 0x14, 0xB1, 0x31),
4220*62c56f98SSadaf Ebrahimi };
4221*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_20_X[] = {
4222*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAC, 0x07, 0xAB, 0xFD, 0x9B, 0x03, 0xC5, 0xD5),
4223*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0xBE, 0xB0, 0x1D, 0xF2, 0x0C, 0x73, 0x73),
4224*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xE7, 0x7B, 0x87, 0xD3, 0x34, 0xFD, 0xE2),
4225*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9A, 0x25, 0x3D, 0xC7, 0x36, 0x83, 0x53, 0xDC),
4226*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x7C, 0xCF, 0x63, 0x55, 0x12, 0x11, 0xB0),
4227*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC0, 0x34, 0x4D, 0x27, 0x92, 0xAC, 0x18, 0x16),
4228*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x42, 0x61, 0x9D, 0x2E, 0xFF, 0x13, 0x16),
4229*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF4, 0xDE, 0x92, 0x65, 0x57, 0x0D, 0xBC, 0x0A),
4230*62c56f98SSadaf Ebrahimi };
4231*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_20_Y[] = {
4232*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEF, 0x7B, 0x6E, 0xC6, 0x2A, 0x21, 0x74, 0x0A),
4233*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0xA7, 0x53, 0x4D, 0x29, 0x36, 0xEF, 0xE5),
4234*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE1, 0xD6, 0x41, 0xC7, 0x99, 0xAD, 0x50, 0x53),
4235*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x99, 0xAC, 0x41, 0x9F, 0xFB, 0x4C, 0x86, 0xF1),
4236*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xBB, 0xE6, 0x25, 0x28, 0xAA, 0xEB, 0x1E),
4237*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x92, 0x04, 0xA2, 0xC3, 0xAA, 0x08, 0x8A, 0xCC),
4238*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x2B, 0x5B, 0xE2, 0x8D, 0x76, 0xEA, 0x34),
4239*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB3, 0x33, 0xD2, 0x21, 0x4D, 0x62, 0xE3, 0x8E),
4240*62c56f98SSadaf Ebrahimi };
4241*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_21_X[] = {
4242*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0x06, 0x8B, 0x2B, 0xC2, 0xC4, 0xB1, 0xD2),
4243*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFA, 0xF5, 0xA1, 0xC0, 0x03, 0x6A, 0x29, 0x12),
4244*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF5, 0xA9, 0xEF, 0x55, 0xB6, 0x1A, 0x9F, 0x6B),
4245*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9B, 0x54, 0x32, 0xBE, 0x06, 0x43, 0xB5, 0xFD),
4246*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF7, 0xD6, 0xD9, 0x20, 0x89, 0xBE, 0xD4, 0x1B),
4247*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0x26, 0x95, 0x10, 0xCE, 0xB4, 0x88, 0x79),
4248*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0xA6, 0x27, 0xAC, 0x32, 0xBA, 0xBD, 0xC7),
4249*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0xA6, 0xAE, 0x9C, 0x7B, 0xBE, 0xA1, 0x63),
4250*62c56f98SSadaf Ebrahimi };
4251*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_21_Y[] = {
4252*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8B, 0xCD, 0x4D, 0x3D, 0xDF, 0x96, 0xBB, 0x7D),
4253*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0xA7, 0x11, 0x06, 0xCC, 0x0E, 0x31, 0x81),
4254*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x20, 0xE4, 0xF4, 0xAD, 0x7B, 0x5F, 0xF1, 0xEF),
4255*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE4, 0x54, 0xBE, 0xF4, 0x8A, 0x03, 0x47, 0xDF),
4256*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0x53, 0x00, 0x7F, 0xB0, 0x8A, 0x68, 0xA6),
4257*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x16, 0xB1, 0x73, 0x6F, 0x5B, 0x0E, 0xC3),
4258*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x32, 0xE3, 0x43, 0x64, 0x75, 0xFB, 0xFB),
4259*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x18, 0x55, 0x8A, 0x4E, 0x6E, 0x35, 0x54),
4260*62c56f98SSadaf Ebrahimi };
4261*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_22_X[] = {
4262*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x80, 0x97, 0x15, 0x1E, 0xCB, 0xF2, 0x9C, 0xA5),
4263*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0xD1, 0xBB, 0xF3, 0x70, 0xAD, 0x13, 0xAD),
4264*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0x96, 0xA4, 0xC5, 0x5E, 0xDA, 0xD5, 0x57),
4265*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x81, 0xE9, 0x65, 0x66, 0x76, 0x47, 0x45),
4266*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x35, 0x87, 0x06, 0x73, 0xCF, 0x34, 0xD2),
4267*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x81, 0x15, 0x42, 0xA2, 0x79, 0x5B, 0x42),
4268*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x08, 0xA2, 0x7D, 0x09, 0x14, 0x64, 0xC6, 0xAE),
4269*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0x6D, 0xC4, 0xED, 0xF1, 0xD6, 0xE9, 0x24),
4270*62c56f98SSadaf Ebrahimi };
4271*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_22_Y[] = {
4272*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB4, 0xD5, 0xBB, 0x25, 0xA3, 0xDD, 0xA3, 0x88),
4273*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xF2, 0x68, 0x67, 0x39, 0x8F, 0x73, 0x93),
4274*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x76, 0x28, 0x89, 0xAD, 0x32, 0xE0, 0xDF),
4275*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0x90, 0xCC, 0x57, 0x58, 0xAA, 0xC9, 0x75),
4276*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xD7, 0x43, 0xD2, 0xCE, 0x5E, 0xA0, 0x08),
4277*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x33, 0xB0, 0xB8, 0xA4, 0x9E, 0x96, 0x26, 0x86),
4278*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x94, 0x61, 0x1D, 0xF3, 0x65, 0x5E, 0x60, 0xCA),
4279*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC7, 0x1E, 0x65, 0xED, 0xCF, 0x07, 0x60, 0x20),
4280*62c56f98SSadaf Ebrahimi };
4281*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_23_X[] = {
4282*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x30, 0x17, 0x8A, 0x91, 0x88, 0x0A, 0xA4),
4283*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x05, 0x7D, 0x18, 0xA4, 0xAC, 0x59, 0xFC, 0x5F),
4284*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x31, 0x8B, 0x25, 0x65, 0x39, 0x9A, 0xDC),
4285*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x15, 0x16, 0x4B, 0x68, 0xBA, 0x59, 0x13, 0x2F),
4286*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8D, 0xFD, 0xD3, 0xC5, 0x56, 0xC9, 0x8C, 0x5E),
4287*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBC, 0xC6, 0x9F, 0xF4, 0xE6, 0xF7, 0xB4, 0x01),
4288*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2D, 0x7C, 0x03, 0x00, 0x26, 0x9F, 0xD8, 0x7B),
4289*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x1D, 0x6E, 0x00, 0xB9, 0x00, 0x6E, 0x93),
4290*62c56f98SSadaf Ebrahimi };
4291*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_23_Y[] = {
4292*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x63, 0xDA, 0x03, 0x2B, 0xD5, 0x0B, 0xFE),
4293*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x46, 0xFC, 0xE2, 0xC8, 0x47, 0xF0, 0xAE, 0xF2),
4294*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x51, 0x4C, 0xF7, 0x50, 0x0C, 0x48, 0x06, 0x2A),
4295*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDF, 0x2B, 0x32, 0x98, 0x0E, 0x7E, 0x61, 0x41),
4296*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x02, 0x27, 0xFE, 0x75, 0x86, 0xDF, 0x24),
4297*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2B, 0x30, 0xB1, 0x22, 0x32, 0x1B, 0xFE, 0x24),
4298*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC2, 0x27, 0xF7, 0x78, 0x6F, 0xD7, 0xFD, 0xE4),
4299*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA0, 0x78, 0xCC, 0xEA, 0xC0, 0x50, 0x24, 0x44),
4300*62c56f98SSadaf Ebrahimi };
4301*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_24_X[] = {
4302*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x2B, 0x4F, 0x7F, 0x58, 0xE6, 0xC2, 0x70),
4303*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x43, 0xD5, 0xA7, 0x35, 0x3C, 0x80, 0xB8),
4304*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1A, 0x6D, 0x4B, 0x12, 0x00, 0x7B, 0xE6, 0xA6),
4305*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x15, 0xBD, 0xD0, 0x9B, 0xCA, 0xAA, 0x81),
4306*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xCF, 0xCE, 0x9C, 0xE3, 0x8B, 0x60, 0x7A, 0x53),
4307*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0xDA, 0x4B, 0x03, 0xA7, 0x8D, 0x43, 0x22),
4308*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0xAF, 0x00, 0x2B, 0x32, 0xF0, 0x22, 0x68),
4309*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDC, 0xD9, 0x99, 0x99, 0xBE, 0x43, 0x99, 0x3E),
4310*62c56f98SSadaf Ebrahimi };
4311*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_24_Y[] = {
4312*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1F, 0x71, 0x41, 0xF4, 0xB5, 0xFD, 0xDD, 0x36),
4313*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9D, 0xE2, 0x20, 0x4C, 0xD1, 0x2E, 0x1F, 0x06),
4314*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x96, 0x43, 0x48, 0x76, 0x8A, 0x49, 0xAC, 0x87),
4315*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0C, 0x1A, 0x55, 0xA8, 0xA3, 0xD4, 0x57, 0x75),
4316*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0xA6, 0x84, 0x39, 0xC9, 0x13, 0xBB, 0x60),
4317*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD9, 0xFA, 0xA9, 0x70, 0xDE, 0x83, 0xDD, 0xC9),
4318*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEC, 0xC9, 0xD9, 0x3E, 0x44, 0x91, 0x68, 0x7B),
4319*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB6, 0x9F, 0x85, 0x6D, 0xF7, 0x54, 0x36, 0x82),
4320*62c56f98SSadaf Ebrahimi };
4321*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_25_X[] = {
4322*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x68, 0x6B, 0xA6, 0xA3, 0xE5, 0xD4, 0x46, 0xDB),
4323*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x3E, 0xDC, 0x84, 0x7C, 0x7B, 0x24, 0x34),
4324*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x14, 0xED, 0x7F, 0x86, 0x07, 0x6C, 0x57, 0xCA),
4325*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x95, 0x06, 0xFE, 0x52, 0x12, 0x79, 0x69, 0x56),
4326*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x84, 0xD1, 0x44, 0x5F, 0x21, 0x3A, 0xC3, 0x84),
4327*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5E, 0xD9, 0x4A, 0xC0, 0x75, 0xAB, 0x17, 0xAC),
4328*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xFF, 0x81, 0x94, 0xB6, 0x80, 0x6B, 0x6F, 0xC3),
4329*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xBE, 0x8E, 0xA5, 0xAA, 0xBC, 0x1E, 0x3E),
4330*62c56f98SSadaf Ebrahimi };
4331*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_25_Y[] = {
4332*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x89, 0xC7, 0x85, 0xA6, 0x59, 0x9B, 0xB1, 0x52),
4333*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xCE, 0x40, 0xD1, 0xFB, 0xDF, 0x94, 0xF7),
4334*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x18, 0xB8, 0x5E, 0xBF, 0x45, 0xA8, 0x2D, 0x2D),
4335*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x98, 0x9C, 0x06, 0x1B, 0xA9, 0x57, 0xB9, 0x79),
4336*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x53, 0xE9, 0xCE, 0xA2, 0xD3, 0x74, 0xA1, 0x3C),
4337*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAA, 0x5F, 0x34, 0x78, 0xDB, 0xAE, 0x3A, 0x14),
4338*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7D, 0x32, 0x84, 0x3E, 0x68, 0x6A, 0x43, 0x0F),
4339*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0xBC, 0x39, 0x36, 0xA4, 0xC5, 0xBB, 0x11),
4340*62c56f98SSadaf Ebrahimi };
4341*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_26_X[] = {
4342*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8C, 0x07, 0xA2, 0xB5, 0xC9, 0x0F, 0x4D, 0x0F),
4343*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0x1D, 0x67, 0xE6, 0xF1, 0x46, 0xEB, 0x71),
4344*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD7, 0x41, 0x23, 0x95, 0xE7, 0xE0, 0x10, 0xDD),
4345*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x69, 0xFE, 0x68, 0x8C, 0xC6, 0x5F, 0xB6),
4346*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE3, 0xB9, 0x2B, 0x3D, 0xD2, 0x4F, 0xD8, 0x1A),
4347*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA3, 0x09, 0xF5, 0x5F, 0xCF, 0xF6, 0x91, 0x57),
4348*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x65, 0x15, 0x42, 0x6B, 0x6D, 0xB5, 0xF3, 0xB6),
4349*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBF, 0x56, 0x9D, 0xC5, 0xFF, 0xCA, 0x13, 0x9B),
4350*62c56f98SSadaf Ebrahimi };
4351*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_26_Y[] = {
4352*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x4D, 0x38, 0xE6, 0x23, 0x63, 0x48, 0x3C, 0xCA),
4353*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD2, 0x68, 0x3C, 0xD1, 0x3B, 0xE9, 0x3B, 0x82),
4354*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB5, 0x08, 0x54, 0x49, 0xD1, 0x46, 0x45, 0x13),
4355*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x70, 0x52, 0x6E, 0x79, 0xC4, 0x5E, 0x95),
4356*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0xDF, 0xE8, 0x5A, 0x32, 0x81, 0xDA, 0xD3),
4357*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3C, 0x2D, 0x94, 0x5B, 0xB5, 0x35, 0x9F, 0x0A),
4358*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2A, 0x12, 0x8D, 0xC3, 0x36, 0x36, 0xB2, 0x2A),
4359*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x39, 0x2F, 0x22, 0x38, 0x5B, 0x18, 0x4C, 0x35),
4360*62c56f98SSadaf Ebrahimi };
4361*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_27_X[] = {
4362*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0xC1, 0x22, 0x0E, 0xF0, 0x73, 0x11, 0x05),
4363*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB2, 0xAE, 0xA4, 0x56, 0x18, 0x61, 0x66, 0x12),
4364*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x79, 0xFB, 0x72, 0x08, 0x84, 0x38, 0x51, 0xB0),
4365*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDA, 0x86, 0xA8, 0xB9, 0x31, 0x99, 0x29, 0xC3),
4366*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x8A, 0xFB, 0xC3, 0x42, 0xB3, 0xC7, 0x6F, 0x3A),
4367*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD8, 0xF8, 0xE1, 0x09, 0xBE, 0x75, 0xB0, 0x22),
4368*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5A, 0x7D, 0xFF, 0xF4, 0x99, 0xFC, 0x13, 0xAB),
4369*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE6, 0x1B, 0x84, 0x81, 0x42, 0x22, 0xC6, 0x3D),
4370*62c56f98SSadaf Ebrahimi };
4371*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_27_Y[] = {
4372*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x21, 0xE0, 0x37, 0xA4, 0xA0, 0x2F, 0x38, 0x7F),
4373*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x3D, 0xB7, 0x40, 0x2F, 0x39, 0x3C, 0x7A),
4374*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7A, 0x3B, 0x8A, 0x51, 0xAE, 0x40, 0x49, 0x7A),
4375*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x36, 0x20, 0x9F, 0xDD, 0xA9, 0xD0, 0x77, 0xC7),
4376*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x78, 0x1D, 0x64, 0xDA, 0xA0, 0x53, 0xC7, 0x7D),
4377*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x37, 0x7B, 0x66, 0x55, 0x94, 0xD1, 0x51, 0x44),
4378*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0E, 0xA9, 0xB5, 0x5B, 0x38, 0x35, 0x40, 0xC0),
4379*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC8, 0xC9, 0x0F, 0xF0, 0x73, 0x79, 0x43, 0x61),
4380*62c56f98SSadaf Ebrahimi };
4381*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_28_X[] = {
4382*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x47, 0x45, 0x69, 0x80, 0x72, 0x72, 0x42),
4383*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x11, 0x99, 0x59, 0xDB, 0x48, 0x80, 0x39),
4384*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x75, 0x6E, 0x3D, 0xFC, 0x37, 0x15, 0xF4, 0xBF),
4385*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x17, 0xBB, 0x5B, 0xA6, 0x35, 0x8D, 0x28, 0x20),
4386*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0x1A, 0x3B, 0x2C, 0x8F, 0xD3, 0xAA, 0x2D),
4387*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x55, 0x1C, 0x1A, 0xF8, 0x02, 0xD9, 0x7B, 0x41),
4388*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAF, 0x69, 0xAC, 0xF8, 0x54, 0x31, 0x14, 0xA1),
4389*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x8A, 0xE6, 0xDE, 0x58, 0xB9, 0xC4, 0x7A),
4390*62c56f98SSadaf Ebrahimi };
4391*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_28_Y[] = {
4392*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x57, 0x83, 0x52, 0xFE, 0xF9, 0x7B, 0xE9, 0x1F),
4393*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0xA2, 0x55, 0x46, 0x15, 0x49, 0xC1, 0x3A),
4394*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xBC, 0x5C, 0x91, 0xBD, 0xB9, 0x9C, 0xF4),
4395*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBB, 0xFD, 0xB1, 0x4E, 0x5F, 0x74, 0xEE, 0x53),
4396*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xB1, 0x8B, 0xD8, 0x8B, 0x17, 0x73, 0x1B, 0x96),
4397*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x22, 0x92, 0xD7, 0x67, 0x06, 0xAD, 0x25, 0xCD),
4398*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x01, 0x0F, 0x80, 0x24, 0xE2, 0x27, 0x5F, 0x8B),
4399*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x61, 0x1C, 0xCE, 0xD0, 0x67, 0xCA, 0xD4, 0x0B),
4400*62c56f98SSadaf Ebrahimi };
4401*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_29_X[] = {
4402*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x87, 0xF1, 0xDD, 0x33, 0x66, 0xF9, 0x05, 0xD6),
4403*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1D, 0xE5, 0x6B, 0x79, 0xBD, 0x48, 0x42, 0xAA),
4404*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x14, 0x52, 0xE3, 0x53, 0xB4, 0x50, 0xD4),
4405*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x32, 0x84, 0x6C, 0xCF, 0xDA, 0xB2, 0x20, 0x0A),
4406*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0xD6, 0x1A, 0xE5, 0xE2, 0x29, 0x70, 0xCE),
4407*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x61, 0xFE, 0xBB, 0x21, 0x82, 0xD1, 0xFE),
4408*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x2C, 0xF0, 0x9C, 0x8B, 0x1A, 0x42, 0x30, 0x06),
4409*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0xD6, 0x49, 0x81, 0x92, 0xF1, 0xD0, 0x90),
4410*62c56f98SSadaf Ebrahimi };
4411*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_29_Y[] = {
4412*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x91, 0x93, 0x6A, 0xA6, 0x22, 0xE9, 0xD6),
4413*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x09, 0xDC, 0xC3, 0x69, 0x11, 0x95, 0x7D, 0xEC),
4414*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x1C, 0xA3, 0x9D, 0x87, 0x5E, 0x64, 0x41, 0xA2),
4415*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xBE, 0x87, 0x5A, 0x15, 0xBD, 0x6E, 0x3C, 0x8D),
4416*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD0, 0x8D, 0x50, 0xCC, 0xCF, 0xB7, 0x8F, 0x0B),
4417*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x38, 0x65, 0xCD, 0x31, 0x30, 0xF1, 0x68, 0x13),
4418*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x10, 0x5C, 0x66, 0x67, 0x92, 0x30, 0x57, 0x95),
4419*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x23, 0x9B, 0x01, 0x3D, 0x20, 0x8B, 0xD1, 0x0D),
4420*62c56f98SSadaf Ebrahimi };
4421*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_30_X[] = {
4422*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAB, 0xC0, 0xE6, 0x4F, 0xDE, 0x62, 0xAB, 0xB3),
4423*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA4, 0x48, 0xB3, 0x1C, 0x0F, 0x16, 0x93, 0x45),
4424*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x77, 0x63, 0xBD, 0x1F, 0x16, 0x50, 0x56, 0x98),
4425*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x5D, 0x06, 0xBC, 0xE9, 0x27, 0x1C, 0x9A, 0x7B),
4426*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF8, 0xFE, 0x21, 0xC5, 0x39, 0x55, 0xE1, 0xFD),
4427*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF6, 0xA8, 0xD0, 0x96, 0x0E, 0xB5, 0xB2, 0x84),
4428*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3D, 0xE7, 0x4B, 0xF3, 0x11, 0x0C, 0xC9, 0x5B),
4429*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x43, 0x3A, 0xC4, 0x87, 0x71, 0xEE, 0xFA, 0x18),
4430*62c56f98SSadaf Ebrahimi };
4431*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_30_Y[] = {
4432*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA7, 0x77, 0xEE, 0x81, 0x5E, 0x96, 0xEA, 0x4B),
4433*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xEE, 0xDF, 0xA9, 0xF4, 0x4F, 0x7C, 0xB2, 0x43),
4434*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x9F, 0xD4, 0xDF, 0x35, 0x63, 0x47, 0x25, 0x8A),
4435*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xA5, 0x3D, 0xFF, 0xA4, 0x02, 0xC3, 0x95, 0x11),
4436*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xD5, 0x10, 0x78, 0xD1, 0x2B, 0xB7, 0xBE, 0x0E),
4437*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x0A, 0xE9, 0x57, 0xF9, 0xE0, 0xD8, 0xFC, 0xBC),
4438*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF3, 0xC4, 0x01, 0xD6, 0xB4, 0xE7, 0x78, 0xE2),
4439*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x02, 0x6C, 0xB9, 0x13, 0xA4, 0xE8, 0x6D, 0x6F),
4440*62c56f98SSadaf Ebrahimi };
4441*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_31_X[] = {
4442*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE8, 0xB0, 0xC9, 0xCD, 0xBF, 0xA2, 0x1E, 0x63),
4443*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xDD, 0x4F, 0x86, 0x22, 0x9B, 0xEA, 0xE8, 0xBB),
4444*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x50, 0x46, 0xDF, 0x43, 0xB9, 0x82, 0x2D, 0x0A),
4445*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x07, 0x32, 0xF1, 0x4E, 0x95, 0x41, 0xAE, 0x8E),
4446*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x52, 0x93, 0x26, 0xFC, 0xD3, 0x90, 0xDC, 0xEB),
4447*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x04, 0x05, 0x45, 0xCA, 0xF9, 0x5A, 0x89, 0x93),
4448*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xC5, 0x82, 0x63, 0x4E, 0x55, 0x1D, 0x3A, 0x08),
4449*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x7C, 0x69, 0x52, 0x49, 0xE9, 0xED, 0x57, 0x34),
4450*62c56f98SSadaf Ebrahimi };
4451*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint brainpoolP512r1_T_31_Y[] = {
4452*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x70, 0x64, 0xE9, 0xAC, 0x4C, 0x4A, 0xEA, 0x25),
4453*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xE9, 0xE9, 0x0B, 0x99, 0xE7, 0xF9, 0xA9, 0x2C),
4454*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x24, 0x0C, 0xC1, 0xF4, 0x8D, 0x07, 0xB6, 0xB1),
4455*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xAD, 0x68, 0xFA, 0x35, 0xE4, 0x9E, 0xAE, 0xD9),
4456*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xF0, 0x2D, 0x1A, 0x13, 0x8E, 0x02, 0xE2, 0x63),
4457*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x27, 0x38, 0x28, 0x86, 0x46, 0x7B, 0x3A, 0xE1),
4458*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x3F, 0x4C, 0x64, 0x59, 0x0A, 0xF9, 0x02, 0xC4),
4459*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x41, 0x4F, 0x23, 0xA2, 0xC3, 0xD5, 0xEF, 0x42),
4460*62c56f98SSadaf Ebrahimi };
4461*62c56f98SSadaf Ebrahimi static const mbedtls_ecp_point brainpoolP512r1_T[32] = {
4462*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z1(brainpoolP512r1_T_0_X, brainpoolP512r1_T_0_Y),
4463*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_1_X, brainpoolP512r1_T_1_Y),
4464*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_2_X, brainpoolP512r1_T_2_Y),
4465*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_3_X, brainpoolP512r1_T_3_Y),
4466*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_4_X, brainpoolP512r1_T_4_Y),
4467*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_5_X, brainpoolP512r1_T_5_Y),
4468*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_6_X, brainpoolP512r1_T_6_Y),
4469*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_7_X, brainpoolP512r1_T_7_Y),
4470*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_8_X, brainpoolP512r1_T_8_Y),
4471*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_9_X, brainpoolP512r1_T_9_Y),
4472*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_10_X, brainpoolP512r1_T_10_Y),
4473*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_11_X, brainpoolP512r1_T_11_Y),
4474*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_12_X, brainpoolP512r1_T_12_Y),
4475*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_13_X, brainpoolP512r1_T_13_Y),
4476*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_14_X, brainpoolP512r1_T_14_Y),
4477*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_15_X, brainpoolP512r1_T_15_Y),
4478*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_16_X, brainpoolP512r1_T_16_Y),
4479*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_17_X, brainpoolP512r1_T_17_Y),
4480*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_18_X, brainpoolP512r1_T_18_Y),
4481*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_19_X, brainpoolP512r1_T_19_Y),
4482*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_20_X, brainpoolP512r1_T_20_Y),
4483*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_21_X, brainpoolP512r1_T_21_Y),
4484*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_22_X, brainpoolP512r1_T_22_Y),
4485*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_23_X, brainpoolP512r1_T_23_Y),
4486*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_24_X, brainpoolP512r1_T_24_Y),
4487*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_25_X, brainpoolP512r1_T_25_Y),
4488*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_26_X, brainpoolP512r1_T_26_Y),
4489*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_27_X, brainpoolP512r1_T_27_Y),
4490*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_28_X, brainpoolP512r1_T_28_Y),
4491*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_29_X, brainpoolP512r1_T_29_Y),
4492*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_30_X, brainpoolP512r1_T_30_Y),
4493*62c56f98SSadaf Ebrahimi     ECP_POINT_INIT_XY_Z0(brainpoolP512r1_T_31_X, brainpoolP512r1_T_31_Y),
4494*62c56f98SSadaf Ebrahimi };
4495*62c56f98SSadaf Ebrahimi #else
4496*62c56f98SSadaf Ebrahimi #define brainpoolP512r1_T NULL
4497*62c56f98SSadaf Ebrahimi #endif
4498*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
4499*62c56f98SSadaf Ebrahimi 
4500*62c56f98SSadaf Ebrahimi 
4501*62c56f98SSadaf Ebrahimi #if defined(ECP_LOAD_GROUP) || defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) || \
4502*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4503*62c56f98SSadaf Ebrahimi /*
4504*62c56f98SSadaf Ebrahimi  * Create an MPI from embedded constants
4505*62c56f98SSadaf Ebrahimi  * (assumes len is an exact multiple of sizeof(mbedtls_mpi_uint) and
4506*62c56f98SSadaf Ebrahimi  * len < 1048576)
4507*62c56f98SSadaf Ebrahimi  */
ecp_mpi_load(mbedtls_mpi * X,const mbedtls_mpi_uint * p,size_t len)4508*62c56f98SSadaf Ebrahimi static inline void ecp_mpi_load(mbedtls_mpi *X, const mbedtls_mpi_uint *p, size_t len)
4509*62c56f98SSadaf Ebrahimi {
4510*62c56f98SSadaf Ebrahimi     X->s = 1;
4511*62c56f98SSadaf Ebrahimi     X->n = (unsigned short) (len / sizeof(mbedtls_mpi_uint));
4512*62c56f98SSadaf Ebrahimi     X->p = (mbedtls_mpi_uint *) p;
4513*62c56f98SSadaf Ebrahimi }
4514*62c56f98SSadaf Ebrahimi #endif
4515*62c56f98SSadaf Ebrahimi 
4516*62c56f98SSadaf Ebrahimi #if defined(ECP_LOAD_GROUP)
4517*62c56f98SSadaf Ebrahimi /*
4518*62c56f98SSadaf Ebrahimi  * Set an MPI to static value 1
4519*62c56f98SSadaf Ebrahimi  */
ecp_mpi_set1(mbedtls_mpi * X)4520*62c56f98SSadaf Ebrahimi static inline void ecp_mpi_set1(mbedtls_mpi *X)
4521*62c56f98SSadaf Ebrahimi {
4522*62c56f98SSadaf Ebrahimi     X->s = 1;
4523*62c56f98SSadaf Ebrahimi     X->n = 1;
4524*62c56f98SSadaf Ebrahimi     X->p = mpi_one;
4525*62c56f98SSadaf Ebrahimi }
4526*62c56f98SSadaf Ebrahimi 
4527*62c56f98SSadaf Ebrahimi /*
4528*62c56f98SSadaf Ebrahimi  * Make group available from embedded constants
4529*62c56f98SSadaf Ebrahimi  */
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)4530*62c56f98SSadaf Ebrahimi static int ecp_group_load(mbedtls_ecp_group *grp,
4531*62c56f98SSadaf Ebrahimi                           const mbedtls_mpi_uint *p,  size_t plen,
4532*62c56f98SSadaf Ebrahimi                           const mbedtls_mpi_uint *a,  size_t alen,
4533*62c56f98SSadaf Ebrahimi                           const mbedtls_mpi_uint *b,  size_t blen,
4534*62c56f98SSadaf Ebrahimi                           const mbedtls_mpi_uint *gx, size_t gxlen,
4535*62c56f98SSadaf Ebrahimi                           const mbedtls_mpi_uint *gy, size_t gylen,
4536*62c56f98SSadaf Ebrahimi                           const mbedtls_mpi_uint *n,  size_t nlen,
4537*62c56f98SSadaf Ebrahimi                           const mbedtls_ecp_point *T)
4538*62c56f98SSadaf Ebrahimi {
4539*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->P, p, plen);
4540*62c56f98SSadaf Ebrahimi     if (a != NULL) {
4541*62c56f98SSadaf Ebrahimi         ecp_mpi_load(&grp->A, a, alen);
4542*62c56f98SSadaf Ebrahimi     }
4543*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->B, b, blen);
4544*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->N, n, nlen);
4545*62c56f98SSadaf Ebrahimi 
4546*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->G.X, gx, gxlen);
4547*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->G.Y, gy, gylen);
4548*62c56f98SSadaf Ebrahimi     ecp_mpi_set1(&grp->G.Z);
4549*62c56f98SSadaf Ebrahimi 
4550*62c56f98SSadaf Ebrahimi     grp->pbits = mbedtls_mpi_bitlen(&grp->P);
4551*62c56f98SSadaf Ebrahimi     grp->nbits = mbedtls_mpi_bitlen(&grp->N);
4552*62c56f98SSadaf Ebrahimi 
4553*62c56f98SSadaf Ebrahimi     grp->h = 1;
4554*62c56f98SSadaf Ebrahimi 
4555*62c56f98SSadaf Ebrahimi     grp->T = (mbedtls_ecp_point *) T;
4556*62c56f98SSadaf Ebrahimi     /*
4557*62c56f98SSadaf Ebrahimi      * Set T_size to 0 to prevent T free by mbedtls_ecp_group_free.
4558*62c56f98SSadaf Ebrahimi      */
4559*62c56f98SSadaf Ebrahimi     grp->T_size = 0;
4560*62c56f98SSadaf Ebrahimi 
4561*62c56f98SSadaf Ebrahimi     return 0;
4562*62c56f98SSadaf Ebrahimi }
4563*62c56f98SSadaf Ebrahimi #endif /* ECP_LOAD_GROUP */
4564*62c56f98SSadaf Ebrahimi 
4565*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_NIST_OPTIM)
4566*62c56f98SSadaf Ebrahimi /* Forward declarations */
4567*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
4568*62c56f98SSadaf Ebrahimi static int ecp_mod_p192(mbedtls_mpi *);
4569*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4570*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p192_raw(mbedtls_mpi_uint *Np, size_t Nn);
4571*62c56f98SSadaf Ebrahimi #endif
4572*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
4573*62c56f98SSadaf Ebrahimi static int ecp_mod_p224(mbedtls_mpi *);
4574*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4575*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p224_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4576*62c56f98SSadaf Ebrahimi #endif
4577*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
4578*62c56f98SSadaf Ebrahimi static int ecp_mod_p256(mbedtls_mpi *);
4579*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4580*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p256_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4581*62c56f98SSadaf Ebrahimi #endif
4582*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
4583*62c56f98SSadaf Ebrahimi static int ecp_mod_p384(mbedtls_mpi *);
4584*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4585*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p384_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4586*62c56f98SSadaf Ebrahimi #endif
4587*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
4588*62c56f98SSadaf Ebrahimi static int ecp_mod_p521(mbedtls_mpi *);
4589*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4590*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p521_raw(mbedtls_mpi_uint *N_p, size_t N_n);
4591*62c56f98SSadaf Ebrahimi #endif
4592*62c56f98SSadaf Ebrahimi 
4593*62c56f98SSadaf Ebrahimi #define NIST_MODP(P)      grp->modp = ecp_mod_ ## P;
4594*62c56f98SSadaf Ebrahimi #else
4595*62c56f98SSadaf Ebrahimi #define NIST_MODP(P)
4596*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_NIST_OPTIM */
4597*62c56f98SSadaf Ebrahimi 
4598*62c56f98SSadaf Ebrahimi /* Additional forward declarations */
4599*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
4600*62c56f98SSadaf Ebrahimi static int ecp_mod_p255(mbedtls_mpi *);
4601*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4602*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p255_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4603*62c56f98SSadaf Ebrahimi #endif
4604*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4605*62c56f98SSadaf Ebrahimi static int ecp_mod_p448(mbedtls_mpi *);
4606*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4607*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p448_raw(mbedtls_mpi_uint *, size_t);
4608*62c56f98SSadaf Ebrahimi #endif
4609*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
4610*62c56f98SSadaf Ebrahimi static int ecp_mod_p192k1(mbedtls_mpi *);
4611*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4612*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p192k1_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4613*62c56f98SSadaf Ebrahimi #endif
4614*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
4615*62c56f98SSadaf Ebrahimi static int ecp_mod_p224k1(mbedtls_mpi *);
4616*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4617*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p224k1_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4618*62c56f98SSadaf Ebrahimi #endif
4619*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
4620*62c56f98SSadaf Ebrahimi static int ecp_mod_p256k1(mbedtls_mpi *);
4621*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
4622*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p256k1_raw(mbedtls_mpi_uint *X, size_t X_limbs);
4623*62c56f98SSadaf Ebrahimi #endif
4624*62c56f98SSadaf Ebrahimi 
4625*62c56f98SSadaf Ebrahimi #if defined(ECP_LOAD_GROUP)
4626*62c56f98SSadaf Ebrahimi #define LOAD_GROUP_A(G)   ecp_group_load(grp,            \
4627*62c56f98SSadaf Ebrahimi                                          G ## _p,  sizeof(G ## _p),   \
4628*62c56f98SSadaf Ebrahimi                                          G ## _a,  sizeof(G ## _a),   \
4629*62c56f98SSadaf Ebrahimi                                          G ## _b,  sizeof(G ## _b),   \
4630*62c56f98SSadaf Ebrahimi                                          G ## _gx, sizeof(G ## _gx),   \
4631*62c56f98SSadaf Ebrahimi                                          G ## _gy, sizeof(G ## _gy),   \
4632*62c56f98SSadaf Ebrahimi                                          G ## _n,  sizeof(G ## _n),   \
4633*62c56f98SSadaf Ebrahimi                                          G ## _T                         \
4634*62c56f98SSadaf Ebrahimi                                          )
4635*62c56f98SSadaf Ebrahimi 
4636*62c56f98SSadaf Ebrahimi #define LOAD_GROUP(G)     ecp_group_load(grp,            \
4637*62c56f98SSadaf Ebrahimi                                          G ## _p,  sizeof(G ## _p),   \
4638*62c56f98SSadaf Ebrahimi                                          NULL,     0,                    \
4639*62c56f98SSadaf Ebrahimi                                          G ## _b,  sizeof(G ## _b),   \
4640*62c56f98SSadaf Ebrahimi                                          G ## _gx, sizeof(G ## _gx),   \
4641*62c56f98SSadaf Ebrahimi                                          G ## _gy, sizeof(G ## _gy),   \
4642*62c56f98SSadaf Ebrahimi                                          G ## _n,  sizeof(G ## _n),   \
4643*62c56f98SSadaf Ebrahimi                                          G ## _T                         \
4644*62c56f98SSadaf Ebrahimi                                          )
4645*62c56f98SSadaf Ebrahimi #endif /* ECP_LOAD_GROUP */
4646*62c56f98SSadaf Ebrahimi 
4647*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
4648*62c56f98SSadaf Ebrahimi /* Constants used by ecp_use_curve25519() */
4649*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_sint curve25519_a24 = 0x01DB42;
4650*62c56f98SSadaf Ebrahimi 
4651*62c56f98SSadaf Ebrahimi /* P = 2^255 - 19 */
4652*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint curve25519_p[] = {
4653*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0xED, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4654*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4655*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4656*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7F)
4657*62c56f98SSadaf Ebrahimi };
4658*62c56f98SSadaf Ebrahimi 
4659*62c56f98SSadaf Ebrahimi /* N = 2^252 + 27742317777372353535851937790883648493 */
4660*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint curve25519_n[] = {
4661*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XED, 0XD3, 0XF5, 0X5C, 0X1A, 0X63, 0X12, 0X58),
4662*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XD6, 0X9C, 0XF7, 0XA2, 0XDE, 0XF9, 0XDE, 0X14),
4663*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0X00, 0X00, 0X00, 0X00, 0x00, 0x00, 0x00, 0x00),
4664*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10)
4665*62c56f98SSadaf Ebrahimi };
4666*62c56f98SSadaf Ebrahimi 
4667*62c56f98SSadaf Ebrahimi /*
4668*62c56f98SSadaf Ebrahimi  * Specialized function for creating the Curve25519 group
4669*62c56f98SSadaf Ebrahimi  */
ecp_use_curve25519(mbedtls_ecp_group * grp)4670*62c56f98SSadaf Ebrahimi static int ecp_use_curve25519(mbedtls_ecp_group *grp)
4671*62c56f98SSadaf Ebrahimi {
4672*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
4673*62c56f98SSadaf Ebrahimi 
4674*62c56f98SSadaf Ebrahimi     /* Actually ( A + 2 ) / 4 */
4675*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->A, curve25519_a24));
4676*62c56f98SSadaf Ebrahimi 
4677*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->P, curve25519_p, sizeof(curve25519_p));
4678*62c56f98SSadaf Ebrahimi 
4679*62c56f98SSadaf Ebrahimi     grp->pbits = mbedtls_mpi_bitlen(&grp->P);
4680*62c56f98SSadaf Ebrahimi 
4681*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->N, curve25519_n, sizeof(curve25519_n));
4682*62c56f98SSadaf Ebrahimi 
4683*62c56f98SSadaf Ebrahimi     /* Y intentionally not set, since we use x/z coordinates.
4684*62c56f98SSadaf Ebrahimi      * This is used as a marker to identify Montgomery curves! */
4685*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.X, 9));
4686*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.Z, 1));
4687*62c56f98SSadaf Ebrahimi     mbedtls_mpi_free(&grp->G.Y);
4688*62c56f98SSadaf Ebrahimi 
4689*62c56f98SSadaf Ebrahimi     /* Actually, the required msb for private keys */
4690*62c56f98SSadaf Ebrahimi     grp->nbits = 254;
4691*62c56f98SSadaf Ebrahimi 
4692*62c56f98SSadaf Ebrahimi cleanup:
4693*62c56f98SSadaf Ebrahimi     if (ret != 0) {
4694*62c56f98SSadaf Ebrahimi         mbedtls_ecp_group_free(grp);
4695*62c56f98SSadaf Ebrahimi     }
4696*62c56f98SSadaf Ebrahimi 
4697*62c56f98SSadaf Ebrahimi     return ret;
4698*62c56f98SSadaf Ebrahimi }
4699*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
4700*62c56f98SSadaf Ebrahimi 
4701*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4702*62c56f98SSadaf Ebrahimi /* Constants used by ecp_use_curve448() */
4703*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_sint curve448_a24 = 0x98AA;
4704*62c56f98SSadaf Ebrahimi 
4705*62c56f98SSadaf Ebrahimi /* P = 2^448 - 2^224 - 1 */
4706*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint curve448_p[] = {
4707*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4708*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4709*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4710*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFF, 0XFF, 0XFF),
4711*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4712*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4713*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4714*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00)
4715*62c56f98SSadaf Ebrahimi };
4716*62c56f98SSadaf Ebrahimi 
4717*62c56f98SSadaf Ebrahimi /* N = 2^446 - 13818066809895115352007386748515426880336692474882178609894547503885 */
4718*62c56f98SSadaf Ebrahimi static const mbedtls_mpi_uint curve448_n[] = {
4719*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XF3, 0X44, 0X58, 0XAB, 0X92, 0XC2, 0X78, 0X23),
4720*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0X55, 0X8F, 0XC5, 0X8D, 0X72, 0XC2, 0X6C, 0X21),
4721*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0X90, 0X36, 0XD6, 0XAE, 0X49, 0XDB, 0X4E, 0XC4),
4722*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XE9, 0X23, 0XCA, 0X7C, 0XFF, 0XFF, 0XFF, 0XFF),
4723*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4724*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
4725*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X3F),
4726*62c56f98SSadaf Ebrahimi     MBEDTLS_BYTES_TO_T_UINT_8(0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00)
4727*62c56f98SSadaf Ebrahimi };
4728*62c56f98SSadaf Ebrahimi 
4729*62c56f98SSadaf Ebrahimi /*
4730*62c56f98SSadaf Ebrahimi  * Specialized function for creating the Curve448 group
4731*62c56f98SSadaf Ebrahimi  */
ecp_use_curve448(mbedtls_ecp_group * grp)4732*62c56f98SSadaf Ebrahimi static int ecp_use_curve448(mbedtls_ecp_group *grp)
4733*62c56f98SSadaf Ebrahimi {
4734*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
4735*62c56f98SSadaf Ebrahimi 
4736*62c56f98SSadaf Ebrahimi     /* Actually ( A + 2 ) / 4 */
4737*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->A, curve448_a24));
4738*62c56f98SSadaf Ebrahimi 
4739*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->P, curve448_p, sizeof(curve448_p));
4740*62c56f98SSadaf Ebrahimi     grp->pbits = mbedtls_mpi_bitlen(&grp->P);
4741*62c56f98SSadaf Ebrahimi 
4742*62c56f98SSadaf Ebrahimi     /* Y intentionally not set, since we use x/z coordinates.
4743*62c56f98SSadaf Ebrahimi      * This is used as a marker to identify Montgomery curves! */
4744*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.X, 5));
4745*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&grp->G.Z, 1));
4746*62c56f98SSadaf Ebrahimi     mbedtls_mpi_free(&grp->G.Y);
4747*62c56f98SSadaf Ebrahimi 
4748*62c56f98SSadaf Ebrahimi     ecp_mpi_load(&grp->N, curve448_n, sizeof(curve448_n));
4749*62c56f98SSadaf Ebrahimi 
4750*62c56f98SSadaf Ebrahimi     /* Actually, the required msb for private keys */
4751*62c56f98SSadaf Ebrahimi     grp->nbits = 447;
4752*62c56f98SSadaf Ebrahimi 
4753*62c56f98SSadaf Ebrahimi cleanup:
4754*62c56f98SSadaf Ebrahimi     if (ret != 0) {
4755*62c56f98SSadaf Ebrahimi         mbedtls_ecp_group_free(grp);
4756*62c56f98SSadaf Ebrahimi     }
4757*62c56f98SSadaf Ebrahimi 
4758*62c56f98SSadaf Ebrahimi     return ret;
4759*62c56f98SSadaf Ebrahimi }
4760*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
4761*62c56f98SSadaf Ebrahimi 
4762*62c56f98SSadaf Ebrahimi /*
4763*62c56f98SSadaf Ebrahimi  * Set a group using well-known domain parameters
4764*62c56f98SSadaf Ebrahimi  */
mbedtls_ecp_group_load(mbedtls_ecp_group * grp,mbedtls_ecp_group_id id)4765*62c56f98SSadaf Ebrahimi int mbedtls_ecp_group_load(mbedtls_ecp_group *grp, mbedtls_ecp_group_id id)
4766*62c56f98SSadaf Ebrahimi {
4767*62c56f98SSadaf Ebrahimi     ECP_VALIDATE_RET(grp != NULL);
4768*62c56f98SSadaf Ebrahimi     mbedtls_ecp_group_free(grp);
4769*62c56f98SSadaf Ebrahimi 
4770*62c56f98SSadaf Ebrahimi     mbedtls_ecp_group_init(grp);
4771*62c56f98SSadaf Ebrahimi 
4772*62c56f98SSadaf Ebrahimi     grp->id = id;
4773*62c56f98SSadaf Ebrahimi 
4774*62c56f98SSadaf Ebrahimi     switch (id) {
4775*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
4776*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP192R1:
4777*62c56f98SSadaf Ebrahimi             NIST_MODP(p192);
4778*62c56f98SSadaf Ebrahimi             return LOAD_GROUP(secp192r1);
4779*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
4780*62c56f98SSadaf Ebrahimi 
4781*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
4782*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP224R1:
4783*62c56f98SSadaf Ebrahimi             NIST_MODP(p224);
4784*62c56f98SSadaf Ebrahimi             return LOAD_GROUP(secp224r1);
4785*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
4786*62c56f98SSadaf Ebrahimi 
4787*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
4788*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP256R1:
4789*62c56f98SSadaf Ebrahimi             NIST_MODP(p256);
4790*62c56f98SSadaf Ebrahimi             return LOAD_GROUP(secp256r1);
4791*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
4792*62c56f98SSadaf Ebrahimi 
4793*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
4794*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP384R1:
4795*62c56f98SSadaf Ebrahimi             NIST_MODP(p384);
4796*62c56f98SSadaf Ebrahimi             return LOAD_GROUP(secp384r1);
4797*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
4798*62c56f98SSadaf Ebrahimi 
4799*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
4800*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP521R1:
4801*62c56f98SSadaf Ebrahimi             NIST_MODP(p521);
4802*62c56f98SSadaf Ebrahimi             return LOAD_GROUP(secp521r1);
4803*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
4804*62c56f98SSadaf Ebrahimi 
4805*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
4806*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP192K1:
4807*62c56f98SSadaf Ebrahimi             grp->modp = ecp_mod_p192k1;
4808*62c56f98SSadaf Ebrahimi             return LOAD_GROUP_A(secp192k1);
4809*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
4810*62c56f98SSadaf Ebrahimi 
4811*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
4812*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP224K1:
4813*62c56f98SSadaf Ebrahimi             grp->modp = ecp_mod_p224k1;
4814*62c56f98SSadaf Ebrahimi             return LOAD_GROUP_A(secp224k1);
4815*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
4816*62c56f98SSadaf Ebrahimi 
4817*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
4818*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP256K1:
4819*62c56f98SSadaf Ebrahimi             grp->modp = ecp_mod_p256k1;
4820*62c56f98SSadaf Ebrahimi             return LOAD_GROUP_A(secp256k1);
4821*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
4822*62c56f98SSadaf Ebrahimi 
4823*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
4824*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_BP256R1:
4825*62c56f98SSadaf Ebrahimi             return LOAD_GROUP_A(brainpoolP256r1);
4826*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
4827*62c56f98SSadaf Ebrahimi 
4828*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
4829*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_BP384R1:
4830*62c56f98SSadaf Ebrahimi             return LOAD_GROUP_A(brainpoolP384r1);
4831*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
4832*62c56f98SSadaf Ebrahimi 
4833*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
4834*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_BP512R1:
4835*62c56f98SSadaf Ebrahimi             return LOAD_GROUP_A(brainpoolP512r1);
4836*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
4837*62c56f98SSadaf Ebrahimi 
4838*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
4839*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_CURVE25519:
4840*62c56f98SSadaf Ebrahimi             grp->modp = ecp_mod_p255;
4841*62c56f98SSadaf Ebrahimi             return ecp_use_curve25519(grp);
4842*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
4843*62c56f98SSadaf Ebrahimi 
4844*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
4845*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_CURVE448:
4846*62c56f98SSadaf Ebrahimi             grp->modp = ecp_mod_p448;
4847*62c56f98SSadaf Ebrahimi             return ecp_use_curve448(grp);
4848*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
4849*62c56f98SSadaf Ebrahimi 
4850*62c56f98SSadaf Ebrahimi         default:
4851*62c56f98SSadaf Ebrahimi             grp->id = MBEDTLS_ECP_DP_NONE;
4852*62c56f98SSadaf Ebrahimi             return MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE;
4853*62c56f98SSadaf Ebrahimi     }
4854*62c56f98SSadaf Ebrahimi }
4855*62c56f98SSadaf Ebrahimi 
4856*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_NIST_OPTIM)
4857*62c56f98SSadaf Ebrahimi /*
4858*62c56f98SSadaf Ebrahimi  * Fast reduction modulo the primes used by the NIST curves.
4859*62c56f98SSadaf Ebrahimi  *
4860*62c56f98SSadaf Ebrahimi  * These functions are critical for speed, but not needed for correct
4861*62c56f98SSadaf Ebrahimi  * operations. So, we make the choice to heavily rely on the internals of our
4862*62c56f98SSadaf Ebrahimi  * bignum library, which creates a tight coupling between these functions and
4863*62c56f98SSadaf Ebrahimi  * our MPI implementation.  However, the coupling between the ECP module and
4864*62c56f98SSadaf Ebrahimi  * MPI remains loose, since these functions can be deactivated at will.
4865*62c56f98SSadaf Ebrahimi  */
4866*62c56f98SSadaf Ebrahimi 
4867*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
4868*62c56f98SSadaf Ebrahimi /*
4869*62c56f98SSadaf Ebrahimi  * Compared to the way things are presented in FIPS 186-3 D.2,
4870*62c56f98SSadaf Ebrahimi  * we proceed in columns, from right (least significant chunk) to left,
4871*62c56f98SSadaf Ebrahimi  * adding chunks to N in place, and keeping a carry for the next chunk.
4872*62c56f98SSadaf Ebrahimi  * This avoids moving things around in memory, and uselessly adding zeros,
4873*62c56f98SSadaf Ebrahimi  * compared to the more straightforward, line-oriented approach.
4874*62c56f98SSadaf Ebrahimi  *
4875*62c56f98SSadaf Ebrahimi  * For this prime we need to handle data in chunks of 64 bits.
4876*62c56f98SSadaf Ebrahimi  * Since this is always a multiple of our basic mbedtls_mpi_uint, we can
4877*62c56f98SSadaf Ebrahimi  * use a mbedtls_mpi_uint * to designate such a chunk, and small loops to handle it.
4878*62c56f98SSadaf Ebrahimi  */
4879*62c56f98SSadaf Ebrahimi 
4880*62c56f98SSadaf Ebrahimi /* Add 64-bit chunks (dst += src) and update carry */
add64(mbedtls_mpi_uint * dst,mbedtls_mpi_uint * src,mbedtls_mpi_uint * carry)4881*62c56f98SSadaf Ebrahimi static inline void add64(mbedtls_mpi_uint *dst, mbedtls_mpi_uint *src, mbedtls_mpi_uint *carry)
4882*62c56f98SSadaf Ebrahimi {
4883*62c56f98SSadaf Ebrahimi     unsigned char i;
4884*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint c = 0;
4885*62c56f98SSadaf Ebrahimi     for (i = 0; i < 8 / sizeof(mbedtls_mpi_uint); i++, dst++, src++) {
4886*62c56f98SSadaf Ebrahimi         *dst += c;      c  = (*dst < c);
4887*62c56f98SSadaf Ebrahimi         *dst += *src;   c += (*dst < *src);
4888*62c56f98SSadaf Ebrahimi     }
4889*62c56f98SSadaf Ebrahimi     *carry += c;
4890*62c56f98SSadaf Ebrahimi }
4891*62c56f98SSadaf Ebrahimi 
4892*62c56f98SSadaf Ebrahimi /* Add carry to a 64-bit chunk and update carry */
carry64(mbedtls_mpi_uint * dst,mbedtls_mpi_uint * carry)4893*62c56f98SSadaf Ebrahimi static inline void carry64(mbedtls_mpi_uint *dst, mbedtls_mpi_uint *carry)
4894*62c56f98SSadaf Ebrahimi {
4895*62c56f98SSadaf Ebrahimi     unsigned char i;
4896*62c56f98SSadaf Ebrahimi     for (i = 0; i < 8 / sizeof(mbedtls_mpi_uint); i++, dst++) {
4897*62c56f98SSadaf Ebrahimi         *dst += *carry;
4898*62c56f98SSadaf Ebrahimi         *carry  = (*dst < *carry);
4899*62c56f98SSadaf Ebrahimi     }
4900*62c56f98SSadaf Ebrahimi }
4901*62c56f98SSadaf Ebrahimi 
4902*62c56f98SSadaf Ebrahimi #define WIDTH       8 / sizeof(mbedtls_mpi_uint)
4903*62c56f98SSadaf Ebrahimi #define A(i)        Np + (i) * WIDTH
4904*62c56f98SSadaf Ebrahimi #define ADD(i)      add64(p, A(i), &c)
4905*62c56f98SSadaf Ebrahimi #define NEXT        p += WIDTH; carry64(p, &c)
4906*62c56f98SSadaf Ebrahimi #define LAST        p += WIDTH; do *p = 0; while (++p < end)
4907*62c56f98SSadaf Ebrahimi #define RESET       last_carry[0] = c; c = 0; p = Np
4908*62c56f98SSadaf Ebrahimi #define ADD_LAST    add64(p, last_carry, &c)
4909*62c56f98SSadaf Ebrahimi 
4910*62c56f98SSadaf Ebrahimi /*
4911*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p192 (FIPS 186-3 D.2.1)
4912*62c56f98SSadaf Ebrahimi  */
ecp_mod_p192(mbedtls_mpi * N)4913*62c56f98SSadaf Ebrahimi static int ecp_mod_p192(mbedtls_mpi *N)
4914*62c56f98SSadaf Ebrahimi {
4915*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
4916*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(192) * 2;
4917*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
4918*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p192_raw(N->p, expected_width);
4919*62c56f98SSadaf Ebrahimi 
4920*62c56f98SSadaf Ebrahimi cleanup:
4921*62c56f98SSadaf Ebrahimi     return ret;
4922*62c56f98SSadaf Ebrahimi }
4923*62c56f98SSadaf Ebrahimi 
4924*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p192_raw(mbedtls_mpi_uint * Np,size_t Nn)4925*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p192_raw(mbedtls_mpi_uint *Np, size_t Nn)
4926*62c56f98SSadaf Ebrahimi {
4927*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint c = 0, last_carry[WIDTH] = { 0 };
4928*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *p, *end;
4929*62c56f98SSadaf Ebrahimi 
4930*62c56f98SSadaf Ebrahimi     if (Nn != BITS_TO_LIMBS(192) * 2) {
4931*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
4932*62c56f98SSadaf Ebrahimi     }
4933*62c56f98SSadaf Ebrahimi 
4934*62c56f98SSadaf Ebrahimi     p = Np;
4935*62c56f98SSadaf Ebrahimi     end = p + Nn;
4936*62c56f98SSadaf Ebrahimi 
4937*62c56f98SSadaf Ebrahimi     ADD(3); ADD(5);         NEXT;   // A0 += A3 + A5
4938*62c56f98SSadaf Ebrahimi     ADD(3); ADD(4); ADD(5); NEXT;   // A1 += A3 + A4 + A5
4939*62c56f98SSadaf Ebrahimi     ADD(4); ADD(5);                 // A2 += A4 + A5
4940*62c56f98SSadaf Ebrahimi 
4941*62c56f98SSadaf Ebrahimi     RESET;
4942*62c56f98SSadaf Ebrahimi 
4943*62c56f98SSadaf Ebrahimi     /* Use the reduction for the carry as well:
4944*62c56f98SSadaf Ebrahimi      * 2^192 * last_carry = 2^64 * last_carry + last_carry mod P192
4945*62c56f98SSadaf Ebrahimi      * It can generate a carry. */
4946*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                 // A0 += last_carry
4947*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                 // A1 += last_carry
4948*62c56f98SSadaf Ebrahimi                                     // A2 += carry
4949*62c56f98SSadaf Ebrahimi 
4950*62c56f98SSadaf Ebrahimi     RESET;
4951*62c56f98SSadaf Ebrahimi 
4952*62c56f98SSadaf Ebrahimi     /* Use the reduction for the carry as well:
4953*62c56f98SSadaf Ebrahimi      * 2^192 * last_carry = 2^64 * last_carry + last_carry mod P192
4954*62c56f98SSadaf Ebrahimi      */
4955*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                 // A0 += last_carry
4956*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                 // A1 += last_carry
4957*62c56f98SSadaf Ebrahimi                                     // A2 += carry
4958*62c56f98SSadaf Ebrahimi 
4959*62c56f98SSadaf Ebrahimi     LAST;
4960*62c56f98SSadaf Ebrahimi 
4961*62c56f98SSadaf Ebrahimi     return 0;
4962*62c56f98SSadaf Ebrahimi }
4963*62c56f98SSadaf Ebrahimi 
4964*62c56f98SSadaf Ebrahimi #undef WIDTH
4965*62c56f98SSadaf Ebrahimi #undef A
4966*62c56f98SSadaf Ebrahimi #undef ADD
4967*62c56f98SSadaf Ebrahimi #undef NEXT
4968*62c56f98SSadaf Ebrahimi #undef LAST
4969*62c56f98SSadaf Ebrahimi #undef RESET
4970*62c56f98SSadaf Ebrahimi #undef ADD_LAST
4971*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
4972*62c56f98SSadaf Ebrahimi 
4973*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) ||   \
4974*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) ||   \
4975*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
4976*62c56f98SSadaf Ebrahimi 
4977*62c56f98SSadaf Ebrahimi /*
4978*62c56f98SSadaf Ebrahimi  * The reader is advised to first understand ecp_mod_p192() since the same
4979*62c56f98SSadaf Ebrahimi  * general structure is used here, but with additional complications:
4980*62c56f98SSadaf Ebrahimi  * (1) chunks of 32 bits, and (2) subtractions.
4981*62c56f98SSadaf Ebrahimi  */
4982*62c56f98SSadaf Ebrahimi 
4983*62c56f98SSadaf Ebrahimi /*
4984*62c56f98SSadaf Ebrahimi  * For these primes, we need to handle data in chunks of 32 bits.
4985*62c56f98SSadaf Ebrahimi  * This makes it more complicated if we use 64 bits limbs in MPI,
4986*62c56f98SSadaf Ebrahimi  * which prevents us from using a uniform access method as for p192.
4987*62c56f98SSadaf Ebrahimi  *
4988*62c56f98SSadaf Ebrahimi  * So, we define a mini abstraction layer to access 32 bit chunks,
4989*62c56f98SSadaf Ebrahimi  * load them in 'cur' for work, and store them back from 'cur' when done.
4990*62c56f98SSadaf Ebrahimi  *
4991*62c56f98SSadaf Ebrahimi  * While at it, also define the size of N in terms of 32-bit chunks.
4992*62c56f98SSadaf Ebrahimi  */
4993*62c56f98SSadaf Ebrahimi #define LOAD32      cur = A(i);
4994*62c56f98SSadaf Ebrahimi 
4995*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_HAVE_INT32)  /* 32 bit */
4996*62c56f98SSadaf Ebrahimi 
4997*62c56f98SSadaf Ebrahimi #define MAX32       X_limbs
4998*62c56f98SSadaf Ebrahimi #define A(j)        X[j]
4999*62c56f98SSadaf Ebrahimi #define STORE32     X[i] = (mbedtls_mpi_uint) cur;
5000*62c56f98SSadaf Ebrahimi #define STORE0      X[i] = 0;
5001*62c56f98SSadaf Ebrahimi 
5002*62c56f98SSadaf Ebrahimi #else /* 64 bit */
5003*62c56f98SSadaf Ebrahimi 
5004*62c56f98SSadaf Ebrahimi #define MAX32   X_limbs * 2
5005*62c56f98SSadaf Ebrahimi #define A(j)                                                \
5006*62c56f98SSadaf Ebrahimi     (j) % 2 ?                                               \
5007*62c56f98SSadaf Ebrahimi     (uint32_t) (X[(j) / 2] >> 32) :                         \
5008*62c56f98SSadaf Ebrahimi     (uint32_t) (X[(j) / 2])
5009*62c56f98SSadaf Ebrahimi #define STORE32                                             \
5010*62c56f98SSadaf Ebrahimi     if (i % 2) {                                            \
5011*62c56f98SSadaf Ebrahimi         X[i/2] &= 0x00000000FFFFFFFF;                       \
5012*62c56f98SSadaf Ebrahimi         X[i/2] |= (uint64_t) (cur) << 32;                   \
5013*62c56f98SSadaf Ebrahimi     } else {                                                \
5014*62c56f98SSadaf Ebrahimi         X[i/2] &= 0xFFFFFFFF00000000;                       \
5015*62c56f98SSadaf Ebrahimi         X[i/2] |= (uint32_t) cur;                           \
5016*62c56f98SSadaf Ebrahimi     }
5017*62c56f98SSadaf Ebrahimi 
5018*62c56f98SSadaf Ebrahimi #define STORE0                                              \
5019*62c56f98SSadaf Ebrahimi     if (i % 2) {                                            \
5020*62c56f98SSadaf Ebrahimi         X[i/2] &= 0x00000000FFFFFFFF;                       \
5021*62c56f98SSadaf Ebrahimi     } else {                                                \
5022*62c56f98SSadaf Ebrahimi         X[i/2] &= 0xFFFFFFFF00000000;                       \
5023*62c56f98SSadaf Ebrahimi     }
5024*62c56f98SSadaf Ebrahimi 
5025*62c56f98SSadaf Ebrahimi #endif
5026*62c56f98SSadaf Ebrahimi 
extract_carry(int64_t cur)5027*62c56f98SSadaf Ebrahimi static inline int8_t extract_carry(int64_t cur)
5028*62c56f98SSadaf Ebrahimi {
5029*62c56f98SSadaf Ebrahimi     return (int8_t) (cur >> 32);
5030*62c56f98SSadaf Ebrahimi }
5031*62c56f98SSadaf Ebrahimi 
5032*62c56f98SSadaf Ebrahimi #define ADD(j)    cur += A(j)
5033*62c56f98SSadaf Ebrahimi #define SUB(j)    cur -= A(j)
5034*62c56f98SSadaf Ebrahimi 
5035*62c56f98SSadaf Ebrahimi #define ADD_CARRY(cc) cur += (cc)
5036*62c56f98SSadaf Ebrahimi #define SUB_CARRY(cc) cur -= (cc)
5037*62c56f98SSadaf Ebrahimi 
5038*62c56f98SSadaf Ebrahimi #define ADD_LAST ADD_CARRY(last_c)
5039*62c56f98SSadaf Ebrahimi #define SUB_LAST SUB_CARRY(last_c)
5040*62c56f98SSadaf Ebrahimi 
5041*62c56f98SSadaf Ebrahimi /*
5042*62c56f98SSadaf Ebrahimi  * Helpers for the main 'loop'
5043*62c56f98SSadaf Ebrahimi  */
5044*62c56f98SSadaf Ebrahimi #define INIT(b)                                         \
5045*62c56f98SSadaf Ebrahimi     int8_t c = 0, last_c;                               \
5046*62c56f98SSadaf Ebrahimi     int64_t cur;                                        \
5047*62c56f98SSadaf Ebrahimi     size_t i = 0;                                       \
5048*62c56f98SSadaf Ebrahimi     LOAD32;
5049*62c56f98SSadaf Ebrahimi 
5050*62c56f98SSadaf Ebrahimi #define NEXT                                            \
5051*62c56f98SSadaf Ebrahimi     c = extract_carry(cur);                             \
5052*62c56f98SSadaf Ebrahimi     STORE32; i++; LOAD32;                               \
5053*62c56f98SSadaf Ebrahimi     ADD_CARRY(c);
5054*62c56f98SSadaf Ebrahimi 
5055*62c56f98SSadaf Ebrahimi #define RESET                                           \
5056*62c56f98SSadaf Ebrahimi     c = extract_carry(cur);                             \
5057*62c56f98SSadaf Ebrahimi     last_c = c;                                         \
5058*62c56f98SSadaf Ebrahimi     STORE32; i = 0; LOAD32;                             \
5059*62c56f98SSadaf Ebrahimi     c = 0;                                              \
5060*62c56f98SSadaf Ebrahimi 
5061*62c56f98SSadaf Ebrahimi #define LAST                                            \
5062*62c56f98SSadaf Ebrahimi     c = extract_carry(cur);                             \
5063*62c56f98SSadaf Ebrahimi     STORE32; i++;                                       \
5064*62c56f98SSadaf Ebrahimi     if (c != 0)                                         \
5065*62c56f98SSadaf Ebrahimi     return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;              \
5066*62c56f98SSadaf Ebrahimi     while (i < MAX32) { STORE0; i++; }
5067*62c56f98SSadaf Ebrahimi 
5068*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
5069*62c56f98SSadaf Ebrahimi 
5070*62c56f98SSadaf Ebrahimi /*
5071*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p224 (FIPS 186-3 D.2.2)
5072*62c56f98SSadaf Ebrahimi  */
ecp_mod_p224(mbedtls_mpi * N)5073*62c56f98SSadaf Ebrahimi static int ecp_mod_p224(mbedtls_mpi *N)
5074*62c56f98SSadaf Ebrahimi {
5075*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5076*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(224) * 2;
5077*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5078*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p224_raw(N->p, expected_width);
5079*62c56f98SSadaf Ebrahimi cleanup:
5080*62c56f98SSadaf Ebrahimi     return ret;
5081*62c56f98SSadaf Ebrahimi }
5082*62c56f98SSadaf Ebrahimi 
5083*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p224_raw(mbedtls_mpi_uint * X,size_t X_limbs)5084*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p224_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5085*62c56f98SSadaf Ebrahimi {
5086*62c56f98SSadaf Ebrahimi     if (X_limbs != BITS_TO_LIMBS(224) * 2) {
5087*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5088*62c56f98SSadaf Ebrahimi     }
5089*62c56f98SSadaf Ebrahimi 
5090*62c56f98SSadaf Ebrahimi     INIT(224);
5091*62c56f98SSadaf Ebrahimi 
5092*62c56f98SSadaf Ebrahimi     SUB(7);  SUB(11);           NEXT;   // A0 += -A7  - A11
5093*62c56f98SSadaf Ebrahimi     SUB(8);  SUB(12);           NEXT;   // A1 += -A8  - A12
5094*62c56f98SSadaf Ebrahimi     SUB(9);  SUB(13);           NEXT;   // A2 += -A9  - A13
5095*62c56f98SSadaf Ebrahimi     SUB(10); ADD(7);  ADD(11);  NEXT;   // A3 += -A10 + A7 + A11
5096*62c56f98SSadaf Ebrahimi     SUB(11); ADD(8);  ADD(12);  NEXT;   // A4 += -A11 + A8 + A12
5097*62c56f98SSadaf Ebrahimi     SUB(12); ADD(9);  ADD(13);  NEXT;   // A5 += -A12 + A9 + A13
5098*62c56f98SSadaf Ebrahimi     SUB(13); ADD(10);                   // A6 += -A13 + A10
5099*62c56f98SSadaf Ebrahimi 
5100*62c56f98SSadaf Ebrahimi     RESET;
5101*62c56f98SSadaf Ebrahimi 
5102*62c56f98SSadaf Ebrahimi     /* Use 2^224 = P + 2^96 - 1 to modulo reduce the final carry */
5103*62c56f98SSadaf Ebrahimi     SUB_LAST; NEXT;                     // A0 -= last_c
5104*62c56f98SSadaf Ebrahimi     ;         NEXT;                     // A1
5105*62c56f98SSadaf Ebrahimi     ;         NEXT;                     // A2
5106*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                     // A3 += last_c
5107*62c56f98SSadaf Ebrahimi     ;         NEXT;                     // A4
5108*62c56f98SSadaf Ebrahimi     ;         NEXT;                     // A5
5109*62c56f98SSadaf Ebrahimi                                         // A6
5110*62c56f98SSadaf Ebrahimi 
5111*62c56f98SSadaf Ebrahimi     /* The carry reduction cannot generate a carry
5112*62c56f98SSadaf Ebrahimi      * (see commit 73e8553 for details)*/
5113*62c56f98SSadaf Ebrahimi 
5114*62c56f98SSadaf Ebrahimi     LAST;
5115*62c56f98SSadaf Ebrahimi 
5116*62c56f98SSadaf Ebrahimi     return 0;
5117*62c56f98SSadaf Ebrahimi }
5118*62c56f98SSadaf Ebrahimi 
5119*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
5120*62c56f98SSadaf Ebrahimi 
5121*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
5122*62c56f98SSadaf Ebrahimi 
5123*62c56f98SSadaf Ebrahimi /*
5124*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p256 (FIPS 186-3 D.2.3)
5125*62c56f98SSadaf Ebrahimi  */
ecp_mod_p256(mbedtls_mpi * N)5126*62c56f98SSadaf Ebrahimi static int ecp_mod_p256(mbedtls_mpi *N)
5127*62c56f98SSadaf Ebrahimi {
5128*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5129*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(256) * 2;
5130*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5131*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p256_raw(N->p, expected_width);
5132*62c56f98SSadaf Ebrahimi cleanup:
5133*62c56f98SSadaf Ebrahimi     return ret;
5134*62c56f98SSadaf Ebrahimi }
5135*62c56f98SSadaf Ebrahimi 
5136*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p256_raw(mbedtls_mpi_uint * X,size_t X_limbs)5137*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p256_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5138*62c56f98SSadaf Ebrahimi {
5139*62c56f98SSadaf Ebrahimi     if (X_limbs != BITS_TO_LIMBS(256) * 2) {
5140*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5141*62c56f98SSadaf Ebrahimi     }
5142*62c56f98SSadaf Ebrahimi 
5143*62c56f98SSadaf Ebrahimi     INIT(256);
5144*62c56f98SSadaf Ebrahimi 
5145*62c56f98SSadaf Ebrahimi     ADD(8);  ADD(9);
5146*62c56f98SSadaf Ebrahimi     SUB(11); SUB(12); SUB(13); SUB(14);                   NEXT; // A0
5147*62c56f98SSadaf Ebrahimi 
5148*62c56f98SSadaf Ebrahimi     ADD(9);  ADD(10);
5149*62c56f98SSadaf Ebrahimi     SUB(12); SUB(13); SUB(14); SUB(15);                   NEXT; // A1
5150*62c56f98SSadaf Ebrahimi 
5151*62c56f98SSadaf Ebrahimi     ADD(10); ADD(11);
5152*62c56f98SSadaf Ebrahimi     SUB(13); SUB(14); SUB(15);                            NEXT; // A2
5153*62c56f98SSadaf Ebrahimi 
5154*62c56f98SSadaf Ebrahimi     ADD(11); ADD(11); ADD(12); ADD(12); ADD(13);
5155*62c56f98SSadaf Ebrahimi     SUB(15); SUB(8);  SUB(9);                             NEXT; // A3
5156*62c56f98SSadaf Ebrahimi 
5157*62c56f98SSadaf Ebrahimi     ADD(12); ADD(12); ADD(13); ADD(13); ADD(14);
5158*62c56f98SSadaf Ebrahimi     SUB(9);  SUB(10);                                     NEXT; // A4
5159*62c56f98SSadaf Ebrahimi 
5160*62c56f98SSadaf Ebrahimi     ADD(13); ADD(13); ADD(14); ADD(14); ADD(15);
5161*62c56f98SSadaf Ebrahimi     SUB(10); SUB(11);                                     NEXT; // A5
5162*62c56f98SSadaf Ebrahimi 
5163*62c56f98SSadaf Ebrahimi     ADD(14); ADD(14); ADD(15); ADD(15); ADD(14); ADD(13);
5164*62c56f98SSadaf Ebrahimi     SUB(8);  SUB(9);                                      NEXT; // A6
5165*62c56f98SSadaf Ebrahimi 
5166*62c56f98SSadaf Ebrahimi     ADD(15); ADD(15); ADD(15); ADD(8);
5167*62c56f98SSadaf Ebrahimi     SUB(10); SUB(11); SUB(12); SUB(13);                         // A7
5168*62c56f98SSadaf Ebrahimi 
5169*62c56f98SSadaf Ebrahimi     RESET;
5170*62c56f98SSadaf Ebrahimi 
5171*62c56f98SSadaf Ebrahimi     /* Use 2^224 * (2^32 - 1) + 2^192 + 2^96 - 1
5172*62c56f98SSadaf Ebrahimi      * to modulo reduce the final carry. */
5173*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                             // A0
5174*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A1
5175*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A2
5176*62c56f98SSadaf Ebrahimi     SUB_LAST; NEXT;                                             // A3
5177*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A4
5178*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A5
5179*62c56f98SSadaf Ebrahimi     SUB_LAST; NEXT;                                             // A6
5180*62c56f98SSadaf Ebrahimi     ADD_LAST;                                                   // A7
5181*62c56f98SSadaf Ebrahimi 
5182*62c56f98SSadaf Ebrahimi     RESET;
5183*62c56f98SSadaf Ebrahimi 
5184*62c56f98SSadaf Ebrahimi     /* Use 2^224 * (2^32 - 1) + 2^192 + 2^96 - 1
5185*62c56f98SSadaf Ebrahimi      * to modulo reduce the carry generated by the previous reduction. */
5186*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                             // A0
5187*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A1
5188*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A2
5189*62c56f98SSadaf Ebrahimi     SUB_LAST; NEXT;                                             // A3
5190*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A4
5191*62c56f98SSadaf Ebrahimi     ;         NEXT;                                             // A5
5192*62c56f98SSadaf Ebrahimi     SUB_LAST; NEXT;                                             // A6
5193*62c56f98SSadaf Ebrahimi     ADD_LAST;                                                   // A7
5194*62c56f98SSadaf Ebrahimi 
5195*62c56f98SSadaf Ebrahimi     LAST;
5196*62c56f98SSadaf Ebrahimi 
5197*62c56f98SSadaf Ebrahimi     return 0;
5198*62c56f98SSadaf Ebrahimi }
5199*62c56f98SSadaf Ebrahimi 
5200*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
5201*62c56f98SSadaf Ebrahimi 
5202*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
5203*62c56f98SSadaf Ebrahimi /*
5204*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p384 (FIPS 186-3 D.2.4)
5205*62c56f98SSadaf Ebrahimi  */
ecp_mod_p384(mbedtls_mpi * N)5206*62c56f98SSadaf Ebrahimi static int ecp_mod_p384(mbedtls_mpi *N)
5207*62c56f98SSadaf Ebrahimi {
5208*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5209*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(384) * 2;
5210*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5211*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p384_raw(N->p, expected_width);
5212*62c56f98SSadaf Ebrahimi cleanup:
5213*62c56f98SSadaf Ebrahimi     return ret;
5214*62c56f98SSadaf Ebrahimi }
5215*62c56f98SSadaf Ebrahimi 
5216*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p384_raw(mbedtls_mpi_uint * X,size_t X_limbs)5217*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p384_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5218*62c56f98SSadaf Ebrahimi {
5219*62c56f98SSadaf Ebrahimi     if (X_limbs != BITS_TO_LIMBS(384) * 2) {
5220*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5221*62c56f98SSadaf Ebrahimi     }
5222*62c56f98SSadaf Ebrahimi 
5223*62c56f98SSadaf Ebrahimi     INIT(384);
5224*62c56f98SSadaf Ebrahimi 
5225*62c56f98SSadaf Ebrahimi     ADD(12); ADD(21); ADD(20);
5226*62c56f98SSadaf Ebrahimi     SUB(23);                                                NEXT; // A0
5227*62c56f98SSadaf Ebrahimi 
5228*62c56f98SSadaf Ebrahimi     ADD(13); ADD(22); ADD(23);
5229*62c56f98SSadaf Ebrahimi     SUB(12); SUB(20);                                       NEXT; // A1
5230*62c56f98SSadaf Ebrahimi 
5231*62c56f98SSadaf Ebrahimi     ADD(14); ADD(23);
5232*62c56f98SSadaf Ebrahimi     SUB(13); SUB(21);                                       NEXT; // A2
5233*62c56f98SSadaf Ebrahimi 
5234*62c56f98SSadaf Ebrahimi     ADD(15); ADD(12); ADD(20); ADD(21);
5235*62c56f98SSadaf Ebrahimi     SUB(14); SUB(22); SUB(23);                              NEXT; // A3
5236*62c56f98SSadaf Ebrahimi 
5237*62c56f98SSadaf Ebrahimi     ADD(21); ADD(21); ADD(16); ADD(13); ADD(12); ADD(20); ADD(22);
5238*62c56f98SSadaf Ebrahimi     SUB(15); SUB(23); SUB(23);                              NEXT; // A4
5239*62c56f98SSadaf Ebrahimi 
5240*62c56f98SSadaf Ebrahimi     ADD(22); ADD(22); ADD(17); ADD(14); ADD(13); ADD(21); ADD(23);
5241*62c56f98SSadaf Ebrahimi     SUB(16);                                                NEXT; // A5
5242*62c56f98SSadaf Ebrahimi 
5243*62c56f98SSadaf Ebrahimi     ADD(23); ADD(23); ADD(18); ADD(15); ADD(14); ADD(22);
5244*62c56f98SSadaf Ebrahimi     SUB(17);                                                NEXT; // A6
5245*62c56f98SSadaf Ebrahimi 
5246*62c56f98SSadaf Ebrahimi     ADD(19); ADD(16); ADD(15); ADD(23);
5247*62c56f98SSadaf Ebrahimi     SUB(18);                                                NEXT; // A7
5248*62c56f98SSadaf Ebrahimi 
5249*62c56f98SSadaf Ebrahimi     ADD(20); ADD(17); ADD(16);
5250*62c56f98SSadaf Ebrahimi     SUB(19);                                                NEXT; // A8
5251*62c56f98SSadaf Ebrahimi 
5252*62c56f98SSadaf Ebrahimi     ADD(21); ADD(18); ADD(17);
5253*62c56f98SSadaf Ebrahimi     SUB(20);                                                NEXT; // A9
5254*62c56f98SSadaf Ebrahimi 
5255*62c56f98SSadaf Ebrahimi     ADD(22); ADD(19); ADD(18);
5256*62c56f98SSadaf Ebrahimi     SUB(21);                                                NEXT; // A10
5257*62c56f98SSadaf Ebrahimi 
5258*62c56f98SSadaf Ebrahimi     ADD(23); ADD(20); ADD(19);
5259*62c56f98SSadaf Ebrahimi     SUB(22);                                                      // A11
5260*62c56f98SSadaf Ebrahimi 
5261*62c56f98SSadaf Ebrahimi     RESET;
5262*62c56f98SSadaf Ebrahimi 
5263*62c56f98SSadaf Ebrahimi     /* Use 2^384 = P + 2^128 + 2^96 - 2^32 + 1 to modulo reduce the final carry */
5264*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                               // A0
5265*62c56f98SSadaf Ebrahimi     SUB_LAST; NEXT;                                               // A1
5266*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A2
5267*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                               // A3
5268*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                               // A4
5269*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A5
5270*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A6
5271*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A7
5272*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A8
5273*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A9
5274*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A10
5275*62c56f98SSadaf Ebrahimi                                                                   // A11
5276*62c56f98SSadaf Ebrahimi 
5277*62c56f98SSadaf Ebrahimi     RESET;
5278*62c56f98SSadaf Ebrahimi 
5279*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                               // A0
5280*62c56f98SSadaf Ebrahimi     SUB_LAST; NEXT;                                               // A1
5281*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A2
5282*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                               // A3
5283*62c56f98SSadaf Ebrahimi     ADD_LAST; NEXT;                                               // A4
5284*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A5
5285*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A6
5286*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A7
5287*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A8
5288*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A9
5289*62c56f98SSadaf Ebrahimi     ;         NEXT;                                               // A10
5290*62c56f98SSadaf Ebrahimi                                                                   // A11
5291*62c56f98SSadaf Ebrahimi 
5292*62c56f98SSadaf Ebrahimi     LAST;
5293*62c56f98SSadaf Ebrahimi 
5294*62c56f98SSadaf Ebrahimi     return 0;
5295*62c56f98SSadaf Ebrahimi }
5296*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
5297*62c56f98SSadaf Ebrahimi 
5298*62c56f98SSadaf Ebrahimi #undef LOAD32
5299*62c56f98SSadaf Ebrahimi #undef MAX32
5300*62c56f98SSadaf Ebrahimi #undef A
5301*62c56f98SSadaf Ebrahimi #undef STORE32
5302*62c56f98SSadaf Ebrahimi #undef STORE0
5303*62c56f98SSadaf Ebrahimi #undef ADD
5304*62c56f98SSadaf Ebrahimi #undef SUB
5305*62c56f98SSadaf Ebrahimi #undef ADD_CARRY
5306*62c56f98SSadaf Ebrahimi #undef SUB_CARRY
5307*62c56f98SSadaf Ebrahimi #undef ADD_LAST
5308*62c56f98SSadaf Ebrahimi #undef SUB_LAST
5309*62c56f98SSadaf Ebrahimi #undef INIT
5310*62c56f98SSadaf Ebrahimi #undef NEXT
5311*62c56f98SSadaf Ebrahimi #undef RESET
5312*62c56f98SSadaf Ebrahimi #undef LAST
5313*62c56f98SSadaf Ebrahimi 
5314*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED ||
5315*62c56f98SSadaf Ebrahimi           MBEDTLS_ECP_DP_SECP256R1_ENABLED ||
5316*62c56f98SSadaf Ebrahimi           MBEDTLS_ECP_DP_SECP384R1_ENABLED */
5317*62c56f98SSadaf Ebrahimi 
5318*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
5319*62c56f98SSadaf Ebrahimi /* Size of p521 in terms of mbedtls_mpi_uint */
5320*62c56f98SSadaf Ebrahimi #define P521_WIDTH      (521 / 8 / sizeof(mbedtls_mpi_uint) + 1)
5321*62c56f98SSadaf Ebrahimi 
5322*62c56f98SSadaf Ebrahimi /* Bits to keep in the most significant mbedtls_mpi_uint */
5323*62c56f98SSadaf Ebrahimi #define P521_MASK       0x01FF
5324*62c56f98SSadaf Ebrahimi 
5325*62c56f98SSadaf Ebrahimi /*
5326*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p521 = 2^521 - 1 (FIPS 186-3 D.2.5)
5327*62c56f98SSadaf Ebrahimi  */
ecp_mod_p521(mbedtls_mpi * N)5328*62c56f98SSadaf Ebrahimi static int ecp_mod_p521(mbedtls_mpi *N)
5329*62c56f98SSadaf Ebrahimi {
5330*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5331*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(521) * 2;
5332*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5333*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p521_raw(N->p, expected_width);
5334*62c56f98SSadaf Ebrahimi cleanup:
5335*62c56f98SSadaf Ebrahimi     return ret;
5336*62c56f98SSadaf Ebrahimi }
5337*62c56f98SSadaf Ebrahimi 
5338*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p521_raw(mbedtls_mpi_uint * X,size_t X_limbs)5339*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p521_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5340*62c56f98SSadaf Ebrahimi {
5341*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint carry = 0;
5342*62c56f98SSadaf Ebrahimi 
5343*62c56f98SSadaf Ebrahimi     if (X_limbs != BITS_TO_LIMBS(521) * 2) {
5344*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5345*62c56f98SSadaf Ebrahimi     }
5346*62c56f98SSadaf Ebrahimi 
5347*62c56f98SSadaf Ebrahimi     /* Step 1: Reduction to P521_WIDTH limbs */
5348*62c56f98SSadaf Ebrahimi     /* Helper references for bottom part of X */
5349*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *X0 = X;
5350*62c56f98SSadaf Ebrahimi     size_t X0_limbs = P521_WIDTH;
5351*62c56f98SSadaf Ebrahimi     /* Helper references for top part of X */
5352*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *X1 = X + X0_limbs;
5353*62c56f98SSadaf Ebrahimi     size_t X1_limbs = X_limbs - X0_limbs;
5354*62c56f98SSadaf Ebrahimi     /* Split X as X0 + 2^P521_WIDTH X1 and compute X0 + 2^(biL - 9) X1.
5355*62c56f98SSadaf Ebrahimi      * (We are using that 2^P521_WIDTH = 2^(512 + biL) and that
5356*62c56f98SSadaf Ebrahimi      * 2^(512 + biL) X1 = 2^(biL - 9) X1 mod P521.)
5357*62c56f98SSadaf Ebrahimi      * The high order limb of the result will be held in carry and the rest
5358*62c56f98SSadaf Ebrahimi      * in X0 (that is the result will be represented as
5359*62c56f98SSadaf Ebrahimi      * 2^P521_WIDTH carry + X0).
5360*62c56f98SSadaf Ebrahimi      *
5361*62c56f98SSadaf Ebrahimi      * Also, note that the resulting carry is either 0 or 1:
5362*62c56f98SSadaf Ebrahimi      * X0 < 2^P521_WIDTH = 2^(512 + biL) and X1 < 2^(P521_WIDTH-biL) = 2^512
5363*62c56f98SSadaf Ebrahimi      * therefore
5364*62c56f98SSadaf Ebrahimi      * X0 + 2^(biL - 9) X1 < 2^(512 + biL) + 2^(512 + biL - 9)
5365*62c56f98SSadaf Ebrahimi      * which in turn is less than 2 * 2^(512 + biL).
5366*62c56f98SSadaf Ebrahimi      */
5367*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint shift = ((mbedtls_mpi_uint) 1u) << (biL - 9);
5368*62c56f98SSadaf Ebrahimi     carry = mbedtls_mpi_core_mla(X0, X0_limbs, X1, X1_limbs, shift);
5369*62c56f98SSadaf Ebrahimi     /* Set X to X0 (by clearing the top part). */
5370*62c56f98SSadaf Ebrahimi     memset(X1, 0, X1_limbs * sizeof(mbedtls_mpi_uint));
5371*62c56f98SSadaf Ebrahimi 
5372*62c56f98SSadaf Ebrahimi     /* Step 2: Reduction modulo P521
5373*62c56f98SSadaf Ebrahimi      *
5374*62c56f98SSadaf Ebrahimi      * At this point X is reduced to P521_WIDTH limbs. What remains is to add
5375*62c56f98SSadaf Ebrahimi      * the carry (that is 2^P521_WIDTH carry) and to reduce mod P521. */
5376*62c56f98SSadaf Ebrahimi 
5377*62c56f98SSadaf Ebrahimi     /* 2^P521_WIDTH carry = 2^(512 + biL) carry = 2^(biL - 9) carry mod P521.
5378*62c56f98SSadaf Ebrahimi      * Also, recall that carry is either 0 or 1. */
5379*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint addend = carry << (biL - 9);
5380*62c56f98SSadaf Ebrahimi     /* Keep the top 9 bits and reduce the rest, using 2^521 = 1 mod P521. */
5381*62c56f98SSadaf Ebrahimi     addend += (X[P521_WIDTH - 1] >> 9);
5382*62c56f98SSadaf Ebrahimi     X[P521_WIDTH - 1] &= P521_MASK;
5383*62c56f98SSadaf Ebrahimi 
5384*62c56f98SSadaf Ebrahimi     /* Reuse the top part of X (already zeroed) as a helper array for
5385*62c56f98SSadaf Ebrahimi      * carrying out the addition. */
5386*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *addend_arr = X + P521_WIDTH;
5387*62c56f98SSadaf Ebrahimi     addend_arr[0] = addend;
5388*62c56f98SSadaf Ebrahimi     (void) mbedtls_mpi_core_add(X, X, addend_arr, P521_WIDTH);
5389*62c56f98SSadaf Ebrahimi     /* Both addends were less than P521 therefore X < 2 * P521. (This also means
5390*62c56f98SSadaf Ebrahimi      * that the result fit in P521_WIDTH limbs and there won't be any carry.) */
5391*62c56f98SSadaf Ebrahimi 
5392*62c56f98SSadaf Ebrahimi     /* Clear the reused part of X. */
5393*62c56f98SSadaf Ebrahimi     addend_arr[0] = 0;
5394*62c56f98SSadaf Ebrahimi 
5395*62c56f98SSadaf Ebrahimi     return 0;
5396*62c56f98SSadaf Ebrahimi }
5397*62c56f98SSadaf Ebrahimi 
5398*62c56f98SSadaf Ebrahimi #undef P521_WIDTH
5399*62c56f98SSadaf Ebrahimi #undef P521_MASK
5400*62c56f98SSadaf Ebrahimi 
5401*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
5402*62c56f98SSadaf Ebrahimi 
5403*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_NIST_OPTIM */
5404*62c56f98SSadaf Ebrahimi 
5405*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
5406*62c56f98SSadaf Ebrahimi 
5407*62c56f98SSadaf Ebrahimi /* Size of p255 in terms of mbedtls_mpi_uint */
5408*62c56f98SSadaf Ebrahimi #define P255_WIDTH      (255 / 8 / sizeof(mbedtls_mpi_uint) + 1)
5409*62c56f98SSadaf Ebrahimi 
5410*62c56f98SSadaf Ebrahimi /*
5411*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p255 = 2^255 - 19
5412*62c56f98SSadaf Ebrahimi  * Write N as A0 + 2^256 A1, return A0 + 38 * A1
5413*62c56f98SSadaf Ebrahimi  */
ecp_mod_p255(mbedtls_mpi * N)5414*62c56f98SSadaf Ebrahimi static int ecp_mod_p255(mbedtls_mpi *N)
5415*62c56f98SSadaf Ebrahimi {
5416*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5417*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(255) * 2;
5418*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5419*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p255_raw(N->p, expected_width);
5420*62c56f98SSadaf Ebrahimi cleanup:
5421*62c56f98SSadaf Ebrahimi     return ret;
5422*62c56f98SSadaf Ebrahimi }
5423*62c56f98SSadaf Ebrahimi 
5424*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p255_raw(mbedtls_mpi_uint * X,size_t X_Limbs)5425*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p255_raw(mbedtls_mpi_uint *X, size_t X_Limbs)
5426*62c56f98SSadaf Ebrahimi {
5427*62c56f98SSadaf Ebrahimi 
5428*62c56f98SSadaf Ebrahimi     if (X_Limbs != BITS_TO_LIMBS(255) * 2) {
5429*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5430*62c56f98SSadaf Ebrahimi     }
5431*62c56f98SSadaf Ebrahimi 
5432*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *carry = mbedtls_calloc(P255_WIDTH, ciL);
5433*62c56f98SSadaf Ebrahimi     if (carry == NULL) {
5434*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_ALLOC_FAILED;
5435*62c56f98SSadaf Ebrahimi     }
5436*62c56f98SSadaf Ebrahimi 
5437*62c56f98SSadaf Ebrahimi     /* Step 1: Reduction to P255_WIDTH limbs */
5438*62c56f98SSadaf Ebrahimi     if (X_Limbs > P255_WIDTH) {
5439*62c56f98SSadaf Ebrahimi         /* Helper references for top part of X */
5440*62c56f98SSadaf Ebrahimi         mbedtls_mpi_uint * const A1 = X + P255_WIDTH;
5441*62c56f98SSadaf Ebrahimi         const size_t A1_limbs = X_Limbs - P255_WIDTH;
5442*62c56f98SSadaf Ebrahimi 
5443*62c56f98SSadaf Ebrahimi         /* X = A0 + 38 * A1, capture carry out */
5444*62c56f98SSadaf Ebrahimi         *carry = mbedtls_mpi_core_mla(X, P255_WIDTH, A1, A1_limbs, 38);
5445*62c56f98SSadaf Ebrahimi         /* Clear top part */
5446*62c56f98SSadaf Ebrahimi         memset(A1, 0, sizeof(mbedtls_mpi_uint) * A1_limbs);
5447*62c56f98SSadaf Ebrahimi     }
5448*62c56f98SSadaf Ebrahimi 
5449*62c56f98SSadaf Ebrahimi     /* Step 2: Reduce to <2p
5450*62c56f98SSadaf Ebrahimi      * Split as A0 + 2^255*c, with c a scalar, and compute A0 + 19*c */
5451*62c56f98SSadaf Ebrahimi     *carry <<= 1;
5452*62c56f98SSadaf Ebrahimi     *carry += (X[P255_WIDTH - 1] >> (biL - 1));
5453*62c56f98SSadaf Ebrahimi     *carry *= 19;
5454*62c56f98SSadaf Ebrahimi 
5455*62c56f98SSadaf Ebrahimi     /* Clear top bit */
5456*62c56f98SSadaf Ebrahimi     X[P255_WIDTH - 1] <<= 1; X[P255_WIDTH - 1] >>= 1;
5457*62c56f98SSadaf Ebrahimi     /* Since the top bit for X has been cleared 0 + 0 + Carry
5458*62c56f98SSadaf Ebrahimi      * will not overflow.
5459*62c56f98SSadaf Ebrahimi      *
5460*62c56f98SSadaf Ebrahimi      * Furthermore for 2p = 2^256-38. When a carry propagation on the highest
5461*62c56f98SSadaf Ebrahimi      * limb occurs, X > 2^255 and all the remaining bits on the limb are zero.
5462*62c56f98SSadaf Ebrahimi      *   - If X < 2^255 ==> X < 2p
5463*62c56f98SSadaf Ebrahimi      *   - If X > 2^255 ==> X < 2^256 - 2^255 < 2p  */
5464*62c56f98SSadaf Ebrahimi     (void) mbedtls_mpi_core_add(X, X, carry, P255_WIDTH);
5465*62c56f98SSadaf Ebrahimi 
5466*62c56f98SSadaf Ebrahimi     mbedtls_free(carry);
5467*62c56f98SSadaf Ebrahimi     return 0;
5468*62c56f98SSadaf Ebrahimi }
5469*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
5470*62c56f98SSadaf Ebrahimi 
5471*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
5472*62c56f98SSadaf Ebrahimi 
5473*62c56f98SSadaf Ebrahimi /* Size of p448 in terms of mbedtls_mpi_uint */
5474*62c56f98SSadaf Ebrahimi #define P448_WIDTH      (448 / 8 / sizeof(mbedtls_mpi_uint))
5475*62c56f98SSadaf Ebrahimi 
5476*62c56f98SSadaf Ebrahimi /* Number of limbs fully occupied by 2^224 (max), and limbs used by it (min) */
5477*62c56f98SSadaf Ebrahimi #define DIV_ROUND_UP(X, Y) (((X) + (Y) -1) / (Y))
5478*62c56f98SSadaf Ebrahimi #define P224_SIZE        (224 / 8)
5479*62c56f98SSadaf Ebrahimi #define P224_WIDTH_MIN   (P224_SIZE / sizeof(mbedtls_mpi_uint))
5480*62c56f98SSadaf Ebrahimi #define P224_WIDTH_MAX   DIV_ROUND_UP(P224_SIZE, sizeof(mbedtls_mpi_uint))
5481*62c56f98SSadaf Ebrahimi #define P224_UNUSED_BITS ((P224_WIDTH_MAX * sizeof(mbedtls_mpi_uint) * 8) - 224)
5482*62c56f98SSadaf Ebrahimi 
ecp_mod_p448(mbedtls_mpi * N)5483*62c56f98SSadaf Ebrahimi static int ecp_mod_p448(mbedtls_mpi *N)
5484*62c56f98SSadaf Ebrahimi {
5485*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5486*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(448) * 2;
5487*62c56f98SSadaf Ebrahimi 
5488*62c56f98SSadaf Ebrahimi     /* This is required as some tests and use cases do not pass in a Bignum of
5489*62c56f98SSadaf Ebrahimi      * the correct size, and expect the growth to be done automatically, which
5490*62c56f98SSadaf Ebrahimi      * will no longer happen. */
5491*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5492*62c56f98SSadaf Ebrahimi 
5493*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p448_raw(N->p, N->n);
5494*62c56f98SSadaf Ebrahimi 
5495*62c56f98SSadaf Ebrahimi cleanup:
5496*62c56f98SSadaf Ebrahimi     return ret;
5497*62c56f98SSadaf Ebrahimi }
5498*62c56f98SSadaf Ebrahimi 
5499*62c56f98SSadaf Ebrahimi /*
5500*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p448 = 2^448 - 2^224 - 1
5501*62c56f98SSadaf Ebrahimi  * Write X as A0 + 2^448 A1 and A1 as B0 + 2^224 B1, and return A0 + A1 + B1 +
5502*62c56f98SSadaf Ebrahimi  * (B0 + B1) * 2^224.  This is different to the reference implementation of
5503*62c56f98SSadaf Ebrahimi  * Curve448, which uses its own special 56-bit limbs rather than a generic
5504*62c56f98SSadaf Ebrahimi  * bignum library.  We could squeeze some extra speed out on 32-bit machines by
5505*62c56f98SSadaf Ebrahimi  * splitting N up into 32-bit limbs and doing the arithmetic using the limbs
5506*62c56f98SSadaf Ebrahimi  * directly as we do for the NIST primes above, but for 64-bit targets it should
5507*62c56f98SSadaf Ebrahimi  * use half the number of operations if we do the reduction with 224-bit limbs,
5508*62c56f98SSadaf Ebrahimi  * since mpi_core_add will then use 64-bit adds.
5509*62c56f98SSadaf Ebrahimi  */
5510*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p448_raw(mbedtls_mpi_uint * X,size_t X_limbs)5511*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p448_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5512*62c56f98SSadaf Ebrahimi {
5513*62c56f98SSadaf Ebrahimi     size_t round;
5514*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5515*62c56f98SSadaf Ebrahimi 
5516*62c56f98SSadaf Ebrahimi     if (X_limbs != BITS_TO_LIMBS(448) * 2) {
5517*62c56f98SSadaf Ebrahimi         return 0;
5518*62c56f98SSadaf Ebrahimi     }
5519*62c56f98SSadaf Ebrahimi 
5520*62c56f98SSadaf Ebrahimi     size_t M_limbs = X_limbs - (P448_WIDTH);
5521*62c56f98SSadaf Ebrahimi 
5522*62c56f98SSadaf Ebrahimi     if (M_limbs > P448_WIDTH) {
5523*62c56f98SSadaf Ebrahimi         /* Shouldn't be called with X larger than 2^896! */
5524*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5525*62c56f98SSadaf Ebrahimi     }
5526*62c56f98SSadaf Ebrahimi 
5527*62c56f98SSadaf Ebrahimi     /* Both M and Q require an extra limb to catch carries. */
5528*62c56f98SSadaf Ebrahimi     M_limbs++;
5529*62c56f98SSadaf Ebrahimi 
5530*62c56f98SSadaf Ebrahimi     const size_t Q_limbs = M_limbs;
5531*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *M = NULL;
5532*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *Q = NULL;
5533*62c56f98SSadaf Ebrahimi 
5534*62c56f98SSadaf Ebrahimi     M = mbedtls_calloc(M_limbs, ciL);
5535*62c56f98SSadaf Ebrahimi 
5536*62c56f98SSadaf Ebrahimi     if (M == NULL) {
5537*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_ALLOC_FAILED;
5538*62c56f98SSadaf Ebrahimi     }
5539*62c56f98SSadaf Ebrahimi 
5540*62c56f98SSadaf Ebrahimi     Q = mbedtls_calloc(Q_limbs, ciL);
5541*62c56f98SSadaf Ebrahimi 
5542*62c56f98SSadaf Ebrahimi     if (Q == NULL) {
5543*62c56f98SSadaf Ebrahimi         ret =  MBEDTLS_ERR_ECP_ALLOC_FAILED;
5544*62c56f98SSadaf Ebrahimi         goto cleanup;
5545*62c56f98SSadaf Ebrahimi     }
5546*62c56f98SSadaf Ebrahimi 
5547*62c56f98SSadaf Ebrahimi     /* M = A1 */
5548*62c56f98SSadaf Ebrahimi     memset(M, 0, (M_limbs * ciL));
5549*62c56f98SSadaf Ebrahimi     /* Do not copy into the overflow limb, as this would read past the end of
5550*62c56f98SSadaf Ebrahimi      * X. */
5551*62c56f98SSadaf Ebrahimi     memcpy(M, X + P448_WIDTH, ((M_limbs - 1) * ciL));
5552*62c56f98SSadaf Ebrahimi 
5553*62c56f98SSadaf Ebrahimi     /* X = A0 */
5554*62c56f98SSadaf Ebrahimi     memset(X + P448_WIDTH, 0, ((M_limbs - 1) * ciL));
5555*62c56f98SSadaf Ebrahimi 
5556*62c56f98SSadaf Ebrahimi     /* X = X + M = A0 + A1 */
5557*62c56f98SSadaf Ebrahimi     /* Carry here fits in oversize X. Oversize M means it will get
5558*62c56f98SSadaf Ebrahimi      * added in, not returned as carry. */
5559*62c56f98SSadaf Ebrahimi     (void) mbedtls_mpi_core_add(X, X, M, M_limbs);
5560*62c56f98SSadaf Ebrahimi 
5561*62c56f98SSadaf Ebrahimi     /* Q = B1 = M >> 224 */
5562*62c56f98SSadaf Ebrahimi     memcpy(Q, (char *) M + P224_SIZE, P224_SIZE);
5563*62c56f98SSadaf Ebrahimi     memset((char *) Q + P224_SIZE, 0, P224_SIZE);
5564*62c56f98SSadaf Ebrahimi 
5565*62c56f98SSadaf Ebrahimi     /* X = X + Q = (A0 + A1) + B1
5566*62c56f98SSadaf Ebrahimi      * Oversize Q catches potential carry here when X is already max 448 bits.
5567*62c56f98SSadaf Ebrahimi      */
5568*62c56f98SSadaf Ebrahimi     (void) mbedtls_mpi_core_add(X, X, Q, Q_limbs);
5569*62c56f98SSadaf Ebrahimi 
5570*62c56f98SSadaf Ebrahimi     /* M = B0 */
5571*62c56f98SSadaf Ebrahimi #ifdef MBEDTLS_HAVE_INT64
5572*62c56f98SSadaf Ebrahimi     M[P224_WIDTH_MIN] &= ((mbedtls_mpi_uint)-1) >> (P224_UNUSED_BITS);
5573*62c56f98SSadaf Ebrahimi  #endif
5574*62c56f98SSadaf Ebrahimi     memset(M + P224_WIDTH_MAX, 0, ((M_limbs - P224_WIDTH_MAX) * ciL));
5575*62c56f98SSadaf Ebrahimi 
5576*62c56f98SSadaf Ebrahimi     /* M = M + Q = B0 + B1 */
5577*62c56f98SSadaf Ebrahimi     (void) mbedtls_mpi_core_add(M, M, Q, Q_limbs);
5578*62c56f98SSadaf Ebrahimi 
5579*62c56f98SSadaf Ebrahimi     /* M = (B0 + B1) * 2^224 */
5580*62c56f98SSadaf Ebrahimi     /* Shifted carry bit from the addition fits in oversize M. */
5581*62c56f98SSadaf Ebrahimi     memmove((char *) M + P224_SIZE, M, P224_SIZE + ciL);
5582*62c56f98SSadaf Ebrahimi     memset(M, 0, P224_SIZE);
5583*62c56f98SSadaf Ebrahimi 
5584*62c56f98SSadaf Ebrahimi     /* X = X + M = (A0 + A1 + B1) + (B0 + B1) * 2^224 */
5585*62c56f98SSadaf Ebrahimi     (void) mbedtls_mpi_core_add(X, X, M, M_limbs);
5586*62c56f98SSadaf Ebrahimi 
5587*62c56f98SSadaf Ebrahimi     /* In the second and third rounds A1 and B0 have at most 1 non-zero limb and
5588*62c56f98SSadaf Ebrahimi      * B1=0.
5589*62c56f98SSadaf Ebrahimi      * Using this we need to calculate:
5590*62c56f98SSadaf Ebrahimi      * A0 + A1 + B1 + (B0 + B1) * 2^224 = A0 + A1 + B0 * 2^224. */
5591*62c56f98SSadaf Ebrahimi     for (round = 0; round < 2; ++round) {
5592*62c56f98SSadaf Ebrahimi 
5593*62c56f98SSadaf Ebrahimi         /* M = A1 */
5594*62c56f98SSadaf Ebrahimi         memset(M, 0, (M_limbs * ciL));
5595*62c56f98SSadaf Ebrahimi         memcpy(M, X + P448_WIDTH, ((M_limbs - 1) * ciL));
5596*62c56f98SSadaf Ebrahimi 
5597*62c56f98SSadaf Ebrahimi         /* X = A0 */
5598*62c56f98SSadaf Ebrahimi         memset(X + P448_WIDTH, 0, ((M_limbs - 1) * ciL));
5599*62c56f98SSadaf Ebrahimi 
5600*62c56f98SSadaf Ebrahimi         /* M = A1 + B0 * 2^224
5601*62c56f98SSadaf Ebrahimi          * We know that only one limb of A1 will be non-zero and that it will be
5602*62c56f98SSadaf Ebrahimi          * limb 0. We also know that B0 is the bottom 224 bits of A1 (which is
5603*62c56f98SSadaf Ebrahimi          * then shifted up 224 bits), so, given M is currently A1 this turns
5604*62c56f98SSadaf Ebrahimi          * into:
5605*62c56f98SSadaf Ebrahimi          * M = M + (M << 224)
5606*62c56f98SSadaf Ebrahimi          * As the single non-zero limb in B0 will be A1 limb 0 shifted up by 224
5607*62c56f98SSadaf Ebrahimi          * bits, we can just move that into the right place, shifted up
5608*62c56f98SSadaf Ebrahimi          * accordingly.*/
5609*62c56f98SSadaf Ebrahimi         M[P224_WIDTH_MIN] = M[0] << (224 & (biL - 1));
5610*62c56f98SSadaf Ebrahimi 
5611*62c56f98SSadaf Ebrahimi         /* X = A0 + (A1 + B0 * 2^224) */
5612*62c56f98SSadaf Ebrahimi         (void) mbedtls_mpi_core_add(X, X, M, M_limbs);
5613*62c56f98SSadaf Ebrahimi     }
5614*62c56f98SSadaf Ebrahimi 
5615*62c56f98SSadaf Ebrahimi     ret = 0;
5616*62c56f98SSadaf Ebrahimi 
5617*62c56f98SSadaf Ebrahimi cleanup:
5618*62c56f98SSadaf Ebrahimi     mbedtls_free(M);
5619*62c56f98SSadaf Ebrahimi     mbedtls_free(Q);
5620*62c56f98SSadaf Ebrahimi 
5621*62c56f98SSadaf Ebrahimi     return ret;
5622*62c56f98SSadaf Ebrahimi }
5623*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
5624*62c56f98SSadaf Ebrahimi 
5625*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) ||   \
5626*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) ||   \
5627*62c56f98SSadaf Ebrahimi     defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
5628*62c56f98SSadaf Ebrahimi 
5629*62c56f98SSadaf Ebrahimi /*
5630*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo P = 2^s - R,
5631*62c56f98SSadaf Ebrahimi  * with R about 33 bits, used by the Koblitz curves.
5632*62c56f98SSadaf Ebrahimi  *
5633*62c56f98SSadaf Ebrahimi  * Write X as A0 + 2^224 A1, return A0 + R * A1.
5634*62c56f98SSadaf Ebrahimi  */
5635*62c56f98SSadaf Ebrahimi #define P_KOBLITZ_R     (8 / sizeof(mbedtls_mpi_uint))            // Limbs in R
5636*62c56f98SSadaf Ebrahimi 
ecp_mod_koblitz(mbedtls_mpi_uint * X,size_t X_limbs,mbedtls_mpi_uint * R,size_t bits)5637*62c56f98SSadaf Ebrahimi static inline int ecp_mod_koblitz(mbedtls_mpi_uint *X,
5638*62c56f98SSadaf Ebrahimi                                   size_t X_limbs,
5639*62c56f98SSadaf Ebrahimi                                   mbedtls_mpi_uint *R,
5640*62c56f98SSadaf Ebrahimi                                   size_t bits)
5641*62c56f98SSadaf Ebrahimi {
5642*62c56f98SSadaf Ebrahimi     int ret = 0;
5643*62c56f98SSadaf Ebrahimi 
5644*62c56f98SSadaf Ebrahimi     /* Determine if A1 is aligned to limb bitsize. If not then the used limbs
5645*62c56f98SSadaf Ebrahimi      * of P, A0 and A1 must be set accordingly and there is a middle limb
5646*62c56f98SSadaf Ebrahimi      * which is shared by A0 and A1 and need to handle accordingly.
5647*62c56f98SSadaf Ebrahimi      */
5648*62c56f98SSadaf Ebrahimi     size_t shift   = bits % biL;
5649*62c56f98SSadaf Ebrahimi     size_t adjust  = (shift + biL - 1) / biL;
5650*62c56f98SSadaf Ebrahimi     size_t P_limbs = bits / biL + adjust;
5651*62c56f98SSadaf Ebrahimi 
5652*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *A1 = mbedtls_calloc(P_limbs, ciL);
5653*62c56f98SSadaf Ebrahimi     if (A1 == NULL) {
5654*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_ALLOC_FAILED;
5655*62c56f98SSadaf Ebrahimi     }
5656*62c56f98SSadaf Ebrahimi 
5657*62c56f98SSadaf Ebrahimi     /* Create a buffer to store the value of `R * A1` */
5658*62c56f98SSadaf Ebrahimi     size_t R_limbs = P_KOBLITZ_R;
5659*62c56f98SSadaf Ebrahimi     size_t M_limbs = P_limbs + R_limbs;
5660*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *M = mbedtls_calloc(M_limbs, ciL);
5661*62c56f98SSadaf Ebrahimi     if (M == NULL) {
5662*62c56f98SSadaf Ebrahimi         ret = MBEDTLS_ERR_ECP_ALLOC_FAILED;
5663*62c56f98SSadaf Ebrahimi         goto cleanup;
5664*62c56f98SSadaf Ebrahimi     }
5665*62c56f98SSadaf Ebrahimi 
5666*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint mask = 0;
5667*62c56f98SSadaf Ebrahimi     if (adjust != 0) {
5668*62c56f98SSadaf Ebrahimi         mask  = ((mbedtls_mpi_uint) 1 << shift) - 1;
5669*62c56f98SSadaf Ebrahimi     }
5670*62c56f98SSadaf Ebrahimi 
5671*62c56f98SSadaf Ebrahimi     /* Two passes are needed to reduce the value of `A0 + R * A1` and then
5672*62c56f98SSadaf Ebrahimi      * we need an additional one to reduce the possible overflow during
5673*62c56f98SSadaf Ebrahimi      * the addition.
5674*62c56f98SSadaf Ebrahimi      */
5675*62c56f98SSadaf Ebrahimi     for (size_t pass = 0; pass < 3; pass++) {
5676*62c56f98SSadaf Ebrahimi         /* Copy A1 */
5677*62c56f98SSadaf Ebrahimi         memcpy(A1, X + P_limbs - adjust, P_limbs * ciL);
5678*62c56f98SSadaf Ebrahimi 
5679*62c56f98SSadaf Ebrahimi         /* Shift A1 to be aligned */
5680*62c56f98SSadaf Ebrahimi         if (shift != 0) {
5681*62c56f98SSadaf Ebrahimi             mbedtls_mpi_core_shift_r(A1, P_limbs, shift);
5682*62c56f98SSadaf Ebrahimi         }
5683*62c56f98SSadaf Ebrahimi 
5684*62c56f98SSadaf Ebrahimi         /* Zeroize the A1 part of the shared limb */
5685*62c56f98SSadaf Ebrahimi         if (mask != 0) {
5686*62c56f98SSadaf Ebrahimi             X[P_limbs - 1] &= mask;
5687*62c56f98SSadaf Ebrahimi         }
5688*62c56f98SSadaf Ebrahimi 
5689*62c56f98SSadaf Ebrahimi         /* X = A0
5690*62c56f98SSadaf Ebrahimi          * Zeroize the A1 part of X to keep only the A0 part.
5691*62c56f98SSadaf Ebrahimi          */
5692*62c56f98SSadaf Ebrahimi         for (size_t i = P_limbs; i < X_limbs; i++) {
5693*62c56f98SSadaf Ebrahimi             X[i] = 0;
5694*62c56f98SSadaf Ebrahimi         }
5695*62c56f98SSadaf Ebrahimi 
5696*62c56f98SSadaf Ebrahimi         /* X = A0 + R * A1 */
5697*62c56f98SSadaf Ebrahimi         mbedtls_mpi_core_mul(M, A1, P_limbs, R, R_limbs);
5698*62c56f98SSadaf Ebrahimi         (void) mbedtls_mpi_core_add(X, X, M, P_limbs + R_limbs);
5699*62c56f98SSadaf Ebrahimi 
5700*62c56f98SSadaf Ebrahimi         /* Carry can not be generated since R is a 33-bit value and stored in
5701*62c56f98SSadaf Ebrahimi          * 64 bits. The result value of the multiplication is at most
5702*62c56f98SSadaf Ebrahimi          * P length + 33 bits in length and the result value of the addition
5703*62c56f98SSadaf Ebrahimi          * is at most P length + 34 bits in length. So the result of the
5704*62c56f98SSadaf Ebrahimi          * addition always fits in P length + 64 bits.
5705*62c56f98SSadaf Ebrahimi          */
5706*62c56f98SSadaf Ebrahimi     }
5707*62c56f98SSadaf Ebrahimi 
5708*62c56f98SSadaf Ebrahimi cleanup:
5709*62c56f98SSadaf Ebrahimi     mbedtls_free(M);
5710*62c56f98SSadaf Ebrahimi     mbedtls_free(A1);
5711*62c56f98SSadaf Ebrahimi 
5712*62c56f98SSadaf Ebrahimi     return ret;
5713*62c56f98SSadaf Ebrahimi }
5714*62c56f98SSadaf Ebrahimi 
5715*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED) ||
5716*62c56f98SSadaf Ebrahimi           MBEDTLS_ECP_DP_SECP224K1_ENABLED) ||
5717*62c56f98SSadaf Ebrahimi           MBEDTLS_ECP_DP_SECP256K1_ENABLED) */
5718*62c56f98SSadaf Ebrahimi 
5719*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
5720*62c56f98SSadaf Ebrahimi 
5721*62c56f98SSadaf Ebrahimi /*
5722*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p192k1 = 2^192 - R,
5723*62c56f98SSadaf Ebrahimi  * with R = 2^32 + 2^12 + 2^8 + 2^7 + 2^6 + 2^3 + 1 = 0x01000011C9
5724*62c56f98SSadaf Ebrahimi  */
ecp_mod_p192k1(mbedtls_mpi * N)5725*62c56f98SSadaf Ebrahimi static int ecp_mod_p192k1(mbedtls_mpi *N)
5726*62c56f98SSadaf Ebrahimi {
5727*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5728*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(192) * 2;
5729*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5730*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p192k1_raw(N->p, expected_width);
5731*62c56f98SSadaf Ebrahimi 
5732*62c56f98SSadaf Ebrahimi cleanup:
5733*62c56f98SSadaf Ebrahimi     return ret;
5734*62c56f98SSadaf Ebrahimi }
5735*62c56f98SSadaf Ebrahimi 
5736*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p192k1_raw(mbedtls_mpi_uint * X,size_t X_limbs)5737*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p192k1_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5738*62c56f98SSadaf Ebrahimi {
5739*62c56f98SSadaf Ebrahimi     static mbedtls_mpi_uint Rp[] = {
5740*62c56f98SSadaf Ebrahimi         MBEDTLS_BYTES_TO_T_UINT_8(0xC9, 0x11, 0x00, 0x00,
5741*62c56f98SSadaf Ebrahimi                                   0x01, 0x00, 0x00, 0x00)
5742*62c56f98SSadaf Ebrahimi     };
5743*62c56f98SSadaf Ebrahimi 
5744*62c56f98SSadaf Ebrahimi     if (X_limbs != BITS_TO_LIMBS(192) * 2) {
5745*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5746*62c56f98SSadaf Ebrahimi     }
5747*62c56f98SSadaf Ebrahimi 
5748*62c56f98SSadaf Ebrahimi     return ecp_mod_koblitz(X, X_limbs, Rp, 192);
5749*62c56f98SSadaf Ebrahimi }
5750*62c56f98SSadaf Ebrahimi 
5751*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
5752*62c56f98SSadaf Ebrahimi 
5753*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
5754*62c56f98SSadaf Ebrahimi 
5755*62c56f98SSadaf Ebrahimi /*
5756*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p224k1 = 2^224 - R,
5757*62c56f98SSadaf Ebrahimi  * with R = 2^32 + 2^12 + 2^11 + 2^9 + 2^7 + 2^4 + 2 + 1 = 0x0100001A93
5758*62c56f98SSadaf Ebrahimi  */
ecp_mod_p224k1(mbedtls_mpi * N)5759*62c56f98SSadaf Ebrahimi static int ecp_mod_p224k1(mbedtls_mpi *N)
5760*62c56f98SSadaf Ebrahimi {
5761*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5762*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(224) * 2;
5763*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5764*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p224k1_raw(N->p, expected_width);
5765*62c56f98SSadaf Ebrahimi 
5766*62c56f98SSadaf Ebrahimi cleanup:
5767*62c56f98SSadaf Ebrahimi     return ret;
5768*62c56f98SSadaf Ebrahimi }
5769*62c56f98SSadaf Ebrahimi 
5770*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p224k1_raw(mbedtls_mpi_uint * X,size_t X_limbs)5771*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p224k1_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5772*62c56f98SSadaf Ebrahimi {
5773*62c56f98SSadaf Ebrahimi     static mbedtls_mpi_uint Rp[] = {
5774*62c56f98SSadaf Ebrahimi         MBEDTLS_BYTES_TO_T_UINT_8(0x93, 0x1A, 0x00, 0x00,
5775*62c56f98SSadaf Ebrahimi                                   0x01, 0x00, 0x00, 0x00)
5776*62c56f98SSadaf Ebrahimi     };
5777*62c56f98SSadaf Ebrahimi 
5778*62c56f98SSadaf Ebrahimi     if (X_limbs !=  BITS_TO_LIMBS(224) * 2) {
5779*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5780*62c56f98SSadaf Ebrahimi     }
5781*62c56f98SSadaf Ebrahimi 
5782*62c56f98SSadaf Ebrahimi     return ecp_mod_koblitz(X, X_limbs, Rp, 224);
5783*62c56f98SSadaf Ebrahimi }
5784*62c56f98SSadaf Ebrahimi 
5785*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
5786*62c56f98SSadaf Ebrahimi 
5787*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
5788*62c56f98SSadaf Ebrahimi 
5789*62c56f98SSadaf Ebrahimi /*
5790*62c56f98SSadaf Ebrahimi  * Fast quasi-reduction modulo p256k1 = 2^256 - R,
5791*62c56f98SSadaf Ebrahimi  * with R = 2^32 + 2^9 + 2^8 + 2^7 + 2^6 + 2^4 + 1 = 0x01000003D1
5792*62c56f98SSadaf Ebrahimi  */
ecp_mod_p256k1(mbedtls_mpi * N)5793*62c56f98SSadaf Ebrahimi static int ecp_mod_p256k1(mbedtls_mpi *N)
5794*62c56f98SSadaf Ebrahimi {
5795*62c56f98SSadaf Ebrahimi     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
5796*62c56f98SSadaf Ebrahimi     size_t expected_width = BITS_TO_LIMBS(256) * 2;
5797*62c56f98SSadaf Ebrahimi     MBEDTLS_MPI_CHK(mbedtls_mpi_grow(N, expected_width));
5798*62c56f98SSadaf Ebrahimi     ret = mbedtls_ecp_mod_p256k1_raw(N->p, expected_width);
5799*62c56f98SSadaf Ebrahimi 
5800*62c56f98SSadaf Ebrahimi cleanup:
5801*62c56f98SSadaf Ebrahimi     return ret;
5802*62c56f98SSadaf Ebrahimi }
5803*62c56f98SSadaf Ebrahimi 
5804*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_mod_p256k1_raw(mbedtls_mpi_uint * X,size_t X_limbs)5805*62c56f98SSadaf Ebrahimi int mbedtls_ecp_mod_p256k1_raw(mbedtls_mpi_uint *X, size_t X_limbs)
5806*62c56f98SSadaf Ebrahimi {
5807*62c56f98SSadaf Ebrahimi     static mbedtls_mpi_uint Rp[] = {
5808*62c56f98SSadaf Ebrahimi         MBEDTLS_BYTES_TO_T_UINT_8(0xD1, 0x03, 0x00, 0x00,
5809*62c56f98SSadaf Ebrahimi                                   0x01, 0x00, 0x00, 0x00)
5810*62c56f98SSadaf Ebrahimi     };
5811*62c56f98SSadaf Ebrahimi 
5812*62c56f98SSadaf Ebrahimi     if (X_limbs != BITS_TO_LIMBS(256) * 2) {
5813*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5814*62c56f98SSadaf Ebrahimi     }
5815*62c56f98SSadaf Ebrahimi 
5816*62c56f98SSadaf Ebrahimi     return ecp_mod_koblitz(X, X_limbs, Rp, 256);
5817*62c56f98SSadaf Ebrahimi }
5818*62c56f98SSadaf Ebrahimi 
5819*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
5820*62c56f98SSadaf Ebrahimi 
5821*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_TEST_HOOKS)
5822*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_modulus_setup(mbedtls_mpi_mod_modulus * N,const mbedtls_ecp_group_id id,const mbedtls_ecp_modulus_type ctype)5823*62c56f98SSadaf Ebrahimi int mbedtls_ecp_modulus_setup(mbedtls_mpi_mod_modulus *N,
5824*62c56f98SSadaf Ebrahimi                               const mbedtls_ecp_group_id id,
5825*62c56f98SSadaf Ebrahimi                               const mbedtls_ecp_modulus_type ctype)
5826*62c56f98SSadaf Ebrahimi {
5827*62c56f98SSadaf Ebrahimi     mbedtls_mpi_modp_fn modp = NULL;
5828*62c56f98SSadaf Ebrahimi     mbedtls_mpi_uint *p = NULL;
5829*62c56f98SSadaf Ebrahimi     size_t p_limbs;
5830*62c56f98SSadaf Ebrahimi 
5831*62c56f98SSadaf Ebrahimi     if (!(ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE || \
5832*62c56f98SSadaf Ebrahimi           ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_SCALAR)) {
5833*62c56f98SSadaf Ebrahimi         return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
5834*62c56f98SSadaf Ebrahimi     }
5835*62c56f98SSadaf Ebrahimi 
5836*62c56f98SSadaf Ebrahimi     switch (id) {
5837*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
5838*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP192R1:
5839*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5840*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_NIST_OPTIM)
5841*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p192_raw;
5842*62c56f98SSadaf Ebrahimi #endif
5843*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp192r1_p;
5844*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp192r1_p));
5845*62c56f98SSadaf Ebrahimi             } else {
5846*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp192r1_n;
5847*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp192r1_n));
5848*62c56f98SSadaf Ebrahimi             }
5849*62c56f98SSadaf Ebrahimi             break;
5850*62c56f98SSadaf Ebrahimi #endif
5851*62c56f98SSadaf Ebrahimi 
5852*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
5853*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP224R1:
5854*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5855*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_NIST_OPTIM)
5856*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p224_raw;
5857*62c56f98SSadaf Ebrahimi #endif
5858*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp224r1_p;
5859*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp224r1_p));
5860*62c56f98SSadaf Ebrahimi             } else {
5861*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp224r1_n;
5862*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp224r1_n));
5863*62c56f98SSadaf Ebrahimi             }
5864*62c56f98SSadaf Ebrahimi             break;
5865*62c56f98SSadaf Ebrahimi #endif
5866*62c56f98SSadaf Ebrahimi 
5867*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
5868*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP256R1:
5869*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5870*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_NIST_OPTIM)
5871*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p256_raw;
5872*62c56f98SSadaf Ebrahimi #endif
5873*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp256r1_p;
5874*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp256r1_p));
5875*62c56f98SSadaf Ebrahimi             } else {
5876*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp256r1_n;
5877*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp256r1_n));
5878*62c56f98SSadaf Ebrahimi             }
5879*62c56f98SSadaf Ebrahimi             break;
5880*62c56f98SSadaf Ebrahimi #endif
5881*62c56f98SSadaf Ebrahimi 
5882*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
5883*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP384R1:
5884*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5885*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_NIST_OPTIM)
5886*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p384_raw;
5887*62c56f98SSadaf Ebrahimi #endif
5888*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp384r1_p;
5889*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp384r1_p));
5890*62c56f98SSadaf Ebrahimi             } else {
5891*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp384r1_n;
5892*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp384r1_n));
5893*62c56f98SSadaf Ebrahimi             }
5894*62c56f98SSadaf Ebrahimi             break;
5895*62c56f98SSadaf Ebrahimi #endif
5896*62c56f98SSadaf Ebrahimi 
5897*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
5898*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP521R1:
5899*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5900*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_NIST_OPTIM)
5901*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p521_raw;
5902*62c56f98SSadaf Ebrahimi #endif
5903*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp521r1_p;
5904*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp521r1_p));
5905*62c56f98SSadaf Ebrahimi             } else {
5906*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp521r1_n;
5907*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp521r1_n));
5908*62c56f98SSadaf Ebrahimi             }
5909*62c56f98SSadaf Ebrahimi             break;
5910*62c56f98SSadaf Ebrahimi #endif
5911*62c56f98SSadaf Ebrahimi 
5912*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
5913*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_BP256R1:
5914*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5915*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) brainpoolP256r1_p;
5916*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP256r1_p));
5917*62c56f98SSadaf Ebrahimi             } else {
5918*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) brainpoolP256r1_n;
5919*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP256r1_n));
5920*62c56f98SSadaf Ebrahimi             }
5921*62c56f98SSadaf Ebrahimi             break;
5922*62c56f98SSadaf Ebrahimi #endif
5923*62c56f98SSadaf Ebrahimi 
5924*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
5925*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_BP384R1:
5926*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5927*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) brainpoolP384r1_p;
5928*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP384r1_p));
5929*62c56f98SSadaf Ebrahimi             } else {
5930*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) brainpoolP384r1_n;
5931*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP384r1_n));
5932*62c56f98SSadaf Ebrahimi             }
5933*62c56f98SSadaf Ebrahimi             break;
5934*62c56f98SSadaf Ebrahimi #endif
5935*62c56f98SSadaf Ebrahimi 
5936*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
5937*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_BP512R1:
5938*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5939*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) brainpoolP512r1_p;
5940*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP512r1_p));
5941*62c56f98SSadaf Ebrahimi             } else {
5942*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) brainpoolP512r1_n;
5943*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(brainpoolP512r1_n));
5944*62c56f98SSadaf Ebrahimi             }
5945*62c56f98SSadaf Ebrahimi             break;
5946*62c56f98SSadaf Ebrahimi #endif
5947*62c56f98SSadaf Ebrahimi 
5948*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
5949*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_CURVE25519:
5950*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5951*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p255_raw;
5952*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) curve25519_p;
5953*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(curve25519_p));
5954*62c56f98SSadaf Ebrahimi             } else {
5955*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) curve25519_n;
5956*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(curve25519_n));
5957*62c56f98SSadaf Ebrahimi             }
5958*62c56f98SSadaf Ebrahimi             break;
5959*62c56f98SSadaf Ebrahimi #endif
5960*62c56f98SSadaf Ebrahimi 
5961*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
5962*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP192K1:
5963*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5964*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p192k1_raw;
5965*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp192k1_p;
5966*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp192k1_p));
5967*62c56f98SSadaf Ebrahimi             } else {
5968*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp192k1_n;
5969*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp192k1_n));
5970*62c56f98SSadaf Ebrahimi             }
5971*62c56f98SSadaf Ebrahimi             break;
5972*62c56f98SSadaf Ebrahimi #endif
5973*62c56f98SSadaf Ebrahimi 
5974*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
5975*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP224K1:
5976*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5977*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p224k1_raw;
5978*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp224k1_p;
5979*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp224k1_p));
5980*62c56f98SSadaf Ebrahimi             } else {
5981*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp224k1_n;
5982*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp224k1_n));
5983*62c56f98SSadaf Ebrahimi             }
5984*62c56f98SSadaf Ebrahimi             break;
5985*62c56f98SSadaf Ebrahimi #endif
5986*62c56f98SSadaf Ebrahimi 
5987*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
5988*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_SECP256K1:
5989*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
5990*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p256k1_raw;
5991*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp256k1_p;
5992*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp256k1_p));
5993*62c56f98SSadaf Ebrahimi             } else {
5994*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) secp256k1_n;
5995*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(secp256k1_n));
5996*62c56f98SSadaf Ebrahimi             }
5997*62c56f98SSadaf Ebrahimi             break;
5998*62c56f98SSadaf Ebrahimi #endif
5999*62c56f98SSadaf Ebrahimi 
6000*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
6001*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_CURVE448:
6002*62c56f98SSadaf Ebrahimi             if (ctype == (mbedtls_ecp_modulus_type) MBEDTLS_ECP_MOD_COORDINATE) {
6003*62c56f98SSadaf Ebrahimi                 modp = &mbedtls_ecp_mod_p448_raw;
6004*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) curve448_p;
6005*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(curve448_p));
6006*62c56f98SSadaf Ebrahimi             } else {
6007*62c56f98SSadaf Ebrahimi                 p = (mbedtls_mpi_uint *) curve448_n;
6008*62c56f98SSadaf Ebrahimi                 p_limbs = CHARS_TO_LIMBS(sizeof(curve448_n));
6009*62c56f98SSadaf Ebrahimi             }
6010*62c56f98SSadaf Ebrahimi             break;
6011*62c56f98SSadaf Ebrahimi #endif
6012*62c56f98SSadaf Ebrahimi 
6013*62c56f98SSadaf Ebrahimi         default:
6014*62c56f98SSadaf Ebrahimi         case MBEDTLS_ECP_DP_NONE:
6015*62c56f98SSadaf Ebrahimi             return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
6016*62c56f98SSadaf Ebrahimi     }
6017*62c56f98SSadaf Ebrahimi 
6018*62c56f98SSadaf Ebrahimi     if (modp != NULL) {
6019*62c56f98SSadaf Ebrahimi         if (mbedtls_mpi_mod_optred_modulus_setup(N, p, p_limbs, modp)) {
6020*62c56f98SSadaf Ebrahimi             return MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
6021*62c56f98SSadaf Ebrahimi         }
6022*62c56f98SSadaf Ebrahimi     } else {
6023*62c56f98SSadaf Ebrahimi         if (mbedtls_mpi_mod_modulus_setup(N, p, p_limbs)) {
6024*62c56f98SSadaf Ebrahimi             return MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
6025*62c56f98SSadaf Ebrahimi         }
6026*62c56f98SSadaf Ebrahimi     }
6027*62c56f98SSadaf Ebrahimi     return 0;
6028*62c56f98SSadaf Ebrahimi }
6029*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_TEST_HOOKS */
6030*62c56f98SSadaf Ebrahimi 
6031*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_TEST_HOOKS)
6032*62c56f98SSadaf Ebrahimi 
6033*62c56f98SSadaf Ebrahimi MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_get_variant(void)6034*62c56f98SSadaf Ebrahimi mbedtls_ecp_variant mbedtls_ecp_get_variant(void)
6035*62c56f98SSadaf Ebrahimi {
6036*62c56f98SSadaf Ebrahimi     return MBEDTLS_ECP_VARIANT_WITH_MPI_UINT;
6037*62c56f98SSadaf Ebrahimi }
6038*62c56f98SSadaf Ebrahimi 
6039*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_TEST_HOOKS */
6040*62c56f98SSadaf Ebrahimi 
6041*62c56f98SSadaf Ebrahimi #endif /* !MBEDTLS_ECP_ALT */
6042*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_LIGHT */
6043*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_ECP_WITH_MPI_UINT */
6044