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