Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-08-27 09:37:31

0001 /**
0002  * \file dhm.h
0003  *
0004  * \brief   This file contains Diffie-Hellman-Merkle (DHM) key exchange
0005  *          definitions and functions.
0006  *
0007  * Diffie-Hellman-Merkle (DHM) key exchange is defined in
0008  * <em>RFC-2631: Diffie-Hellman Key Agreement Method</em> and
0009  * <em>Public-Key Cryptography Standards (PKCS) #3: Diffie
0010  * Hellman Key Agreement Standard</em>.
0011  *
0012  * <em>RFC-3526: More Modular Exponential (MODP) Diffie-Hellman groups for
0013  * Internet Key Exchange (IKE)</em> defines a number of standardized
0014  * Diffie-Hellman groups for IKE.
0015  *
0016  * <em>RFC-5114: Additional Diffie-Hellman Groups for Use with IETF
0017  * Standards</em> defines a number of standardized Diffie-Hellman
0018  * groups that can be used.
0019  *
0020  * \warning  The security of the DHM key exchange relies on the proper choice
0021  *           of prime modulus - optimally, it should be a safe prime. The usage
0022  *           of non-safe primes both decreases the difficulty of the underlying
0023  *           discrete logarithm problem and can lead to small subgroup attacks
0024  *           leaking private exponent bits when invalid public keys are used
0025  *           and not detected. This is especially relevant if the same DHM
0026  *           parameters are reused for multiple key exchanges as in static DHM,
0027  *           while the criticality of small-subgroup attacks is lower for
0028  *           ephemeral DHM.
0029  *
0030  * \warning  For performance reasons, the code does neither perform primality
0031  *           nor safe primality tests, nor the expensive checks for invalid
0032  *           subgroups. Moreover, even if these were performed, non-standardized
0033  *           primes cannot be trusted because of the possibility of backdoors
0034  *           that can't be effectively checked for.
0035  *
0036  * \warning  Diffie-Hellman-Merkle is therefore a security risk when not using
0037  *           standardized primes generated using a trustworthy ("nothing up
0038  *           my sleeve") method, such as the RFC 3526 / 7919 primes. In the TLS
0039  *           protocol, DH parameters need to be negotiated, so using the default
0040  *           primes systematically is not always an option. If possible, use
0041  *           Elliptic Curve Diffie-Hellman (ECDH), which has better performance,
0042  *           and for which the TLS protocol mandates the use of standard
0043  *           parameters.
0044  *
0045  */
0046 /*
0047  *  Copyright The Mbed TLS Contributors
0048  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
0049  */
0050 
0051 #ifndef MBEDTLS_DHM_H
0052 #define MBEDTLS_DHM_H
0053 #include "mbedtls/private_access.h"
0054 
0055 #include "mbedtls/build_info.h"
0056 #include "mbedtls/bignum.h"
0057 
0058 /*
0059  * DHM Error codes
0060  */
0061 /** Bad input parameters. */
0062 #define MBEDTLS_ERR_DHM_BAD_INPUT_DATA                    -0x3080
0063 /** Reading of the DHM parameters failed. */
0064 #define MBEDTLS_ERR_DHM_READ_PARAMS_FAILED                -0x3100
0065 /** Making of the DHM parameters failed. */
0066 #define MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED                -0x3180
0067 /** Reading of the public values failed. */
0068 #define MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED                -0x3200
0069 /** Making of the public value failed. */
0070 #define MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED                -0x3280
0071 /** Calculation of the DHM secret failed. */
0072 #define MBEDTLS_ERR_DHM_CALC_SECRET_FAILED                -0x3300
0073 /** The ASN.1 data is not formatted correctly. */
0074 #define MBEDTLS_ERR_DHM_INVALID_FORMAT                    -0x3380
0075 /** Allocation of memory failed. */
0076 #define MBEDTLS_ERR_DHM_ALLOC_FAILED                      -0x3400
0077 /** Read or write of file failed. */
0078 #define MBEDTLS_ERR_DHM_FILE_IO_ERROR                     -0x3480
0079 /** Setting the modulus and generator failed. */
0080 #define MBEDTLS_ERR_DHM_SET_GROUP_FAILED                  -0x3580
0081 
0082 /** Which parameter to access in mbedtls_dhm_get_value(). */
0083 typedef enum {
0084     MBEDTLS_DHM_PARAM_P,  /*!<  The prime modulus. */
0085     MBEDTLS_DHM_PARAM_G,  /*!<  The generator. */
0086     MBEDTLS_DHM_PARAM_X,  /*!<  Our secret value. */
0087     MBEDTLS_DHM_PARAM_GX, /*!<  Our public key = \c G^X mod \c P. */
0088     MBEDTLS_DHM_PARAM_GY, /*!<  The public key of the peer = \c G^Y mod \c P. */
0089     MBEDTLS_DHM_PARAM_K,  /*!<  The shared secret = \c G^(XY) mod \c P. */
0090 } mbedtls_dhm_parameter;
0091 
0092 #ifdef __cplusplus
0093 extern "C" {
0094 #endif
0095 
0096 #if !defined(MBEDTLS_DHM_ALT)
0097 
0098 /**
0099  * \brief          The DHM context structure.
0100  */
0101 typedef struct mbedtls_dhm_context {
0102     mbedtls_mpi MBEDTLS_PRIVATE(P);      /*!<  The prime modulus. */
0103     mbedtls_mpi MBEDTLS_PRIVATE(G);      /*!<  The generator. */
0104     mbedtls_mpi MBEDTLS_PRIVATE(X);      /*!<  Our secret value. */
0105     mbedtls_mpi MBEDTLS_PRIVATE(GX);     /*!<  Our public key = \c G^X mod \c P. */
0106     mbedtls_mpi MBEDTLS_PRIVATE(GY);     /*!<  The public key of the peer = \c G^Y mod \c P. */
0107     mbedtls_mpi MBEDTLS_PRIVATE(K);      /*!<  The shared secret = \c G^(XY) mod \c P. */
0108     mbedtls_mpi MBEDTLS_PRIVATE(RP);     /*!<  The cached value = \c R^2 mod \c P. */
0109     mbedtls_mpi MBEDTLS_PRIVATE(Vi);     /*!<  The blinding value. */
0110     mbedtls_mpi MBEDTLS_PRIVATE(Vf);     /*!<  The unblinding value. */
0111     mbedtls_mpi MBEDTLS_PRIVATE(pX);     /*!<  The previous \c X. */
0112 }
0113 mbedtls_dhm_context;
0114 
0115 #else /* MBEDTLS_DHM_ALT */
0116 #include "dhm_alt.h"
0117 #endif /* MBEDTLS_DHM_ALT */
0118 
0119 /**
0120  * \brief          This function initializes the DHM context.
0121  *
0122  * \param ctx      The DHM context to initialize.
0123  */
0124 void mbedtls_dhm_init(mbedtls_dhm_context *ctx);
0125 
0126 /**
0127  * \brief          This function parses the DHM parameters in a
0128  *                 TLS ServerKeyExchange handshake message
0129  *                 (DHM modulus, generator, and public key).
0130  *
0131  * \note           In a TLS handshake, this is the how the client
0132  *                 sets up its DHM context from the server's public
0133  *                 DHM key material.
0134  *
0135  * \param ctx      The DHM context to use. This must be initialized.
0136  * \param p        On input, *p must be the start of the input buffer.
0137  *                 On output, *p is updated to point to the end of the data
0138  *                 that has been read. On success, this is the first byte
0139  *                 past the end of the ServerKeyExchange parameters.
0140  *                 On error, this is the point at which an error has been
0141  *                 detected, which is usually not useful except to debug
0142  *                 failures.
0143  * \param end      The end of the input buffer.
0144  *
0145  * \return         \c 0 on success.
0146  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.
0147  */
0148 int mbedtls_dhm_read_params(mbedtls_dhm_context *ctx,
0149                             unsigned char **p,
0150                             const unsigned char *end);
0151 
0152 /**
0153  * \brief          This function generates a DHM key pair and exports its
0154  *                 public part together with the DHM parameters in the format
0155  *                 used in a TLS ServerKeyExchange handshake message.
0156  *
0157  * \note           This function assumes that the DHM parameters \c ctx->P
0158  *                 and \c ctx->G have already been properly set. For that, use
0159  *                 mbedtls_dhm_set_group() below in conjunction with
0160  *                 mbedtls_mpi_read_binary() and mbedtls_mpi_read_string().
0161  *
0162  * \note           In a TLS handshake, this is the how the server generates
0163  *                 and exports its DHM key material.
0164  *
0165  * \param ctx      The DHM context to use. This must be initialized
0166  *                 and have the DHM parameters set. It may or may not
0167  *                 already have imported the peer's public key.
0168  * \param x_size   The private key size in Bytes.
0169  * \param olen     The address at which to store the number of Bytes
0170  *                 written on success. This must not be \c NULL.
0171  * \param output   The destination buffer. This must be a writable buffer of
0172  *                 sufficient size to hold the reduced binary presentation of
0173  *                 the modulus, the generator and the public key, each wrapped
0174  *                 with a 2-byte length field. It is the responsibility of the
0175  *                 caller to ensure that enough space is available. Refer to
0176  *                 mbedtls_mpi_size() to computing the byte-size of an MPI.
0177  * \param f_rng    The RNG function. Must not be \c NULL.
0178  * \param p_rng    The RNG context to be passed to \p f_rng. This may be
0179  *                 \c NULL if \p f_rng doesn't need a context parameter.
0180  *
0181  * \return         \c 0 on success.
0182  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.
0183  */
0184 int mbedtls_dhm_make_params(mbedtls_dhm_context *ctx, int x_size,
0185                             unsigned char *output, size_t *olen,
0186                             int (*f_rng)(void *, unsigned char *, size_t),
0187                             void *p_rng);
0188 
0189 /**
0190  * \brief          This function sets the prime modulus and generator.
0191  *
0192  * \note           This function can be used to set \c ctx->P, \c ctx->G
0193  *                 in preparation for mbedtls_dhm_make_params().
0194  *
0195  * \param ctx      The DHM context to configure. This must be initialized.
0196  * \param P        The MPI holding the DHM prime modulus. This must be
0197  *                 an initialized MPI.
0198  * \param G        The MPI holding the DHM generator. This must be an
0199  *                 initialized MPI.
0200  *
0201  * \return         \c 0 if successful.
0202  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.
0203  */
0204 int mbedtls_dhm_set_group(mbedtls_dhm_context *ctx,
0205                           const mbedtls_mpi *P,
0206                           const mbedtls_mpi *G);
0207 
0208 /**
0209  * \brief          This function imports the raw public value of the peer.
0210  *
0211  * \note           In a TLS handshake, this is the how the server imports
0212  *                 the Client's public DHM key.
0213  *
0214  * \param ctx      The DHM context to use. This must be initialized and have
0215  *                 its DHM parameters set, e.g. via mbedtls_dhm_set_group().
0216  *                 It may or may not already have generated its own private key.
0217  * \param input    The input buffer containing the \c G^Y value of the peer.
0218  *                 This must be a readable buffer of size \p ilen Bytes.
0219  * \param ilen     The size of the input buffer \p input in Bytes.
0220  *
0221  * \return         \c 0 on success.
0222  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.
0223  */
0224 int mbedtls_dhm_read_public(mbedtls_dhm_context *ctx,
0225                             const unsigned char *input, size_t ilen);
0226 
0227 /**
0228  * \brief          This function creates a DHM key pair and exports
0229  *                 the raw public key in big-endian format.
0230  *
0231  * \note           The destination buffer is always fully written
0232  *                 so as to contain a big-endian representation of G^X mod P.
0233  *                 If it is larger than \c ctx->len, it is padded accordingly
0234  *                 with zero-bytes at the beginning.
0235  *
0236  * \param ctx      The DHM context to use. This must be initialized and
0237  *                 have the DHM parameters set. It may or may not already
0238  *                 have imported the peer's public key.
0239  * \param x_size   The private key size in Bytes.
0240  * \param output   The destination buffer. This must be a writable buffer of
0241  *                 size \p olen Bytes.
0242  * \param olen     The length of the destination buffer. This must be at least
0243  *                 equal to `ctx->len` (the size of \c P).
0244  * \param f_rng    The RNG function. This must not be \c NULL.
0245  * \param p_rng    The RNG context to be passed to \p f_rng. This may be \c NULL
0246  *                 if \p f_rng doesn't need a context argument.
0247  *
0248  * \return         \c 0 on success.
0249  * \return         An \c MBEDTLS_ERR_DHM_XXX error code on failure.
0250  */
0251 int mbedtls_dhm_make_public(mbedtls_dhm_context *ctx, int x_size,
0252                             unsigned char *output, size_t olen,
0253                             int (*f_rng)(void *, unsigned char *, size_t),
0254                             void *p_rng);
0255 
0256 /**
0257  * \brief          This function derives and exports the shared secret
0258  *                 \c (G^Y)^X mod \c P.
0259  *
0260  * \note           If \p f_rng is not \c NULL, it is used to blind the input as
0261  *                 a countermeasure against timing attacks. Blinding is used
0262  *                 only if our private key \c X is re-used, and not used
0263  *                 otherwise. We recommend always passing a non-NULL
0264  *                 \p f_rng argument.
0265  *
0266  * \param ctx           The DHM context to use. This must be initialized
0267  *                      and have its own private key generated and the peer's
0268  *                      public key imported.
0269  * \param output        The buffer to write the generated shared key to. This
0270  *                      must be a writable buffer of size \p output_size Bytes.
0271  * \param output_size   The size of the destination buffer. This must be at
0272  *                      least the size of \c ctx->len (the size of \c P).
0273  * \param olen          On exit, holds the actual number of Bytes written.
0274  * \param f_rng         The RNG function. Must not be \c NULL. Used for
0275  *                      blinding.
0276  * \param p_rng         The RNG context to be passed to \p f_rng. This may be
0277  *                      \c NULL if \p f_rng doesn't need a context parameter.
0278  *
0279  * \return              \c 0 on success.
0280  * \return              An \c MBEDTLS_ERR_DHM_XXX error code on failure.
0281  */
0282 int mbedtls_dhm_calc_secret(mbedtls_dhm_context *ctx,
0283                             unsigned char *output, size_t output_size, size_t *olen,
0284                             int (*f_rng)(void *, unsigned char *, size_t),
0285                             void *p_rng);
0286 
0287 /**
0288  * \brief          This function returns the size of the prime modulus in bits.
0289  *
0290  * \param ctx      The DHM context to query.
0291  *
0292  * \return         The size of the prime modulus in bits,
0293  *                 i.e. the number n such that 2^(n-1) <= P < 2^n.
0294  */
0295 size_t mbedtls_dhm_get_bitlen(const mbedtls_dhm_context *ctx);
0296 
0297 /**
0298  * \brief          This function returns the size of the prime modulus in bytes.
0299  *
0300  * \param ctx      The DHM context to query.
0301  *
0302  * \return         The size of the prime modulus in bytes,
0303  *                 i.e. the number n such that 2^(8*(n-1)) <= P < 2^(8*n).
0304  */
0305 size_t mbedtls_dhm_get_len(const mbedtls_dhm_context *ctx);
0306 
0307 /**
0308  * \brief          This function copies a parameter of a DHM key.
0309  *
0310  * \param ctx      The DHM context to query.
0311  * \param param    The parameter to copy.
0312  * \param dest     The MPI object to copy the value into. It must be
0313  *                 initialized.
0314  *
0315  * \return         \c 0 on success.
0316  * \return         #MBEDTLS_ERR_DHM_BAD_INPUT_DATA if \p param is invalid.
0317  * \return         An \c MBEDTLS_ERR_MPI_XXX error code if the copy fails.
0318  */
0319 int mbedtls_dhm_get_value(const mbedtls_dhm_context *ctx,
0320                           mbedtls_dhm_parameter param,
0321                           mbedtls_mpi *dest);
0322 
0323 /**
0324  * \brief          This function frees and clears the components
0325  *                 of a DHM context.
0326  *
0327  * \param ctx      The DHM context to free and clear. This may be \c NULL,
0328  *                 in which case this function is a no-op. If it is not \c NULL,
0329  *                 it must point to an initialized DHM context.
0330  */
0331 void mbedtls_dhm_free(mbedtls_dhm_context *ctx);
0332 
0333 #if defined(MBEDTLS_ASN1_PARSE_C)
0334 /**
0335  * \brief             This function parses DHM parameters in PEM or DER format.
0336  *
0337  * \param dhm         The DHM context to import the DHM parameters into.
0338  *                    This must be initialized.
0339  * \param dhmin       The input buffer. This must be a readable buffer of
0340  *                    length \p dhminlen Bytes.
0341  * \param dhminlen    The size of the input buffer \p dhmin, including the
0342  *                    terminating \c NULL Byte for PEM data.
0343  *
0344  * \return            \c 0 on success.
0345  * \return            An \c MBEDTLS_ERR_DHM_XXX or \c MBEDTLS_ERR_PEM_XXX error
0346  *                    code on failure.
0347  */
0348 int mbedtls_dhm_parse_dhm(mbedtls_dhm_context *dhm, const unsigned char *dhmin,
0349                           size_t dhminlen);
0350 
0351 #if defined(MBEDTLS_FS_IO)
0352 /**
0353  * \brief          This function loads and parses DHM parameters from a file.
0354  *
0355  * \param dhm      The DHM context to load the parameters to.
0356  *                 This must be initialized.
0357  * \param path     The filename to read the DHM parameters from.
0358  *                 This must not be \c NULL.
0359  *
0360  * \return         \c 0 on success.
0361  * \return         An \c MBEDTLS_ERR_DHM_XXX or \c MBEDTLS_ERR_PEM_XXX
0362  *                 error code on failure.
0363  */
0364 int mbedtls_dhm_parse_dhmfile(mbedtls_dhm_context *dhm, const char *path);
0365 #endif /* MBEDTLS_FS_IO */
0366 #endif /* MBEDTLS_ASN1_PARSE_C */
0367 
0368 #if defined(MBEDTLS_SELF_TEST)
0369 
0370 /**
0371  * \brief          The DMH checkup routine.
0372  *
0373  * \return         \c 0 on success.
0374  * \return         \c 1 on failure.
0375  */
0376 int mbedtls_dhm_self_test(int verbose);
0377 
0378 #endif /* MBEDTLS_SELF_TEST */
0379 #ifdef __cplusplus
0380 }
0381 #endif
0382 
0383 /**
0384  * RFC 3526, RFC 5114 and RFC 7919 standardize a number of
0385  * Diffie-Hellman groups, some of which are included here
0386  * for use within the SSL/TLS module and the user's convenience
0387  * when configuring the Diffie-Hellman parameters by hand
0388  * through \c mbedtls_ssl_conf_dh_param.
0389  *
0390  * The following lists the source of the above groups in the standards:
0391  * - RFC 5114 section 2.2:  2048-bit MODP Group with 224-bit Prime Order Subgroup
0392  * - RFC 3526 section 3:    2048-bit MODP Group
0393  * - RFC 3526 section 4:    3072-bit MODP Group
0394  * - RFC 3526 section 5:    4096-bit MODP Group
0395  * - RFC 7919 section A.1:  ffdhe2048
0396  * - RFC 7919 section A.2:  ffdhe3072
0397  * - RFC 7919 section A.3:  ffdhe4096
0398  * - RFC 7919 section A.4:  ffdhe6144
0399  * - RFC 7919 section A.5:  ffdhe8192
0400  *
0401  * The constants with suffix "_p" denote the chosen prime moduli, while
0402  * the constants with suffix "_g" denote the chosen generator
0403  * of the associated prime field.
0404  *
0405  * The constants further suffixed with "_bin" are provided in binary format,
0406  * while all other constants represent null-terminated strings holding the
0407  * hexadecimal presentation of the respective numbers.
0408  *
0409  * The primes from RFC 3526 and RFC 7919 have been generating by the following
0410  * trust-worthy procedure:
0411  * - Fix N in { 2048, 3072, 4096, 6144, 8192 } and consider the N-bit number
0412  *   the first and last 64 bits are all 1, and the remaining N - 128 bits of
0413  *   which are 0x7ff...ff.
0414  * - Add the smallest multiple of the first N - 129 bits of the binary expansion
0415  *   of pi (for RFC 5236) or e (for RFC 7919) to this intermediate bit-string
0416  *   such that the resulting integer is a safe-prime.
0417  * - The result is the respective RFC 3526 / 7919 prime, and the corresponding
0418  *   generator is always chosen to be 2 (which is a square for these prime,
0419  *   hence the corresponding subgroup has order (p-1)/2 and avoids leaking a
0420  *   bit in the private exponent).
0421  *
0422  */
0423 
0424 /*
0425  * Trustworthy DHM parameters in binary form
0426  */
0427 
0428 #define MBEDTLS_DHM_RFC3526_MODP_2048_P_BIN {        \
0429         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0430         0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, \
0431         0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, \
0432         0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, \
0433         0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, \
0434         0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, \
0435         0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, \
0436         0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, \
0437         0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, \
0438         0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, \
0439         0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, \
0440         0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, \
0441         0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, \
0442         0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, \
0443         0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, \
0444         0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, \
0445         0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, \
0446         0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, \
0447         0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, \
0448         0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, \
0449         0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, \
0450         0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, \
0451         0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, \
0452         0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, \
0453         0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, \
0454         0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, \
0455         0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, \
0456         0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, \
0457         0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, \
0458         0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, \
0459         0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, \
0460         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
0461 
0462 #define MBEDTLS_DHM_RFC3526_MODP_2048_G_BIN { 0x02 }
0463 
0464 #define MBEDTLS_DHM_RFC3526_MODP_3072_P_BIN {       \
0465         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0466         0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, \
0467         0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, \
0468         0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, \
0469         0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, \
0470         0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, \
0471         0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, \
0472         0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, \
0473         0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, \
0474         0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, \
0475         0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, \
0476         0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, \
0477         0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, \
0478         0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, \
0479         0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, \
0480         0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, \
0481         0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, \
0482         0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, \
0483         0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, \
0484         0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, \
0485         0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, \
0486         0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, \
0487         0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, \
0488         0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, \
0489         0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, \
0490         0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, \
0491         0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, \
0492         0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, \
0493         0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, \
0494         0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, \
0495         0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, \
0496         0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, \
0497         0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, \
0498         0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, \
0499         0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, \
0500         0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, \
0501         0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, \
0502         0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, \
0503         0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, \
0504         0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, \
0505         0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, \
0506         0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, \
0507         0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, \
0508         0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, \
0509         0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, \
0510         0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, \
0511         0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x3A, 0xD2, 0xCA, \
0512         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
0513 
0514 #define MBEDTLS_DHM_RFC3526_MODP_3072_G_BIN { 0x02 }
0515 
0516 #define MBEDTLS_DHM_RFC3526_MODP_4096_P_BIN  {       \
0517         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  \
0518         0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,  \
0519         0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,  \
0520         0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,  \
0521         0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,  \
0522         0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,  \
0523         0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,  \
0524         0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,  \
0525         0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,  \
0526         0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,  \
0527         0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,  \
0528         0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,  \
0529         0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,  \
0530         0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,  \
0531         0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,  \
0532         0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,  \
0533         0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,  \
0534         0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,  \
0535         0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,  \
0536         0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,  \
0537         0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,  \
0538         0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,  \
0539         0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,  \
0540         0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,  \
0541         0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,  \
0542         0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,  \
0543         0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,  \
0544         0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,  \
0545         0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,  \
0546         0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,  \
0547         0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D,  \
0548         0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33,  \
0549         0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64,  \
0550         0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A,  \
0551         0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D,  \
0552         0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7,  \
0553         0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7,  \
0554         0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D,  \
0555         0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B,  \
0556         0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64,  \
0557         0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64,  \
0558         0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C,  \
0559         0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C,  \
0560         0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2,  \
0561         0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31,  \
0562         0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E,  \
0563         0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01,  \
0564         0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7,  \
0565         0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26,  \
0566         0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C,  \
0567         0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA,  \
0568         0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8,  \
0569         0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9,  \
0570         0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6,  \
0571         0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D,  \
0572         0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2,  \
0573         0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED,  \
0574         0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF,  \
0575         0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C,  \
0576         0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9,  \
0577         0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1,  \
0578         0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F,  \
0579         0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99,  \
0580         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
0581 
0582 #define MBEDTLS_DHM_RFC3526_MODP_4096_G_BIN { 0x02 }
0583 
0584 #define MBEDTLS_DHM_RFC7919_FFDHE2048_P_BIN {        \
0585         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0586         0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \
0587         0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \
0588         0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \
0589         0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \
0590         0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \
0591         0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \
0592         0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \
0593         0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \
0594         0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \
0595         0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \
0596         0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \
0597         0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \
0598         0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \
0599         0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \
0600         0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \
0601         0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \
0602         0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \
0603         0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \
0604         0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \
0605         0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \
0606         0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \
0607         0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \
0608         0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \
0609         0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \
0610         0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \
0611         0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \
0612         0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \
0613         0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \
0614         0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \
0615         0x88, 0x6B, 0x42, 0x38, 0x61, 0x28, 0x5C, 0x97, \
0616         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }
0617 
0618 #define MBEDTLS_DHM_RFC7919_FFDHE2048_G_BIN { 0x02 }
0619 
0620 #define MBEDTLS_DHM_RFC7919_FFDHE3072_P_BIN { \
0621         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0622         0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \
0623         0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \
0624         0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \
0625         0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \
0626         0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \
0627         0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \
0628         0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \
0629         0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \
0630         0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \
0631         0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \
0632         0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \
0633         0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \
0634         0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \
0635         0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \
0636         0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \
0637         0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \
0638         0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \
0639         0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \
0640         0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \
0641         0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \
0642         0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \
0643         0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \
0644         0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \
0645         0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \
0646         0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \
0647         0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \
0648         0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \
0649         0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \
0650         0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \
0651         0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \
0652         0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \
0653         0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \
0654         0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \
0655         0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \
0656         0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \
0657         0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \
0658         0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \
0659         0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \
0660         0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \
0661         0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \
0662         0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \
0663         0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \
0664         0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \
0665         0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \
0666         0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \
0667         0x25, 0xE4, 0x1D, 0x2B, 0x66, 0xC6, 0x2E, 0x37, \
0668         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
0669 
0670 #define MBEDTLS_DHM_RFC7919_FFDHE3072_G_BIN { 0x02 }
0671 
0672 #define MBEDTLS_DHM_RFC7919_FFDHE4096_P_BIN {        \
0673         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0674         0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \
0675         0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \
0676         0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \
0677         0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \
0678         0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \
0679         0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \
0680         0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \
0681         0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \
0682         0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \
0683         0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \
0684         0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \
0685         0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \
0686         0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \
0687         0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \
0688         0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \
0689         0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \
0690         0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \
0691         0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \
0692         0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \
0693         0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \
0694         0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \
0695         0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \
0696         0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \
0697         0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \
0698         0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \
0699         0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \
0700         0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \
0701         0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \
0702         0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \
0703         0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \
0704         0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \
0705         0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \
0706         0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \
0707         0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \
0708         0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \
0709         0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \
0710         0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \
0711         0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \
0712         0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \
0713         0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \
0714         0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \
0715         0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \
0716         0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \
0717         0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \
0718         0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \
0719         0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \
0720         0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \
0721         0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \
0722         0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \
0723         0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \
0724         0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \
0725         0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \
0726         0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \
0727         0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \
0728         0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \
0729         0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \
0730         0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \
0731         0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \
0732         0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \
0733         0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \
0734         0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \
0735         0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x65, 0x5F, 0x6A, \
0736         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
0737 
0738 #define MBEDTLS_DHM_RFC7919_FFDHE4096_G_BIN { 0x02 }
0739 
0740 #define MBEDTLS_DHM_RFC7919_FFDHE6144_P_BIN {        \
0741         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0742         0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \
0743         0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \
0744         0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \
0745         0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \
0746         0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \
0747         0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \
0748         0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \
0749         0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \
0750         0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \
0751         0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \
0752         0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \
0753         0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \
0754         0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \
0755         0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \
0756         0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \
0757         0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \
0758         0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \
0759         0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \
0760         0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \
0761         0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \
0762         0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \
0763         0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \
0764         0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \
0765         0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \
0766         0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \
0767         0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \
0768         0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \
0769         0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \
0770         0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \
0771         0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \
0772         0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \
0773         0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \
0774         0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \
0775         0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \
0776         0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \
0777         0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \
0778         0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \
0779         0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \
0780         0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \
0781         0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \
0782         0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \
0783         0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \
0784         0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \
0785         0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \
0786         0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \
0787         0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \
0788         0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \
0789         0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \
0790         0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \
0791         0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \
0792         0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \
0793         0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \
0794         0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \
0795         0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \
0796         0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \
0797         0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \
0798         0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \
0799         0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \
0800         0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \
0801         0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \
0802         0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \
0803         0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, \
0804         0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, \
0805         0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, 0x2A, 0x3A, \
0806         0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, \
0807         0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, \
0808         0x91, 0x7B, 0xDD, 0x64, 0xB1, 0xC0, 0xFD, 0x4C, \
0809         0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, \
0810         0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, \
0811         0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, 0x1F, \
0812         0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, \
0813         0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, \
0814         0xB8, 0x55, 0x32, 0x2E, 0xDB, 0x63, 0x40, 0xD8, \
0815         0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, \
0816         0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, \
0817         0x7F, 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, \
0818         0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, \
0819         0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, \
0820         0x94, 0xC6, 0x65, 0x1E, 0x77, 0xCA, 0xF9, 0x92, \
0821         0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, \
0822         0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, \
0823         0x0A, 0xE8, 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, \
0824         0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, \
0825         0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, \
0826         0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, 0xA8, 0x46, \
0827         0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, \
0828         0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, \
0829         0x8C, 0xCF, 0x2D, 0xD5, 0xCA, 0xCE, 0xF4, 0x03, \
0830         0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, \
0831         0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, \
0832         0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, 0x69, \
0833         0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, \
0834         0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, \
0835         0xA4, 0x0E, 0x32, 0x9C, 0xD0, 0xE4, 0x0E, 0x65, \
0836         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
0837 
0838 #define MBEDTLS_DHM_RFC7919_FFDHE6144_G_BIN { 0x02 }
0839 
0840 #define MBEDTLS_DHM_RFC7919_FFDHE8192_P_BIN {        \
0841         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0842         0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \
0843         0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \
0844         0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \
0845         0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \
0846         0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \
0847         0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \
0848         0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \
0849         0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \
0850         0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \
0851         0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \
0852         0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \
0853         0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \
0854         0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \
0855         0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \
0856         0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \
0857         0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \
0858         0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \
0859         0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \
0860         0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \
0861         0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \
0862         0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \
0863         0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \
0864         0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \
0865         0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \
0866         0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \
0867         0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \
0868         0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \
0869         0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \
0870         0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \
0871         0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \
0872         0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \
0873         0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \
0874         0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \
0875         0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \
0876         0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \
0877         0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \
0878         0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \
0879         0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \
0880         0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \
0881         0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \
0882         0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \
0883         0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \
0884         0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \
0885         0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \
0886         0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \
0887         0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \
0888         0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \
0889         0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \
0890         0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \
0891         0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \
0892         0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \
0893         0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \
0894         0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \
0895         0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \
0896         0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \
0897         0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \
0898         0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \
0899         0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \
0900         0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \
0901         0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \
0902         0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \
0903         0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, \
0904         0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, \
0905         0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, 0x2A, 0x3A, \
0906         0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, \
0907         0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, \
0908         0x91, 0x7B, 0xDD, 0x64, 0xB1, 0xC0, 0xFD, 0x4C, \
0909         0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, \
0910         0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, \
0911         0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, 0x1F, \
0912         0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, \
0913         0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, \
0914         0xB8, 0x55, 0x32, 0x2E, 0xDB, 0x63, 0x40, 0xD8, \
0915         0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, \
0916         0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, \
0917         0x7F, 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, \
0918         0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, \
0919         0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, \
0920         0x94, 0xC6, 0x65, 0x1E, 0x77, 0xCA, 0xF9, 0x92, \
0921         0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, \
0922         0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, \
0923         0x0A, 0xE8, 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, \
0924         0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, \
0925         0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, \
0926         0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, 0xA8, 0x46, \
0927         0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, \
0928         0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, \
0929         0x8C, 0xCF, 0x2D, 0xD5, 0xCA, 0xCE, 0xF4, 0x03, \
0930         0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, \
0931         0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, \
0932         0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, 0x69, \
0933         0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, \
0934         0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, \
0935         0xA4, 0x0E, 0x32, 0x9C, 0xCF, 0xF4, 0x6A, 0xAA, \
0936         0x36, 0xAD, 0x00, 0x4C, 0xF6, 0x00, 0xC8, 0x38, \
0937         0x1E, 0x42, 0x5A, 0x31, 0xD9, 0x51, 0xAE, 0x64, \
0938         0xFD, 0xB2, 0x3F, 0xCE, 0xC9, 0x50, 0x9D, 0x43, \
0939         0x68, 0x7F, 0xEB, 0x69, 0xED, 0xD1, 0xCC, 0x5E, \
0940         0x0B, 0x8C, 0xC3, 0xBD, 0xF6, 0x4B, 0x10, 0xEF, \
0941         0x86, 0xB6, 0x31, 0x42, 0xA3, 0xAB, 0x88, 0x29, \
0942         0x55, 0x5B, 0x2F, 0x74, 0x7C, 0x93, 0x26, 0x65, \
0943         0xCB, 0x2C, 0x0F, 0x1C, 0xC0, 0x1B, 0xD7, 0x02, \
0944         0x29, 0x38, 0x88, 0x39, 0xD2, 0xAF, 0x05, 0xE4, \
0945         0x54, 0x50, 0x4A, 0xC7, 0x8B, 0x75, 0x82, 0x82, \
0946         0x28, 0x46, 0xC0, 0xBA, 0x35, 0xC3, 0x5F, 0x5C, \
0947         0x59, 0x16, 0x0C, 0xC0, 0x46, 0xFD, 0x82, 0x51, \
0948         0x54, 0x1F, 0xC6, 0x8C, 0x9C, 0x86, 0xB0, 0x22, \
0949         0xBB, 0x70, 0x99, 0x87, 0x6A, 0x46, 0x0E, 0x74, \
0950         0x51, 0xA8, 0xA9, 0x31, 0x09, 0x70, 0x3F, 0xEE, \
0951         0x1C, 0x21, 0x7E, 0x6C, 0x38, 0x26, 0xE5, 0x2C, \
0952         0x51, 0xAA, 0x69, 0x1E, 0x0E, 0x42, 0x3C, 0xFC, \
0953         0x99, 0xE9, 0xE3, 0x16, 0x50, 0xC1, 0x21, 0x7B, \
0954         0x62, 0x48, 0x16, 0xCD, 0xAD, 0x9A, 0x95, 0xF9, \
0955         0xD5, 0xB8, 0x01, 0x94, 0x88, 0xD9, 0xC0, 0xA0, \
0956         0xA1, 0xFE, 0x30, 0x75, 0xA5, 0x77, 0xE2, 0x31, \
0957         0x83, 0xF8, 0x1D, 0x4A, 0x3F, 0x2F, 0xA4, 0x57, \
0958         0x1E, 0xFC, 0x8C, 0xE0, 0xBA, 0x8A, 0x4F, 0xE8, \
0959         0xB6, 0x85, 0x5D, 0xFE, 0x72, 0xB0, 0xA6, 0x6E, \
0960         0xDE, 0xD2, 0xFB, 0xAB, 0xFB, 0xE5, 0x8A, 0x30, \
0961         0xFA, 0xFA, 0xBE, 0x1C, 0x5D, 0x71, 0xA8, 0x7E, \
0962         0x2F, 0x74, 0x1E, 0xF8, 0xC1, 0xFE, 0x86, 0xFE, \
0963         0xA6, 0xBB, 0xFD, 0xE5, 0x30, 0x67, 0x7F, 0x0D, \
0964         0x97, 0xD1, 0x1D, 0x49, 0xF7, 0xA8, 0x44, 0x3D, \
0965         0x08, 0x22, 0xE5, 0x06, 0xA9, 0xF4, 0x61, 0x4E, \
0966         0x01, 0x1E, 0x2A, 0x94, 0x83, 0x8F, 0xF8, 0x8C, \
0967         0xD6, 0x8C, 0x8B, 0xB7, 0xC5, 0xC6, 0x42, 0x4C, \
0968         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
0969 
0970 #define MBEDTLS_DHM_RFC7919_FFDHE8192_G_BIN { 0x02 }
0971 
0972 #endif /* dhm.h */