]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Source/mbedtls/include/mbedtls/dhm.h
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Source / mbedtls / include / mbedtls / dhm.h
1 /**\r
2  * \file dhm.h\r
3  *\r
4  * \brief   This file contains Diffie-Hellman-Merkle (DHM) key exchange\r
5  *          definitions and functions.\r
6  *\r
7  * Diffie-Hellman-Merkle (DHM) key exchange is defined in\r
8  * <em>RFC-2631: Diffie-Hellman Key Agreement Method</em> and\r
9  * <em>Public-Key Cryptography Standards (PKCS) #3: Diffie\r
10  * Hellman Key Agreement Standard</em>.\r
11  *\r
12  * <em>RFC-3526: More Modular Exponential (MODP) Diffie-Hellman groups for\r
13  * Internet Key Exchange (IKE)</em> defines a number of standardized\r
14  * Diffie-Hellman groups for IKE.\r
15  *\r
16  * <em>RFC-5114: Additional Diffie-Hellman Groups for Use with IETF\r
17  * Standards</em> defines a number of standardized Diffie-Hellman\r
18  * groups that can be used.\r
19  *\r
20  * \warning  The security of the DHM key exchange relies on the proper choice\r
21  *           of prime modulus - optimally, it should be a safe prime. The usage\r
22  *           of non-safe primes both decreases the difficulty of the underlying\r
23  *           discrete logarithm problem and can lead to small subgroup attacks\r
24  *           leaking private exponent bits when invalid public keys are used\r
25  *           and not detected. This is especially relevant if the same DHM\r
26  *           parameters are reused for multiple key exchanges as in static DHM,\r
27  *           while the criticality of small-subgroup attacks is lower for\r
28  *           ephemeral DHM.\r
29  *\r
30  * \warning  For performance reasons, the code does neither perform primality\r
31  *           nor safe primality tests, nor the expensive checks for invalid\r
32  *           subgroups. Moreover, even if these were performed, non-standardized\r
33  *           primes cannot be trusted because of the possibility of backdoors\r
34  *           that can't be effectively checked for.\r
35  *\r
36  * \warning  Diffie-Hellman-Merkle is therefore a security risk when not using\r
37  *           standardized primes generated using a trustworthy ("nothing up\r
38  *           my sleeve") method, such as the RFC 3526 / 7919 primes. In the TLS\r
39  *           protocol, DH parameters need to be negotiated, so using the default\r
40  *           primes systematically is not always an option. If possible, use\r
41  *           Elliptic Curve Diffie-Hellman (ECDH), which has better performance,\r
42  *           and for which the TLS protocol mandates the use of standard\r
43  *           parameters.\r
44  *\r
45  */\r
46 /*\r
47  *  Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved\r
48  *  SPDX-License-Identifier: Apache-2.0\r
49  *\r
50  *  Licensed under the Apache License, Version 2.0 (the "License"); you may\r
51  *  not use this file except in compliance with the License.\r
52  *  You may obtain a copy of the License at\r
53  *\r
54  *  http://www.apache.org/licenses/LICENSE-2.0\r
55  *\r
56  *  Unless required by applicable law or agreed to in writing, software\r
57  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
58  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
59  *  See the License for the specific language governing permissions and\r
60  *  limitations under the License.\r
61  *\r
62  *  This file is part of Mbed TLS (https://tls.mbed.org)\r
63  */\r
64 \r
65 #ifndef MBEDTLS_DHM_H\r
66 #define MBEDTLS_DHM_H\r
67 \r
68 #if !defined(MBEDTLS_CONFIG_FILE)\r
69 #include "config.h"\r
70 #else\r
71 #include MBEDTLS_CONFIG_FILE\r
72 #endif\r
73 #include "bignum.h"\r
74 \r
75 /*\r
76  * DHM Error codes\r
77  */\r
78 #define MBEDTLS_ERR_DHM_BAD_INPUT_DATA                    -0x3080  /**< Bad input parameters. */\r
79 #define MBEDTLS_ERR_DHM_READ_PARAMS_FAILED                -0x3100  /**< Reading of the DHM parameters failed. */\r
80 #define MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED                -0x3180  /**< Making of the DHM parameters failed. */\r
81 #define MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED                -0x3200  /**< Reading of the public values failed. */\r
82 #define MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED                -0x3280  /**< Making of the public value failed. */\r
83 #define MBEDTLS_ERR_DHM_CALC_SECRET_FAILED                -0x3300  /**< Calculation of the DHM secret failed. */\r
84 #define MBEDTLS_ERR_DHM_INVALID_FORMAT                    -0x3380  /**< The ASN.1 data is not formatted correctly. */\r
85 #define MBEDTLS_ERR_DHM_ALLOC_FAILED                      -0x3400  /**< Allocation of memory failed. */\r
86 #define MBEDTLS_ERR_DHM_FILE_IO_ERROR                     -0x3480  /**< Read or write of file failed. */\r
87 \r
88 /* MBEDTLS_ERR_DHM_HW_ACCEL_FAILED is deprecated and should not be used. */\r
89 #define MBEDTLS_ERR_DHM_HW_ACCEL_FAILED                   -0x3500  /**< DHM hardware accelerator failed. */\r
90 \r
91 #define MBEDTLS_ERR_DHM_SET_GROUP_FAILED                  -0x3580  /**< Setting the modulus and generator failed. */\r
92 \r
93 #ifdef __cplusplus\r
94 extern "C" {\r
95 #endif\r
96 \r
97 #if !defined(MBEDTLS_DHM_ALT)\r
98 \r
99 /**\r
100  * \brief          The DHM context structure.\r
101  */\r
102 typedef struct mbedtls_dhm_context\r
103 {\r
104     size_t len;         /*!<  The size of \p P in Bytes. */\r
105     mbedtls_mpi P;      /*!<  The prime modulus. */\r
106     mbedtls_mpi G;      /*!<  The generator. */\r
107     mbedtls_mpi X;      /*!<  Our secret value. */\r
108     mbedtls_mpi GX;     /*!<  Our public key = \c G^X mod \c P. */\r
109     mbedtls_mpi GY;     /*!<  The public key of the peer = \c G^Y mod \c P. */\r
110     mbedtls_mpi K;      /*!<  The shared secret = \c G^(XY) mod \c P. */\r
111     mbedtls_mpi RP;     /*!<  The cached value = \c R^2 mod \c P. */\r
112     mbedtls_mpi Vi;     /*!<  The blinding value. */\r
113     mbedtls_mpi Vf;     /*!<  The unblinding value. */\r
114     mbedtls_mpi pX;     /*!<  The previous \c X. */\r
115 }\r
116 mbedtls_dhm_context;\r
117 \r
118 #else /* MBEDTLS_DHM_ALT */\r
119 #include "dhm_alt.h"\r
120 #endif /* MBEDTLS_DHM_ALT */\r
121 \r
122 /**\r
123  * \brief          This function initializes the DHM context.\r
124  *\r
125  * \param ctx      The DHM context to initialize.\r
126  */\r
127 void mbedtls_dhm_init( mbedtls_dhm_context *ctx );\r
128 \r
129 /**\r
130  * \brief          This function parses the DHM parameters in a\r
131  *                 TLS ServerKeyExchange handshake message\r
132  *                 (DHM modulus, generator, and public key).\r
133  *\r
134  * \note           In a TLS handshake, this is the how the client\r
135  *                 sets up its DHM context from the server's public\r
136  *                 DHM key material.\r
137  *\r
138  * \param ctx      The DHM context to use. This must be initialized.\r
139  * \param p        On input, *p must be the start of the input buffer.\r
140  *                 On output, *p is updated to point to the end of the data\r
141  *                 that has been read. On success, this is the first byte\r
142  *                 past the end of the ServerKeyExchange parameters.\r
143  *                 On error, this is the point at which an error has been\r
144  *                 detected, which is usually not useful except to debug\r
145  *                 failures.\r
146  * \param end      The end of the input buffer.\r
147  *\r
148  * \return         \c 0 on success.\r
149  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.\r
150  */\r
151 int mbedtls_dhm_read_params( mbedtls_dhm_context *ctx,\r
152                              unsigned char **p,\r
153                              const unsigned char *end );\r
154 \r
155 /**\r
156  * \brief          This function generates a DHM key pair and exports its\r
157  *                 public part together with the DHM parameters in the format\r
158  *                 used in a TLS ServerKeyExchange handshake message.\r
159  *\r
160  * \note           This function assumes that the DHM parameters \c ctx->P\r
161  *                 and \c ctx->G have already been properly set. For that, use\r
162  *                 mbedtls_dhm_set_group() below in conjunction with\r
163  *                 mbedtls_mpi_read_binary() and mbedtls_mpi_read_string().\r
164  *\r
165  * \note           In a TLS handshake, this is the how the server generates\r
166  *                 and exports its DHM key material.\r
167  *\r
168  * \param ctx      The DHM context to use. This must be initialized\r
169  *                 and have the DHM parameters set. It may or may not\r
170  *                 already have imported the peer's public key.\r
171  * \param x_size   The private key size in Bytes.\r
172  * \param olen     The address at which to store the number of Bytes\r
173  *                 written on success. This must not be \c NULL.\r
174  * \param output   The destination buffer. This must be a writable buffer of\r
175  *                 sufficient size to hold the reduced binary presentation of\r
176  *                 the modulus, the generator and the public key, each wrapped\r
177  *                 with a 2-byte length field. It is the responsibility of the\r
178  *                 caller to ensure that enough space is available. Refer to\r
179  *                 mbedtls_mpi_size() to computing the byte-size of an MPI.\r
180  * \param f_rng    The RNG function. Must not be \c NULL.\r
181  * \param p_rng    The RNG context to be passed to \p f_rng. This may be\r
182  *                 \c NULL if \p f_rng doesn't need a context parameter.\r
183  *\r
184  * \return         \c 0 on success.\r
185  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.\r
186  */\r
187 int mbedtls_dhm_make_params( mbedtls_dhm_context *ctx, int x_size,\r
188                      unsigned char *output, size_t *olen,\r
189                      int (*f_rng)(void *, unsigned char *, size_t),\r
190                      void *p_rng );\r
191 \r
192 /**\r
193  * \brief          This function sets the prime modulus and generator.\r
194  *\r
195  * \note           This function can be used to set \c ctx->P, \c ctx->G\r
196  *                 in preparation for mbedtls_dhm_make_params().\r
197  *\r
198  * \param ctx      The DHM context to configure. This must be initialized.\r
199  * \param P        The MPI holding the DHM prime modulus. This must be\r
200  *                 an initialized MPI.\r
201  * \param G        The MPI holding the DHM generator. This must be an\r
202  *                 initialized MPI.\r
203  *\r
204  * \return         \c 0 if successful.\r
205  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.\r
206  */\r
207 int mbedtls_dhm_set_group( mbedtls_dhm_context *ctx,\r
208                            const mbedtls_mpi *P,\r
209                            const mbedtls_mpi *G );\r
210 \r
211 /**\r
212  * \brief          This function imports the raw public value of the peer.\r
213  *\r
214  * \note           In a TLS handshake, this is the how the server imports\r
215  *                 the Client's public DHM key.\r
216  *\r
217  * \param ctx      The DHM context to use. This must be initialized and have\r
218  *                 its DHM parameters set, e.g. via mbedtls_dhm_set_group().\r
219  *                 It may or may not already have generated its own private key.\r
220  * \param input    The input buffer containing the \c G^Y value of the peer.\r
221  *                 This must be a readable buffer of size \p ilen Bytes.\r
222  * \param ilen     The size of the input buffer \p input in Bytes.\r
223  *\r
224  * \return         \c 0 on success.\r
225  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.\r
226  */\r
227 int mbedtls_dhm_read_public( mbedtls_dhm_context *ctx,\r
228                      const unsigned char *input, size_t ilen );\r
229 \r
230 /**\r
231  * \brief          This function creates a DHM key pair and exports\r
232  *                 the raw public key in big-endian format.\r
233  *\r
234  * \note           The destination buffer is always fully written\r
235  *                 so as to contain a big-endian representation of G^X mod P.\r
236  *                 If it is larger than \c ctx->len, it is padded accordingly\r
237  *                 with zero-bytes at the beginning.\r
238  *\r
239  * \param ctx      The DHM context to use. This must be initialized and\r
240  *                 have the DHM parameters set. It may or may not already\r
241  *                 have imported the peer's public key.\r
242  * \param x_size   The private key size in Bytes.\r
243  * \param output   The destination buffer. This must be a writable buffer of\r
244  *                 size \p olen Bytes.\r
245  * \param olen     The length of the destination buffer. This must be at least\r
246  *                 equal to `ctx->len` (the size of \c P).\r
247  * \param f_rng    The RNG function. This must not be \c NULL.\r
248  * \param p_rng    The RNG context to be passed to \p f_rng. This may be \c NULL\r
249  *                 if \p f_rng doesn't need a context argument.\r
250  *\r
251  * \return         \c 0 on success.\r
252  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.\r
253  */\r
254 int mbedtls_dhm_make_public( mbedtls_dhm_context *ctx, int x_size,\r
255                      unsigned char *output, size_t olen,\r
256                      int (*f_rng)(void *, unsigned char *, size_t),\r
257                      void *p_rng );\r
258 \r
259 /**\r
260  * \brief          This function derives and exports the shared secret\r
261  *                 \c (G^Y)^X mod \c P.\r
262  *\r
263  * \note           If \p f_rng is not \c NULL, it is used to blind the input as\r
264  *                 a countermeasure against timing attacks. Blinding is used\r
265  *                 only if our private key \c X is re-used, and not used\r
266  *                 otherwise. We recommend always passing a non-NULL\r
267  *                 \p f_rng argument.\r
268  *\r
269  * \param ctx           The DHM context to use. This must be initialized\r
270  *                      and have its own private key generated and the peer's\r
271  *                      public key imported.\r
272  * \param output        The buffer to write the generated shared key to. This\r
273  *                      must be a writable buffer of size \p output_size Bytes.\r
274  * \param output_size   The size of the destination buffer. This must be at\r
275  *                      least the size of \c ctx->len (the size of \c P).\r
276  * \param olen          On exit, holds the actual number of Bytes written.\r
277  * \param f_rng         The RNG function, for blinding purposes. This may\r
278  *                      b \c NULL if blinding isn't needed.\r
279  * \param p_rng         The RNG context. This may be \c NULL if \p f_rng\r
280  *                      doesn't need a context argument.\r
281  *\r
282  * \return              \c 0 on success.\r
283  * \return              An \c MBEDTLS_ERR_DHM_XXX error code on failure.\r
284  */\r
285 int mbedtls_dhm_calc_secret( mbedtls_dhm_context *ctx,\r
286                      unsigned char *output, size_t output_size, size_t *olen,\r
287                      int (*f_rng)(void *, unsigned char *, size_t),\r
288                      void *p_rng );\r
289 \r
290 /**\r
291  * \brief          This function frees and clears the components\r
292  *                 of a DHM context.\r
293  *\r
294  * \param ctx      The DHM context to free and clear. This may be \c NULL,\r
295  *                 in which case this function is a no-op. If it is not \c NULL,\r
296  *                 it must point to an initialized DHM context.\r
297  */\r
298 void mbedtls_dhm_free( mbedtls_dhm_context *ctx );\r
299 \r
300 #if defined(MBEDTLS_ASN1_PARSE_C)\r
301 /** \ingroup x509_module */\r
302 /**\r
303  * \brief             This function parses DHM parameters in PEM or DER format.\r
304  *\r
305  * \param dhm         The DHM context to import the DHM parameters into.\r
306  *                    This must be initialized.\r
307  * \param dhmin       The input buffer. This must be a readable buffer of\r
308  *                    length \p dhminlen Bytes.\r
309  * \param dhminlen    The size of the input buffer \p dhmin, including the\r
310  *                    terminating \c NULL Byte for PEM data.\r
311  *\r
312  * \return            \c 0 on success.\r
313  * \return            An \c MBEDTLS_ERR_DHM_XXX or \c MBEDTLS_ERR_PEM_XXX error\r
314  *                    code on failure.\r
315  */\r
316 int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin,\r
317                            size_t dhminlen );\r
318 \r
319 #if defined(MBEDTLS_FS_IO)\r
320 /** \ingroup x509_module */\r
321 /**\r
322  * \brief          This function loads and parses DHM parameters from a file.\r
323  *\r
324  * \param dhm      The DHM context to load the parameters to.\r
325  *                 This must be initialized.\r
326  * \param path     The filename to read the DHM parameters from.\r
327  *                 This must not be \c NULL.\r
328  *\r
329  * \return         \c 0 on success.\r
330  * \return         An \c MBEDTLS_ERR_DHM_XXX or \c MBEDTLS_ERR_PEM_XXX\r
331  *                 error code on failure.\r
332  */\r
333 int mbedtls_dhm_parse_dhmfile( mbedtls_dhm_context *dhm, const char *path );\r
334 #endif /* MBEDTLS_FS_IO */\r
335 #endif /* MBEDTLS_ASN1_PARSE_C */\r
336 \r
337 #if defined(MBEDTLS_SELF_TEST)\r
338 \r
339 /**\r
340  * \brief          The DMH checkup routine.\r
341  *\r
342  * \return         \c 0 on success.\r
343  * \return         \c 1 on failure.\r
344  */\r
345 int mbedtls_dhm_self_test( int verbose );\r
346 \r
347 #endif /* MBEDTLS_SELF_TEST */\r
348 #ifdef __cplusplus\r
349 }\r
350 #endif\r
351 \r
352 /**\r
353  * RFC 3526, RFC 5114 and RFC 7919 standardize a number of\r
354  * Diffie-Hellman groups, some of which are included here\r
355  * for use within the SSL/TLS module and the user's convenience\r
356  * when configuring the Diffie-Hellman parameters by hand\r
357  * through \c mbedtls_ssl_conf_dh_param.\r
358  *\r
359  * The following lists the source of the above groups in the standards:\r
360  * - RFC 5114 section 2.2:  2048-bit MODP Group with 224-bit Prime Order Subgroup\r
361  * - RFC 3526 section 3:    2048-bit MODP Group\r
362  * - RFC 3526 section 4:    3072-bit MODP Group\r
363  * - RFC 3526 section 5:    4096-bit MODP Group\r
364  * - RFC 7919 section A.1:  ffdhe2048\r
365  * - RFC 7919 section A.2:  ffdhe3072\r
366  * - RFC 7919 section A.3:  ffdhe4096\r
367  * - RFC 7919 section A.4:  ffdhe6144\r
368  * - RFC 7919 section A.5:  ffdhe8192\r
369  *\r
370  * The constants with suffix "_p" denote the chosen prime moduli, while\r
371  * the constants with suffix "_g" denote the chosen generator\r
372  * of the associated prime field.\r
373  *\r
374  * The constants further suffixed with "_bin" are provided in binary format,\r
375  * while all other constants represent null-terminated strings holding the\r
376  * hexadecimal presentation of the respective numbers.\r
377  *\r
378  * The primes from RFC 3526 and RFC 7919 have been generating by the following\r
379  * trust-worthy procedure:\r
380  * - Fix N in { 2048, 3072, 4096, 6144, 8192 } and consider the N-bit number\r
381  *   the first and last 64 bits are all 1, and the remaining N - 128 bits of\r
382  *   which are 0x7ff...ff.\r
383  * - Add the smallest multiple of the first N - 129 bits of the binary expansion\r
384  *   of pi (for RFC 5236) or e (for RFC 7919) to this intermediate bit-string\r
385  *   such that the resulting integer is a safe-prime.\r
386  * - The result is the respective RFC 3526 / 7919 prime, and the corresponding\r
387  *   generator is always chosen to be 2 (which is a square for these prime,\r
388  *   hence the corresponding subgroup has order (p-1)/2 and avoids leaking a\r
389  *   bit in the private exponent).\r
390  *\r
391  */\r
392 \r
393 #if !defined(MBEDTLS_DEPRECATED_REMOVED)\r
394 \r
395 /**\r
396  * \warning The origin of the primes in RFC 5114 is not documented and\r
397  *          their use therefore constitutes a security risk!\r
398  *\r
399  * \deprecated The hex-encoded primes from RFC 5114 are deprecated and are\r
400  *             likely to be removed in a future version of the library without\r
401  *             replacement.\r
402  */\r
403 \r
404 /**\r
405  * The hexadecimal presentation of the prime underlying the\r
406  * 2048-bit MODP Group with 224-bit Prime Order Subgroup, as defined\r
407  * in <em>RFC-5114: Additional Diffie-Hellman Groups for Use with\r
408  * IETF Standards</em>.\r
409  */\r
410 #define MBEDTLS_DHM_RFC5114_MODP_2048_P                         \\r
411     MBEDTLS_DEPRECATED_STRING_CONSTANT(                         \\r
412         "AD107E1E9123A9D0D660FAA79559C51FA20D64E5683B9FD1"      \\r
413         "B54B1597B61D0A75E6FA141DF95A56DBAF9A3C407BA1DF15"      \\r
414         "EB3D688A309C180E1DE6B85A1274A0A66D3F8152AD6AC212"      \\r
415         "9037C9EDEFDA4DF8D91E8FEF55B7394B7AD5B7D0B6C12207"      \\r
416         "C9F98D11ED34DBF6C6BA0B2C8BBC27BE6A00E0A0B9C49708"      \\r
417         "B3BF8A317091883681286130BC8985DB1602E714415D9330"      \\r
418         "278273C7DE31EFDC7310F7121FD5A07415987D9ADC0A486D"      \\r
419         "CDF93ACC44328387315D75E198C641A480CD86A1B9E587E8"      \\r
420         "BE60E69CC928B2B9C52172E413042E9B23F10B0E16E79763"      \\r
421         "C9B53DCF4BA80A29E3FB73C16B8E75B97EF363E2FFA31F71"      \\r
422         "CF9DE5384E71B81C0AC4DFFE0C10E64F" )\r
423 \r
424 /**\r
425  * The hexadecimal presentation of the chosen generator of the 2048-bit MODP\r
426  * Group with 224-bit Prime Order Subgroup, as defined in <em>RFC-5114:\r
427  * Additional Diffie-Hellman Groups for Use with IETF Standards</em>.\r
428  */\r
429 #define MBEDTLS_DHM_RFC5114_MODP_2048_G                         \\r
430     MBEDTLS_DEPRECATED_STRING_CONSTANT(                         \\r
431         "AC4032EF4F2D9AE39DF30B5C8FFDAC506CDEBE7B89998CAF"      \\r
432         "74866A08CFE4FFE3A6824A4E10B9A6F0DD921F01A70C4AFA"      \\r
433         "AB739D7700C29F52C57DB17C620A8652BE5E9001A8D66AD7"      \\r
434         "C17669101999024AF4D027275AC1348BB8A762D0521BC98A"      \\r
435         "E247150422EA1ED409939D54DA7460CDB5F6C6B250717CBE"      \\r
436         "F180EB34118E98D119529A45D6F834566E3025E316A330EF"      \\r
437         "BB77A86F0C1AB15B051AE3D428C8F8ACB70A8137150B8EEB"      \\r
438         "10E183EDD19963DDD9E263E4770589EF6AA21E7F5F2FF381"      \\r
439         "B539CCE3409D13CD566AFBB48D6C019181E1BCFE94B30269"      \\r
440         "EDFE72FE9B6AA4BD7B5A0F1C71CFFF4C19C418E1F6EC0179"      \\r
441         "81BC087F2A7065B384B890D3191F2BFA" )\r
442 \r
443 /**\r
444  * The hexadecimal presentation of the prime underlying the 2048-bit MODP\r
445  * Group, as defined in <em>RFC-3526: More Modular Exponential (MODP)\r
446  * Diffie-Hellman groups for Internet Key Exchange (IKE)</em>.\r
447  *\r
448  * \deprecated The hex-encoded primes from RFC 3625 are deprecated and\r
449  *             superseded by the corresponding macros providing them as\r
450  *             binary constants. Their hex-encoded constants are likely\r
451  *             to be removed in a future version of the library.\r
452  *\r
453  */\r
454 #define MBEDTLS_DHM_RFC3526_MODP_2048_P                         \\r
455     MBEDTLS_DEPRECATED_STRING_CONSTANT(                         \\r
456         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"      \\r
457         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"      \\r
458         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"      \\r
459         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"      \\r
460         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"      \\r
461         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"      \\r
462         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"      \\r
463         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"      \\r
464         "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"      \\r
465         "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"      \\r
466         "15728E5A8AACAA68FFFFFFFFFFFFFFFF" )\r
467 \r
468 /**\r
469  * The hexadecimal presentation of the chosen generator of the 2048-bit MODP\r
470  * Group, as defined in <em>RFC-3526: More Modular Exponential (MODP)\r
471  * Diffie-Hellman groups for Internet Key Exchange (IKE)</em>.\r
472  */\r
473 #define MBEDTLS_DHM_RFC3526_MODP_2048_G                         \\r
474     MBEDTLS_DEPRECATED_STRING_CONSTANT( "02" )\r
475 \r
476 /**\r
477  * The hexadecimal presentation of the prime underlying the 3072-bit MODP\r
478  * Group, as defined in <em>RFC-3072: More Modular Exponential (MODP)\r
479  * Diffie-Hellman groups for Internet Key Exchange (IKE)</em>.\r
480  */\r
481 #define MBEDTLS_DHM_RFC3526_MODP_3072_P                         \\r
482     MBEDTLS_DEPRECATED_STRING_CONSTANT(                         \\r
483         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"      \\r
484         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"      \\r
485         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"      \\r
486         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"      \\r
487         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"      \\r
488         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"      \\r
489         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"      \\r
490         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"      \\r
491         "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"      \\r
492         "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"      \\r
493         "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"      \\r
494         "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"      \\r
495         "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"      \\r
496         "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"      \\r
497         "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"      \\r
498         "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" )\r
499 \r
500 /**\r
501  * The hexadecimal presentation of the chosen generator of the 3072-bit MODP\r
502  * Group, as defined in <em>RFC-3526: More Modular Exponential (MODP)\r
503  * Diffie-Hellman groups for Internet Key Exchange (IKE)</em>.\r
504  */\r
505 #define MBEDTLS_DHM_RFC3526_MODP_3072_G                      \\r
506     MBEDTLS_DEPRECATED_STRING_CONSTANT( "02" )\r
507 \r
508 /**\r
509  * The hexadecimal presentation of the prime underlying the 4096-bit MODP\r
510  * Group, as defined in <em>RFC-3526: More Modular Exponential (MODP)\r
511  * Diffie-Hellman groups for Internet Key Exchange (IKE)</em>.\r
512  */\r
513 #define MBEDTLS_DHM_RFC3526_MODP_4096_P                      \\r
514     MBEDTLS_DEPRECATED_STRING_CONSTANT(                      \\r
515         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"   \\r
516         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"   \\r
517         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"   \\r
518         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"   \\r
519         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"   \\r
520         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"   \\r
521         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"   \\r
522         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"   \\r
523         "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"   \\r
524         "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"   \\r
525         "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"   \\r
526         "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"   \\r
527         "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"   \\r
528         "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"   \\r
529         "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"   \\r
530         "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"   \\r
531         "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"   \\r
532         "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"   \\r
533         "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"   \\r
534         "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"   \\r
535         "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199"   \\r
536         "FFFFFFFFFFFFFFFF" )\r
537 \r
538 /**\r
539  * The hexadecimal presentation of the chosen generator of the 4096-bit MODP\r
540  * Group, as defined in <em>RFC-3526: More Modular Exponential (MODP)\r
541  * Diffie-Hellman groups for Internet Key Exchange (IKE)</em>.\r
542  */\r
543 #define MBEDTLS_DHM_RFC3526_MODP_4096_G                      \\r
544     MBEDTLS_DEPRECATED_STRING_CONSTANT( "02" )\r
545 \r
546 #endif /* MBEDTLS_DEPRECATED_REMOVED */\r
547 \r
548 /*\r
549  * Trustworthy DHM parameters in binary form\r
550  */\r
551 \r
552 #define MBEDTLS_DHM_RFC3526_MODP_2048_P_BIN {        \\r
553      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \\r
554      0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, \\r
555      0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, \\r
556      0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, \\r
557      0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, \\r
558      0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, \\r
559      0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, \\r
560      0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, \\r
561      0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, \\r
562      0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, \\r
563      0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, \\r
564      0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, \\r
565      0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, \\r
566      0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, \\r
567      0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, \\r
568      0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, \\r
569      0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, \\r
570      0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, \\r
571      0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, \\r
572      0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, \\r
573      0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, \\r
574      0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, \\r
575      0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, \\r
576      0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, \\r
577      0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, \\r
578      0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, \\r
579      0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, \\r
580      0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, \\r
581      0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, \\r
582      0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, \\r
583      0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, \\r
584      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }\r
585 \r
586 #define MBEDTLS_DHM_RFC3526_MODP_2048_G_BIN { 0x02 }\r
587 \r
588 #define MBEDTLS_DHM_RFC3526_MODP_3072_P_BIN {       \\r
589     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \\r
590     0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, \\r
591     0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, \\r
592     0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, \\r
593     0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, \\r
594     0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, \\r
595     0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, \\r
596     0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, \\r
597     0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, \\r
598     0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, \\r
599     0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, \\r
600     0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, \\r
601     0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, \\r
602     0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, \\r
603     0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, \\r
604     0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, \\r
605     0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, \\r
606     0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, \\r
607     0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, \\r
608     0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, \\r
609     0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, \\r
610     0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, \\r
611     0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, \\r
612     0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, \\r
613     0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, \\r
614     0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, \\r
615     0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, \\r
616     0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, \\r
617     0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, \\r
618     0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, \\r
619     0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, \\r
620     0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, \\r
621     0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, \\r
622     0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, \\r
623     0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, \\r
624     0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, \\r
625     0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, \\r
626     0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, \\r
627     0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, \\r
628     0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, \\r
629     0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, \\r
630     0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, \\r
631     0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, \\r
632     0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, \\r
633     0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, \\r
634     0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, \\r
635     0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x3A, 0xD2, 0xCA, \\r
636     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }\r
637 \r
638 #define MBEDTLS_DHM_RFC3526_MODP_3072_G_BIN { 0x02 }\r
639 \r
640 #define MBEDTLS_DHM_RFC3526_MODP_4096_P_BIN  {       \\r
641     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  \\r
642     0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,  \\r
643     0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,  \\r
644     0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,  \\r
645     0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,  \\r
646     0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,  \\r
647     0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,  \\r
648     0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,  \\r
649     0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,  \\r
650     0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,  \\r
651     0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,  \\r
652     0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,  \\r
653     0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,  \\r
654     0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,  \\r
655     0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,  \\r
656     0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,  \\r
657     0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,  \\r
658     0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,  \\r
659     0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,  \\r
660     0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,  \\r
661     0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,  \\r
662     0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,  \\r
663     0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,  \\r
664     0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,  \\r
665     0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,  \\r
666     0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,  \\r
667     0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,  \\r
668     0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,  \\r
669     0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,  \\r
670     0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,  \\r
671     0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D,  \\r
672     0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33,  \\r
673     0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64,  \\r
674     0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A,  \\r
675     0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D,  \\r
676     0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7,  \\r
677     0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7,  \\r
678     0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D,  \\r
679     0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B,  \\r
680     0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64,  \\r
681     0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64,  \\r
682     0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C,  \\r
683     0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C,  \\r
684     0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2,  \\r
685     0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31,  \\r
686     0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E,  \\r
687     0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01,  \\r
688     0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7,  \\r
689     0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26,  \\r
690     0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C,  \\r
691     0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA,  \\r
692     0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8,  \\r
693     0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9,  \\r
694     0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6,  \\r
695     0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D,  \\r
696     0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2,  \\r
697     0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED,  \\r
698     0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF,  \\r
699     0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C,  \\r
700     0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9,  \\r
701     0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1,  \\r
702     0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F,  \\r
703     0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99,  \\r
704     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }\r
705 \r
706 #define MBEDTLS_DHM_RFC3526_MODP_4096_G_BIN { 0x02 }\r
707 \r
708 #define MBEDTLS_DHM_RFC7919_FFDHE2048_P_BIN {        \\r
709      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \\r
710      0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \\r
711      0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \\r
712      0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \\r
713      0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \\r
714      0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \\r
715      0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \\r
716      0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \\r
717      0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \\r
718      0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \\r
719      0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \\r
720      0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \\r
721      0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \\r
722      0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \\r
723      0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \\r
724      0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \\r
725      0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \\r
726      0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \\r
727      0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \\r
728      0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \\r
729      0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \\r
730      0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \\r
731      0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \\r
732      0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \\r
733      0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \\r
734      0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \\r
735      0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \\r
736      0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \\r
737      0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \\r
738      0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \\r
739      0x88, 0x6B, 0x42, 0x38, 0x61, 0x28, 0x5C, 0x97, \\r
740      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }\r
741 \r
742 #define MBEDTLS_DHM_RFC7919_FFDHE2048_G_BIN { 0x02 }\r
743 \r
744 #define MBEDTLS_DHM_RFC7919_FFDHE3072_P_BIN { \\r
745      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \\r
746      0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \\r
747      0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \\r
748      0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \\r
749      0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \\r
750      0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \\r
751      0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \\r
752      0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \\r
753      0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \\r
754      0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \\r
755      0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \\r
756      0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \\r
757      0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \\r
758      0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \\r
759      0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \\r
760      0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \\r
761      0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \\r
762      0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \\r
763      0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \\r
764      0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \\r
765      0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \\r
766      0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \\r
767      0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \\r
768      0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \\r
769      0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \\r
770      0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \\r
771      0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \\r
772      0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \\r
773      0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \\r
774      0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \\r
775      0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \\r
776      0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \\r
777      0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \\r
778      0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \\r
779      0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \\r
780      0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \\r
781      0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \\r
782      0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \\r
783      0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \\r
784      0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \\r
785      0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \\r
786      0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \\r
787      0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \\r
788      0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \\r
789      0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \\r
790      0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \\r
791      0x25, 0xE4, 0x1D, 0x2B, 0x66, 0xC6, 0x2E, 0x37, \\r
792      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }\r
793 \r
794 #define MBEDTLS_DHM_RFC7919_FFDHE3072_G_BIN { 0x02 }\r
795 \r
796 #define MBEDTLS_DHM_RFC7919_FFDHE4096_P_BIN {        \\r
797      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \\r
798      0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \\r
799      0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \\r
800      0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \\r
801      0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \\r
802      0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \\r
803      0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \\r
804      0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \\r
805      0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \\r
806      0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \\r
807      0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \\r
808      0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \\r
809      0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \\r
810      0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \\r
811      0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \\r
812      0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \\r
813      0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \\r
814      0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \\r
815      0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \\r
816      0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \\r
817      0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \\r
818      0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \\r
819      0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \\r
820      0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \\r
821      0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \\r
822      0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \\r
823      0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \\r
824      0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \\r
825      0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \\r
826      0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \\r
827      0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \\r
828      0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \\r
829      0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \\r
830      0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \\r
831      0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \\r
832      0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \\r
833      0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \\r
834      0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \\r
835      0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \\r
836      0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \\r
837      0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \\r
838      0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \\r
839      0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \\r
840      0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \\r
841      0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \\r
842      0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \\r
843      0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \\r
844      0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \\r
845      0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \\r
846      0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \\r
847      0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \\r
848      0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \\r
849      0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \\r
850      0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \\r
851      0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \\r
852      0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \\r
853      0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \\r
854      0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \\r
855      0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \\r
856      0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \\r
857      0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \\r
858      0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \\r
859      0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x65, 0x5F, 0x6A, \\r
860      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }\r
861 \r
862 #define MBEDTLS_DHM_RFC7919_FFDHE4096_G_BIN { 0x02 }\r
863 \r
864 #define MBEDTLS_DHM_RFC7919_FFDHE6144_P_BIN {        \\r
865      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \\r
866      0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \\r
867      0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \\r
868      0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \\r
869      0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \\r
870      0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \\r
871      0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \\r
872      0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \\r
873      0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \\r
874      0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \\r
875      0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \\r
876      0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \\r
877      0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \\r
878      0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \\r
879      0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \\r
880      0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \\r
881      0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \\r
882      0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \\r
883      0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \\r
884      0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \\r
885      0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \\r
886      0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \\r
887      0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \\r
888      0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \\r
889      0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \\r
890      0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \\r
891      0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \\r
892      0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \\r
893      0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \\r
894      0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \\r
895      0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \\r
896      0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \\r
897      0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \\r
898      0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \\r
899      0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \\r
900      0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \\r
901      0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \\r
902      0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \\r
903      0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \\r
904      0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \\r
905      0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \\r
906      0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \\r
907      0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \\r
908      0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \\r
909      0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \\r
910      0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \\r
911      0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \\r
912      0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \\r
913      0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \\r
914      0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \\r
915      0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \\r
916      0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \\r
917      0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \\r
918      0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \\r
919      0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \\r
920      0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \\r
921      0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \\r
922      0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \\r
923      0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \\r
924      0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \\r
925      0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \\r
926      0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \\r
927      0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, \\r
928      0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, \\r
929      0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, 0x2A, 0x3A, \\r
930      0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, \\r
931      0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, \\r
932      0x91, 0x7B, 0xDD, 0x64, 0xB1, 0xC0, 0xFD, 0x4C, \\r
933      0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, \\r
934      0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, \\r
935      0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, 0x1F, \\r
936      0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, \\r
937      0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, \\r
938      0xB8, 0x55, 0x32, 0x2E, 0xDB, 0x63, 0x40, 0xD8, \\r
939      0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, \\r
940      0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, \\r
941      0x7F, 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, \\r
942      0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, \\r
943      0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, \\r
944      0x94, 0xC6, 0x65, 0x1E, 0x77, 0xCA, 0xF9, 0x92, \\r
945      0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, \\r
946      0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, \\r
947      0x0A, 0xE8, 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, \\r
948      0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, \\r
949      0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, \\r
950      0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, 0xA8, 0x46, \\r
951      0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, \\r
952      0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, \\r
953      0x8C, 0xCF, 0x2D, 0xD5, 0xCA, 0xCE, 0xF4, 0x03, \\r
954      0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, \\r
955      0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, \\r
956      0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, 0x69, \\r
957      0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, \\r
958      0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, \\r
959      0xA4, 0x0E, 0x32, 0x9C, 0xD0, 0xE4, 0x0E, 0x65, \\r
960      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }\r
961 \r
962 #define MBEDTLS_DHM_RFC7919_FFDHE6144_G_BIN { 0x02 }\r
963 \r
964 #define MBEDTLS_DHM_RFC7919_FFDHE8192_P_BIN {        \\r
965      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \\r
966      0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \\r
967      0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \\r
968      0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \\r
969      0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \\r
970      0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \\r
971      0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \\r
972      0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \\r
973      0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \\r
974      0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \\r
975      0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \\r
976      0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \\r
977      0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \\r
978      0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \\r
979      0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \\r
980      0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \\r
981      0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \\r
982      0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \\r
983      0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \\r
984      0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \\r
985      0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \\r
986      0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \\r
987      0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \\r
988      0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \\r
989      0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \\r
990      0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \\r
991      0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \\r
992      0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \\r
993      0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \\r
994      0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \\r
995      0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \\r
996      0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \\r
997      0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \\r
998      0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \\r
999      0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \\r
1000      0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \\r
1001      0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \\r
1002      0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \\r
1003      0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \\r
1004      0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \\r
1005      0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \\r
1006      0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \\r
1007      0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \\r
1008      0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \\r
1009      0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \\r
1010      0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \\r
1011      0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \\r
1012      0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \\r
1013      0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \\r
1014      0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \\r
1015      0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \\r
1016      0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \\r
1017      0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \\r
1018      0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \\r
1019      0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \\r
1020      0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \\r
1021      0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \\r
1022      0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \\r
1023      0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \\r
1024      0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \\r
1025      0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \\r
1026      0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \\r
1027      0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, \\r
1028      0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, \\r
1029      0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, 0x2A, 0x3A, \\r
1030      0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, \\r
1031      0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, \\r
1032      0x91, 0x7B, 0xDD, 0x64, 0xB1, 0xC0, 0xFD, 0x4C, \\r
1033      0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, \\r
1034      0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, \\r
1035      0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, 0x1F, \\r
1036      0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, \\r
1037      0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, \\r
1038      0xB8, 0x55, 0x32, 0x2E, 0xDB, 0x63, 0x40, 0xD8, \\r
1039      0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, \\r
1040      0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, \\r
1041      0x7F, 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, \\r
1042      0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, \\r
1043      0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, \\r
1044      0x94, 0xC6, 0x65, 0x1E, 0x77, 0xCA, 0xF9, 0x92, \\r
1045      0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, \\r
1046      0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, \\r
1047      0x0A, 0xE8, 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, \\r
1048      0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, \\r
1049      0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, \\r
1050      0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, 0xA8, 0x46, \\r
1051      0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, \\r
1052      0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, \\r
1053      0x8C, 0xCF, 0x2D, 0xD5, 0xCA, 0xCE, 0xF4, 0x03, \\r
1054      0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, \\r
1055      0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, \\r
1056      0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, 0x69, \\r
1057      0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, \\r
1058      0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, \\r
1059      0xA4, 0x0E, 0x32, 0x9C, 0xCF, 0xF4, 0x6A, 0xAA, \\r
1060      0x36, 0xAD, 0x00, 0x4C, 0xF6, 0x00, 0xC8, 0x38, \\r
1061      0x1E, 0x42, 0x5A, 0x31, 0xD9, 0x51, 0xAE, 0x64, \\r
1062      0xFD, 0xB2, 0x3F, 0xCE, 0xC9, 0x50, 0x9D, 0x43, \\r
1063      0x68, 0x7F, 0xEB, 0x69, 0xED, 0xD1, 0xCC, 0x5E, \\r
1064      0x0B, 0x8C, 0xC3, 0xBD, 0xF6, 0x4B, 0x10, 0xEF, \\r
1065      0x86, 0xB6, 0x31, 0x42, 0xA3, 0xAB, 0x88, 0x29, \\r
1066      0x55, 0x5B, 0x2F, 0x74, 0x7C, 0x93, 0x26, 0x65, \\r
1067      0xCB, 0x2C, 0x0F, 0x1C, 0xC0, 0x1B, 0xD7, 0x02, \\r
1068      0x29, 0x38, 0x88, 0x39, 0xD2, 0xAF, 0x05, 0xE4, \\r
1069      0x54, 0x50, 0x4A, 0xC7, 0x8B, 0x75, 0x82, 0x82, \\r
1070      0x28, 0x46, 0xC0, 0xBA, 0x35, 0xC3, 0x5F, 0x5C, \\r
1071      0x59, 0x16, 0x0C, 0xC0, 0x46, 0xFD, 0x82, 0x51, \\r
1072      0x54, 0x1F, 0xC6, 0x8C, 0x9C, 0x86, 0xB0, 0x22, \\r
1073      0xBB, 0x70, 0x99, 0x87, 0x6A, 0x46, 0x0E, 0x74, \\r
1074      0x51, 0xA8, 0xA9, 0x31, 0x09, 0x70, 0x3F, 0xEE, \\r
1075      0x1C, 0x21, 0x7E, 0x6C, 0x38, 0x26, 0xE5, 0x2C, \\r
1076      0x51, 0xAA, 0x69, 0x1E, 0x0E, 0x42, 0x3C, 0xFC, \\r
1077      0x99, 0xE9, 0xE3, 0x16, 0x50, 0xC1, 0x21, 0x7B, \\r
1078      0x62, 0x48, 0x16, 0xCD, 0xAD, 0x9A, 0x95, 0xF9, \\r
1079      0xD5, 0xB8, 0x01, 0x94, 0x88, 0xD9, 0xC0, 0xA0, \\r
1080      0xA1, 0xFE, 0x30, 0x75, 0xA5, 0x77, 0xE2, 0x31, \\r
1081      0x83, 0xF8, 0x1D, 0x4A, 0x3F, 0x2F, 0xA4, 0x57, \\r
1082      0x1E, 0xFC, 0x8C, 0xE0, 0xBA, 0x8A, 0x4F, 0xE8, \\r
1083      0xB6, 0x85, 0x5D, 0xFE, 0x72, 0xB0, 0xA6, 0x6E, \\r
1084      0xDE, 0xD2, 0xFB, 0xAB, 0xFB, 0xE5, 0x8A, 0x30, \\r
1085      0xFA, 0xFA, 0xBE, 0x1C, 0x5D, 0x71, 0xA8, 0x7E, \\r
1086      0x2F, 0x74, 0x1E, 0xF8, 0xC1, 0xFE, 0x86, 0xFE, \\r
1087      0xA6, 0xBB, 0xFD, 0xE5, 0x30, 0x67, 0x7F, 0x0D, \\r
1088      0x97, 0xD1, 0x1D, 0x49, 0xF7, 0xA8, 0x44, 0x3D, \\r
1089      0x08, 0x22, 0xE5, 0x06, 0xA9, 0xF4, 0x61, 0x4E, \\r
1090      0x01, 0x1E, 0x2A, 0x94, 0x83, 0x8F, 0xF8, 0x8C, \\r
1091      0xD6, 0x8C, 0x8B, 0xB7, 0xC5, 0xC6, 0x42, 0x4C, \\r
1092      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }\r
1093 \r
1094 #define MBEDTLS_DHM_RFC7919_FFDHE8192_G_BIN { 0x02 }\r
1095 \r
1096 #endif /* dhm.h */\r