]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Source/mbedtls/include/mbedtls/config.h
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Source / mbedtls / include / mbedtls / config.h
1 /**\r
2  * \file config.h\r
3  *\r
4  * \brief Configuration options (set of defines)\r
5  *\r
6  *  This set of compile-time options may be used to enable\r
7  *  or disable features selectively, and reduce the global\r
8  *  memory footprint.\r
9  */\r
10 /*\r
11  *  Copyright (C) 2006-2018, ARM Limited, All Rights Reserved\r
12  *  SPDX-License-Identifier: Apache-2.0\r
13  *\r
14  *  Licensed under the Apache License, Version 2.0 (the "License"); you may\r
15  *  not use this file except in compliance with the License.\r
16  *  You may obtain a copy of the License at\r
17  *\r
18  *  http://www.apache.org/licenses/LICENSE-2.0\r
19  *\r
20  *  Unless required by applicable law or agreed to in writing, software\r
21  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
22  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
23  *  See the License for the specific language governing permissions and\r
24  *  limitations under the License.\r
25  *\r
26  *  This file is part of mbed TLS (https://tls.mbed.org)\r
27  */\r
28 \r
29 #ifndef MBEDTLS_CONFIG_H\r
30 #define MBEDTLS_CONFIG_H\r
31 \r
32 #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)\r
33 #define _CRT_SECURE_NO_DEPRECATE 1\r
34 #endif\r
35 \r
36 /**\r
37  * \name SECTION: System support\r
38  *\r
39  * This section sets system specific settings.\r
40  * \{\r
41  */\r
42 \r
43 /**\r
44  * \def MBEDTLS_HAVE_ASM\r
45  *\r
46  * The compiler has support for asm().\r
47  *\r
48  * Requires support for asm() in compiler.\r
49  *\r
50  * Used in:\r
51  *      library/aria.c\r
52  *      library/timing.c\r
53  *      include/mbedtls/bn_mul.h\r
54  *\r
55  * Required by:\r
56  *      MBEDTLS_AESNI_C\r
57  *      MBEDTLS_PADLOCK_C\r
58  *\r
59  * Comment to disable the use of assembly code.\r
60  */\r
61 #define MBEDTLS_HAVE_ASM\r
62 \r
63 /**\r
64  * \def MBEDTLS_NO_UDBL_DIVISION\r
65  *\r
66  * The platform lacks support for double-width integer division (64-bit\r
67  * division on a 32-bit platform, 128-bit division on a 64-bit platform).\r
68  *\r
69  * Used in:\r
70  *      include/mbedtls/bignum.h\r
71  *      library/bignum.c\r
72  *\r
73  * The bignum code uses double-width division to speed up some operations.\r
74  * Double-width division is often implemented in software that needs to\r
75  * be linked with the program. The presence of a double-width integer\r
76  * type is usually detected automatically through preprocessor macros,\r
77  * but the automatic detection cannot know whether the code needs to\r
78  * and can be linked with an implementation of division for that type.\r
79  * By default division is assumed to be usable if the type is present.\r
80  * Uncomment this option to prevent the use of double-width division.\r
81  *\r
82  * Note that division for the native integer type is always required.\r
83  * Furthermore, a 64-bit type is always required even on a 32-bit\r
84  * platform, but it need not support multiplication or division. In some\r
85  * cases it is also desirable to disable some double-width operations. For\r
86  * example, if double-width division is implemented in software, disabling\r
87  * it can reduce code size in some embedded targets.\r
88  */\r
89 //#define MBEDTLS_NO_UDBL_DIVISION\r
90 \r
91 /**\r
92  * \def MBEDTLS_NO_64BIT_MULTIPLICATION\r
93  *\r
94  * The platform lacks support for 32x32 -> 64-bit multiplication.\r
95  *\r
96  * Used in:\r
97  *      library/poly1305.c\r
98  *\r
99  * Some parts of the library may use multiplication of two unsigned 32-bit\r
100  * operands with a 64-bit result in order to speed up computations. On some\r
101  * platforms, this is not available in hardware and has to be implemented in\r
102  * software, usually in a library provided by the toolchain.\r
103  *\r
104  * Sometimes it is not desirable to have to link to that library. This option\r
105  * removes the dependency of that library on platforms that lack a hardware\r
106  * 64-bit multiplier by embedding a software implementation in Mbed TLS.\r
107  *\r
108  * Note that depending on the compiler, this may decrease performance compared\r
109  * to using the library function provided by the toolchain.\r
110  */\r
111 //#define MBEDTLS_NO_64BIT_MULTIPLICATION\r
112 \r
113 /**\r
114  * \def MBEDTLS_HAVE_SSE2\r
115  *\r
116  * CPU supports SSE2 instruction set.\r
117  *\r
118  * Uncomment if the CPU supports SSE2 (IA-32 specific).\r
119  */\r
120 //#define MBEDTLS_HAVE_SSE2\r
121 \r
122 /**\r
123  * \def MBEDTLS_HAVE_TIME\r
124  *\r
125  * System has time.h and time().\r
126  * The time does not need to be correct, only time differences are used,\r
127  * by contrast with MBEDTLS_HAVE_TIME_DATE\r
128  *\r
129  * Defining MBEDTLS_HAVE_TIME allows you to specify MBEDTLS_PLATFORM_TIME_ALT,\r
130  * MBEDTLS_PLATFORM_TIME_MACRO, MBEDTLS_PLATFORM_TIME_TYPE_MACRO and\r
131  * MBEDTLS_PLATFORM_STD_TIME.\r
132  *\r
133  * Comment if your system does not support time functions\r
134  */\r
135 #define MBEDTLS_HAVE_TIME\r
136 \r
137 /**\r
138  * \def MBEDTLS_HAVE_TIME_DATE\r
139  *\r
140  * System has time.h, time(), and an implementation for\r
141  * mbedtls_platform_gmtime_r() (see below).\r
142  * The time needs to be correct (not necessarily very accurate, but at least\r
143  * the date should be correct). This is used to verify the validity period of\r
144  * X.509 certificates.\r
145  *\r
146  * Comment if your system does not have a correct clock.\r
147  *\r
148  * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that\r
149  * behaves similarly to the gmtime_r() function from the C standard. Refer to\r
150  * the documentation for mbedtls_platform_gmtime_r() for more information.\r
151  *\r
152  * \note It is possible to configure an implementation for\r
153  * mbedtls_platform_gmtime_r() at compile-time by using the macro\r
154  * MBEDTLS_PLATFORM_GMTIME_R_ALT.\r
155  */\r
156 #define MBEDTLS_HAVE_TIME_DATE\r
157 \r
158 /**\r
159  * \def MBEDTLS_PLATFORM_MEMORY\r
160  *\r
161  * Enable the memory allocation layer.\r
162  *\r
163  * By default mbed TLS uses the system-provided calloc() and free().\r
164  * This allows different allocators (self-implemented or provided) to be\r
165  * provided to the platform abstraction layer.\r
166  *\r
167  * Enabling MBEDTLS_PLATFORM_MEMORY without the\r
168  * MBEDTLS_PLATFORM_{FREE,CALLOC}_MACROs will provide\r
169  * "mbedtls_platform_set_calloc_free()" allowing you to set an alternative calloc() and\r
170  * free() function pointer at runtime.\r
171  *\r
172  * Enabling MBEDTLS_PLATFORM_MEMORY and specifying\r
173  * MBEDTLS_PLATFORM_{CALLOC,FREE}_MACROs will allow you to specify the\r
174  * alternate function at compile time.\r
175  *\r
176  * Requires: MBEDTLS_PLATFORM_C\r
177  *\r
178  * Enable this layer to allow use of alternative memory allocators.\r
179  */\r
180 //#define MBEDTLS_PLATFORM_MEMORY\r
181 \r
182 /**\r
183  * \def MBEDTLS_PLATFORM_NO_STD_FUNCTIONS\r
184  *\r
185  * Do not assign standard functions in the platform layer (e.g. calloc() to\r
186  * MBEDTLS_PLATFORM_STD_CALLOC and printf() to MBEDTLS_PLATFORM_STD_PRINTF)\r
187  *\r
188  * This makes sure there are no linking errors on platforms that do not support\r
189  * these functions. You will HAVE to provide alternatives, either at runtime\r
190  * via the platform_set_xxx() functions or at compile time by setting\r
191  * the MBEDTLS_PLATFORM_STD_XXX defines, or enabling a\r
192  * MBEDTLS_PLATFORM_XXX_MACRO.\r
193  *\r
194  * Requires: MBEDTLS_PLATFORM_C\r
195  *\r
196  * Uncomment to prevent default assignment of standard functions in the\r
197  * platform layer.\r
198  */\r
199 //#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS\r
200 \r
201 /**\r
202  * \def MBEDTLS_PLATFORM_EXIT_ALT\r
203  *\r
204  * MBEDTLS_PLATFORM_XXX_ALT: Uncomment a macro to let mbed TLS support the\r
205  * function in the platform abstraction layer.\r
206  *\r
207  * Example: In case you uncomment MBEDTLS_PLATFORM_PRINTF_ALT, mbed TLS will\r
208  * provide a function "mbedtls_platform_set_printf()" that allows you to set an\r
209  * alternative printf function pointer.\r
210  *\r
211  * All these define require MBEDTLS_PLATFORM_C to be defined!\r
212  *\r
213  * \note MBEDTLS_PLATFORM_SNPRINTF_ALT is required on Windows;\r
214  * it will be enabled automatically by check_config.h\r
215  *\r
216  * \warning MBEDTLS_PLATFORM_XXX_ALT cannot be defined at the same time as\r
217  * MBEDTLS_PLATFORM_XXX_MACRO!\r
218  *\r
219  * Requires: MBEDTLS_PLATFORM_TIME_ALT requires MBEDTLS_HAVE_TIME\r
220  *\r
221  * Uncomment a macro to enable alternate implementation of specific base\r
222  * platform function\r
223  */\r
224 //#define MBEDTLS_PLATFORM_EXIT_ALT\r
225 //#define MBEDTLS_PLATFORM_TIME_ALT\r
226 //#define MBEDTLS_PLATFORM_FPRINTF_ALT\r
227 //#define MBEDTLS_PLATFORM_PRINTF_ALT\r
228 //#define MBEDTLS_PLATFORM_SNPRINTF_ALT\r
229 //#define MBEDTLS_PLATFORM_VSNPRINTF_ALT\r
230 //#define MBEDTLS_PLATFORM_NV_SEED_ALT\r
231 //#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT\r
232 \r
233 /**\r
234  * \def MBEDTLS_DEPRECATED_WARNING\r
235  *\r
236  * Mark deprecated functions so that they generate a warning if used.\r
237  * Functions deprecated in one version will usually be removed in the next\r
238  * version. You can enable this to help you prepare the transition to a new\r
239  * major version by making sure your code is not using these functions.\r
240  *\r
241  * This only works with GCC and Clang. With other compilers, you may want to\r
242  * use MBEDTLS_DEPRECATED_REMOVED\r
243  *\r
244  * Uncomment to get warnings on using deprecated functions.\r
245  */\r
246 //#define MBEDTLS_DEPRECATED_WARNING\r
247 \r
248 /**\r
249  * \def MBEDTLS_DEPRECATED_REMOVED\r
250  *\r
251  * Remove deprecated functions so that they generate an error if used.\r
252  * Functions deprecated in one version will usually be removed in the next\r
253  * version. You can enable this to help you prepare the transition to a new\r
254  * major version by making sure your code is not using these functions.\r
255  *\r
256  * Uncomment to get errors on using deprecated functions.\r
257  */\r
258 //#define MBEDTLS_DEPRECATED_REMOVED\r
259 \r
260 /**\r
261  * \def MBEDTLS_CHECK_PARAMS\r
262  *\r
263  * This configuration option controls whether the library validates more of\r
264  * the parameters passed to it.\r
265  *\r
266  * When this flag is not defined, the library only attempts to validate an\r
267  * input parameter if: (1) they may come from the outside world (such as the\r
268  * network, the filesystem, etc.) or (2) not validating them could result in\r
269  * internal memory errors such as overflowing a buffer controlled by the\r
270  * library. On the other hand, it doesn't attempt to validate parameters whose\r
271  * values are fully controlled by the application (such as pointers).\r
272  *\r
273  * When this flag is defined, the library additionally attempts to validate\r
274  * parameters that are fully controlled by the application, and should always\r
275  * be valid if the application code is fully correct and trusted.\r
276  *\r
277  * For example, when a function accepts as input a pointer to a buffer that may\r
278  * contain untrusted data, and its documentation mentions that this pointer\r
279  * must not be NULL:\r
280  * - the pointer is checked to be non-NULL only if this option is enabled\r
281  * - the content of the buffer is always validated\r
282  *\r
283  * When this flag is defined, if a library function receives a parameter that\r
284  * is invalid, it will:\r
285  * - invoke the macro MBEDTLS_PARAM_FAILED() which by default expands to a\r
286  *   call to the function mbedtls_param_failed()\r
287  * - immediately return (with a specific error code unless the function\r
288  *   returns void and can't communicate an error).\r
289  *\r
290  * When defining this flag, you also need to:\r
291  * - either provide a definition of the function mbedtls_param_failed() in\r
292  *   your application (see platform_util.h for its prototype) as the library\r
293  *   calls that function, but does not provide a default definition for it,\r
294  * - or provide a different definition of the macro MBEDTLS_PARAM_FAILED()\r
295  *   below if the above mechanism is not flexible enough to suit your needs.\r
296  *   See the documentation of this macro later in this file.\r
297  *\r
298  * Uncomment to enable validation of application-controlled parameters.\r
299  */\r
300 //#define MBEDTLS_CHECK_PARAMS\r
301 \r
302 /* \} name SECTION: System support */\r
303 \r
304 /**\r
305  * \name SECTION: mbed TLS feature support\r
306  *\r
307  * This section sets support for features that are or are not needed\r
308  * within the modules that are enabled.\r
309  * \{\r
310  */\r
311 \r
312 /**\r
313  * \def MBEDTLS_TIMING_ALT\r
314  *\r
315  * Uncomment to provide your own alternate implementation for mbedtls_timing_hardclock(),\r
316  * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay()\r
317  *\r
318  * Only works if you have MBEDTLS_TIMING_C enabled.\r
319  *\r
320  * You will need to provide a header "timing_alt.h" and an implementation at\r
321  * compile time.\r
322  */\r
323 //#define MBEDTLS_TIMING_ALT\r
324 \r
325 /**\r
326  * \def MBEDTLS_AES_ALT\r
327  *\r
328  * MBEDTLS__MODULE_NAME__ALT: Uncomment a macro to let mbed TLS use your\r
329  * alternate core implementation of a symmetric crypto, an arithmetic or hash\r
330  * module (e.g. platform specific assembly optimized implementations). Keep\r
331  * in mind that the function prototypes should remain the same.\r
332  *\r
333  * This replaces the whole module. If you only want to replace one of the\r
334  * functions, use one of the MBEDTLS__FUNCTION_NAME__ALT flags.\r
335  *\r
336  * Example: In case you uncomment MBEDTLS_AES_ALT, mbed TLS will no longer\r
337  * provide the "struct mbedtls_aes_context" definition and omit the base\r
338  * function declarations and implementations. "aes_alt.h" will be included from\r
339  * "aes.h" to include the new function definitions.\r
340  *\r
341  * Uncomment a macro to enable alternate implementation of the corresponding\r
342  * module.\r
343  *\r
344  * \warning   MD2, MD4, MD5, ARC4, DES and SHA-1 are considered weak and their\r
345  *            use constitutes a security risk. If possible, we recommend\r
346  *            avoiding dependencies on them, and considering stronger message\r
347  *            digests and ciphers instead.\r
348  *\r
349  */\r
350 //#define MBEDTLS_AES_ALT\r
351 //#define MBEDTLS_ARC4_ALT\r
352 //#define MBEDTLS_ARIA_ALT\r
353 //#define MBEDTLS_BLOWFISH_ALT\r
354 //#define MBEDTLS_CAMELLIA_ALT\r
355 //#define MBEDTLS_CCM_ALT\r
356 //#define MBEDTLS_CHACHA20_ALT\r
357 //#define MBEDTLS_CHACHAPOLY_ALT\r
358 //#define MBEDTLS_CMAC_ALT\r
359 //#define MBEDTLS_DES_ALT\r
360 //#define MBEDTLS_DHM_ALT\r
361 //#define MBEDTLS_ECJPAKE_ALT\r
362 //#define MBEDTLS_GCM_ALT\r
363 //#define MBEDTLS_NIST_KW_ALT\r
364 //#define MBEDTLS_MD2_ALT\r
365 //#define MBEDTLS_MD4_ALT\r
366 //#define MBEDTLS_MD5_ALT\r
367 //#define MBEDTLS_POLY1305_ALT\r
368 //#define MBEDTLS_RIPEMD160_ALT\r
369 //#define MBEDTLS_RSA_ALT\r
370 //#define MBEDTLS_SHA1_ALT\r
371 //#define MBEDTLS_SHA256_ALT\r
372 //#define MBEDTLS_SHA512_ALT\r
373 //#define MBEDTLS_XTEA_ALT\r
374 \r
375 /*\r
376  * When replacing the elliptic curve module, pleace consider, that it is\r
377  * implemented with two .c files:\r
378  *      - ecp.c\r
379  *      - ecp_curves.c\r
380  * You can replace them very much like all the other MBEDTLS__MODULE_NAME__ALT\r
381  * macros as described above. The only difference is that you have to make sure\r
382  * that you provide functionality for both .c files.\r
383  */\r
384 //#define MBEDTLS_ECP_ALT\r
385 \r
386 /**\r
387  * \def MBEDTLS_MD2_PROCESS_ALT\r
388  *\r
389  * MBEDTLS__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use you\r
390  * alternate core implementation of symmetric crypto or hash function. Keep in\r
391  * mind that function prototypes should remain the same.\r
392  *\r
393  * This replaces only one function. The header file from mbed TLS is still\r
394  * used, in contrast to the MBEDTLS__MODULE_NAME__ALT flags.\r
395  *\r
396  * Example: In case you uncomment MBEDTLS_SHA256_PROCESS_ALT, mbed TLS will\r
397  * no longer provide the mbedtls_sha1_process() function, but it will still provide\r
398  * the other function (using your mbedtls_sha1_process() function) and the definition\r
399  * of mbedtls_sha1_context, so your implementation of mbedtls_sha1_process must be compatible\r
400  * with this definition.\r
401  *\r
402  * \note Because of a signature change, the core AES encryption and decryption routines are\r
403  *       currently named mbedtls_aes_internal_encrypt and mbedtls_aes_internal_decrypt,\r
404  *       respectively. When setting up alternative implementations, these functions should\r
405  *       be overridden, but the wrapper functions mbedtls_aes_decrypt and mbedtls_aes_encrypt\r
406  *       must stay untouched.\r
407  *\r
408  * \note If you use the AES_xxx_ALT macros, then is is recommended to also set\r
409  *       MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES\r
410  *       tables.\r
411  *\r
412  * Uncomment a macro to enable alternate implementation of the corresponding\r
413  * function.\r
414  *\r
415  * \warning   MD2, MD4, MD5, DES and SHA-1 are considered weak and their use\r
416  *            constitutes a security risk. If possible, we recommend avoiding\r
417  *            dependencies on them, and considering stronger message digests\r
418  *            and ciphers instead.\r
419  *\r
420  */\r
421 //#define MBEDTLS_MD2_PROCESS_ALT\r
422 //#define MBEDTLS_MD4_PROCESS_ALT\r
423 //#define MBEDTLS_MD5_PROCESS_ALT\r
424 //#define MBEDTLS_RIPEMD160_PROCESS_ALT\r
425 //#define MBEDTLS_SHA1_PROCESS_ALT\r
426 //#define MBEDTLS_SHA256_PROCESS_ALT\r
427 //#define MBEDTLS_SHA512_PROCESS_ALT\r
428 //#define MBEDTLS_DES_SETKEY_ALT\r
429 //#define MBEDTLS_DES_CRYPT_ECB_ALT\r
430 //#define MBEDTLS_DES3_CRYPT_ECB_ALT\r
431 //#define MBEDTLS_AES_SETKEY_ENC_ALT\r
432 //#define MBEDTLS_AES_SETKEY_DEC_ALT\r
433 //#define MBEDTLS_AES_ENCRYPT_ALT\r
434 //#define MBEDTLS_AES_DECRYPT_ALT\r
435 //#define MBEDTLS_ECDH_GEN_PUBLIC_ALT\r
436 //#define MBEDTLS_ECDH_COMPUTE_SHARED_ALT\r
437 //#define MBEDTLS_ECDSA_VERIFY_ALT\r
438 //#define MBEDTLS_ECDSA_SIGN_ALT\r
439 //#define MBEDTLS_ECDSA_GENKEY_ALT\r
440 \r
441 /**\r
442  * \def MBEDTLS_ECP_INTERNAL_ALT\r
443  *\r
444  * Expose a part of the internal interface of the Elliptic Curve Point module.\r
445  *\r
446  * MBEDTLS_ECP__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use your\r
447  * alternative core implementation of elliptic curve arithmetic. Keep in mind\r
448  * that function prototypes should remain the same.\r
449  *\r
450  * This partially replaces one function. The header file from mbed TLS is still\r
451  * used, in contrast to the MBEDTLS_ECP_ALT flag. The original implementation\r
452  * is still present and it is used for group structures not supported by the\r
453  * alternative.\r
454  *\r
455  * Any of these options become available by defining MBEDTLS_ECP_INTERNAL_ALT\r
456  * and implementing the following functions:\r
457  *      unsigned char mbedtls_internal_ecp_grp_capable(\r
458  *          const mbedtls_ecp_group *grp )\r
459  *      int  mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp )\r
460  *      void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp )\r
461  * The mbedtls_internal_ecp_grp_capable function should return 1 if the\r
462  * replacement functions implement arithmetic for the given group and 0\r
463  * otherwise.\r
464  * The functions mbedtls_internal_ecp_init and mbedtls_internal_ecp_free are\r
465  * called before and after each point operation and provide an opportunity to\r
466  * implement optimized set up and tear down instructions.\r
467  *\r
468  * Example: In case you uncomment MBEDTLS_ECP_INTERNAL_ALT and\r
469  * MBEDTLS_ECP_DOUBLE_JAC_ALT, mbed TLS will still provide the ecp_double_jac\r
470  * function, but will use your mbedtls_internal_ecp_double_jac if the group is\r
471  * supported (your mbedtls_internal_ecp_grp_capable function returns 1 when\r
472  * receives it as an argument). If the group is not supported then the original\r
473  * implementation is used. The other functions and the definition of\r
474  * mbedtls_ecp_group and mbedtls_ecp_point will not change, so your\r
475  * implementation of mbedtls_internal_ecp_double_jac and\r
476  * mbedtls_internal_ecp_grp_capable must be compatible with this definition.\r
477  *\r
478  * Uncomment a macro to enable alternate implementation of the corresponding\r
479  * function.\r
480  */\r
481 /* Required for all the functions in this section */\r
482 //#define MBEDTLS_ECP_INTERNAL_ALT\r
483 /* Support for Weierstrass curves with Jacobi representation */\r
484 //#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT\r
485 //#define MBEDTLS_ECP_ADD_MIXED_ALT\r
486 //#define MBEDTLS_ECP_DOUBLE_JAC_ALT\r
487 //#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT\r
488 //#define MBEDTLS_ECP_NORMALIZE_JAC_ALT\r
489 /* Support for curves with Montgomery arithmetic */\r
490 //#define MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT\r
491 //#define MBEDTLS_ECP_RANDOMIZE_MXZ_ALT\r
492 //#define MBEDTLS_ECP_NORMALIZE_MXZ_ALT\r
493 \r
494 /**\r
495  * \def MBEDTLS_TEST_NULL_ENTROPY\r
496  *\r
497  * Enables testing and use of mbed TLS without any configured entropy sources.\r
498  * This permits use of the library on platforms before an entropy source has\r
499  * been integrated (see for example the MBEDTLS_ENTROPY_HARDWARE_ALT or the\r
500  * MBEDTLS_ENTROPY_NV_SEED switches).\r
501  *\r
502  * WARNING! This switch MUST be disabled in production builds, and is suitable\r
503  * only for development.\r
504  * Enabling the switch negates any security provided by the library.\r
505  *\r
506  * Requires MBEDTLS_ENTROPY_C, MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES\r
507  *\r
508  */\r
509 //#define MBEDTLS_TEST_NULL_ENTROPY\r
510 \r
511 /**\r
512  * \def MBEDTLS_ENTROPY_HARDWARE_ALT\r
513  *\r
514  * Uncomment this macro to let mbed TLS use your own implementation of a\r
515  * hardware entropy collector.\r
516  *\r
517  * Your function must be called \c mbedtls_hardware_poll(), have the same\r
518  * prototype as declared in entropy_poll.h, and accept NULL as first argument.\r
519  *\r
520  * Uncomment to use your own hardware entropy collector.\r
521  */\r
522 //#define MBEDTLS_ENTROPY_HARDWARE_ALT\r
523 \r
524 /**\r
525  * \def MBEDTLS_AES_ROM_TABLES\r
526  *\r
527  * Use precomputed AES tables stored in ROM.\r
528  *\r
529  * Uncomment this macro to use precomputed AES tables stored in ROM.\r
530  * Comment this macro to generate AES tables in RAM at runtime.\r
531  *\r
532  * Tradeoff: Using precomputed ROM tables reduces RAM usage by ~8kb\r
533  * (or ~2kb if \c MBEDTLS_AES_FEWER_TABLES is used) and reduces the\r
534  * initialization time before the first AES operation can be performed.\r
535  * It comes at the cost of additional ~8kb ROM use (resp. ~2kb if \c\r
536  * MBEDTLS_AES_FEWER_TABLES below is used), and potentially degraded\r
537  * performance if ROM access is slower than RAM access.\r
538  *\r
539  * This option is independent of \c MBEDTLS_AES_FEWER_TABLES.\r
540  *\r
541  */\r
542 //#define MBEDTLS_AES_ROM_TABLES\r
543 \r
544 /**\r
545  * \def MBEDTLS_AES_FEWER_TABLES\r
546  *\r
547  * Use less ROM/RAM for AES tables.\r
548  *\r
549  * Uncommenting this macro omits 75% of the AES tables from\r
550  * ROM / RAM (depending on the value of \c MBEDTLS_AES_ROM_TABLES)\r
551  * by computing their values on the fly during operations\r
552  * (the tables are entry-wise rotations of one another).\r
553  *\r
554  * Tradeoff: Uncommenting this reduces the RAM / ROM footprint\r
555  * by ~6kb but at the cost of more arithmetic operations during\r
556  * runtime. Specifically, one has to compare 4 accesses within\r
557  * different tables to 4 accesses with additional arithmetic\r
558  * operations within the same table. The performance gain/loss\r
559  * depends on the system and memory details.\r
560  *\r
561  * This option is independent of \c MBEDTLS_AES_ROM_TABLES.\r
562  *\r
563  */\r
564 //#define MBEDTLS_AES_FEWER_TABLES\r
565 \r
566 /**\r
567  * \def MBEDTLS_CAMELLIA_SMALL_MEMORY\r
568  *\r
569  * Use less ROM for the Camellia implementation (saves about 768 bytes).\r
570  *\r
571  * Uncomment this macro to use less memory for Camellia.\r
572  */\r
573 //#define MBEDTLS_CAMELLIA_SMALL_MEMORY\r
574 \r
575 /**\r
576  * \def MBEDTLS_CIPHER_MODE_CBC\r
577  *\r
578  * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.\r
579  */\r
580 #define MBEDTLS_CIPHER_MODE_CBC\r
581 \r
582 /**\r
583  * \def MBEDTLS_CIPHER_MODE_CFB\r
584  *\r
585  * Enable Cipher Feedback mode (CFB) for symmetric ciphers.\r
586  */\r
587 #define MBEDTLS_CIPHER_MODE_CFB\r
588 \r
589 /**\r
590  * \def MBEDTLS_CIPHER_MODE_CTR\r
591  *\r
592  * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.\r
593  */\r
594 #define MBEDTLS_CIPHER_MODE_CTR\r
595 \r
596 /**\r
597  * \def MBEDTLS_CIPHER_MODE_OFB\r
598  *\r
599  * Enable Output Feedback mode (OFB) for symmetric ciphers.\r
600  */\r
601 #define MBEDTLS_CIPHER_MODE_OFB\r
602 \r
603 /**\r
604  * \def MBEDTLS_CIPHER_MODE_XTS\r
605  *\r
606  * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES.\r
607  */\r
608 #define MBEDTLS_CIPHER_MODE_XTS\r
609 \r
610 /**\r
611  * \def MBEDTLS_CIPHER_NULL_CIPHER\r
612  *\r
613  * Enable NULL cipher.\r
614  * Warning: Only do so when you know what you are doing. This allows for\r
615  * encryption or channels without any security!\r
616  *\r
617  * Requires MBEDTLS_ENABLE_WEAK_CIPHERSUITES as well to enable\r
618  * the following ciphersuites:\r
619  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA\r
620  *      MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA\r
621  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA\r
622  *      MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA\r
623  *      MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384\r
624  *      MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256\r
625  *      MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA\r
626  *      MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384\r
627  *      MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256\r
628  *      MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA\r
629  *      MBEDTLS_TLS_RSA_WITH_NULL_SHA256\r
630  *      MBEDTLS_TLS_RSA_WITH_NULL_SHA\r
631  *      MBEDTLS_TLS_RSA_WITH_NULL_MD5\r
632  *      MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384\r
633  *      MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256\r
634  *      MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA\r
635  *      MBEDTLS_TLS_PSK_WITH_NULL_SHA384\r
636  *      MBEDTLS_TLS_PSK_WITH_NULL_SHA256\r
637  *      MBEDTLS_TLS_PSK_WITH_NULL_SHA\r
638  *\r
639  * Uncomment this macro to enable the NULL cipher and ciphersuites\r
640  */\r
641 //#define MBEDTLS_CIPHER_NULL_CIPHER\r
642 \r
643 /**\r
644  * \def MBEDTLS_CIPHER_PADDING_PKCS7\r
645  *\r
646  * MBEDTLS_CIPHER_PADDING_XXX: Uncomment or comment macros to add support for\r
647  * specific padding modes in the cipher layer with cipher modes that support\r
648  * padding (e.g. CBC)\r
649  *\r
650  * If you disable all padding modes, only full blocks can be used with CBC.\r
651  *\r
652  * Enable padding modes in the cipher layer.\r
653  */\r
654 #define MBEDTLS_CIPHER_PADDING_PKCS7\r
655 #define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS\r
656 #define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN\r
657 #define MBEDTLS_CIPHER_PADDING_ZEROS\r
658 \r
659 /**\r
660  * \def MBEDTLS_ENABLE_WEAK_CIPHERSUITES\r
661  *\r
662  * Enable weak ciphersuites in SSL / TLS.\r
663  * Warning: Only do so when you know what you are doing. This allows for\r
664  * channels with virtually no security at all!\r
665  *\r
666  * This enables the following ciphersuites:\r
667  *      MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA\r
668  *      MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA\r
669  *\r
670  * Uncomment this macro to enable weak ciphersuites\r
671  *\r
672  * \warning   DES is considered a weak cipher and its use constitutes a\r
673  *            security risk. We recommend considering stronger ciphers instead.\r
674  */\r
675 //#define MBEDTLS_ENABLE_WEAK_CIPHERSUITES\r
676 \r
677 /**\r
678  * \def MBEDTLS_REMOVE_ARC4_CIPHERSUITES\r
679  *\r
680  * Remove RC4 ciphersuites by default in SSL / TLS.\r
681  * This flag removes the ciphersuites based on RC4 from the default list as\r
682  * returned by mbedtls_ssl_list_ciphersuites(). However, it is still possible to\r
683  * enable (some of) them with mbedtls_ssl_conf_ciphersuites() by including them\r
684  * explicitly.\r
685  *\r
686  * Uncomment this macro to remove RC4 ciphersuites by default.\r
687  */\r
688 #define MBEDTLS_REMOVE_ARC4_CIPHERSUITES\r
689 \r
690 /**\r
691  * \def MBEDTLS_REMOVE_3DES_CIPHERSUITES\r
692  *\r
693  * Remove 3DES ciphersuites by default in SSL / TLS.\r
694  * This flag removes the ciphersuites based on 3DES from the default list as\r
695  * returned by mbedtls_ssl_list_ciphersuites(). However, it is still possible\r
696  * to enable (some of) them with mbedtls_ssl_conf_ciphersuites() by including\r
697  * them explicitly.\r
698  *\r
699  * A man-in-the-browser attacker can recover authentication tokens sent through\r
700  * a TLS connection using a 3DES based cipher suite (see "On the Practical\r
701  * (In-)Security of 64-bit Block Ciphers" by Karthikeyan Bhargavan and Gaëtan\r
702  * Leurent, see https://sweet32.info/SWEET32_CCS16.pdf). If this attack falls\r
703  * in your threat model or you are unsure, then you should keep this option\r
704  * enabled to remove 3DES based cipher suites.\r
705  *\r
706  * Comment this macro to keep 3DES in the default ciphersuite list.\r
707  */\r
708 #define MBEDTLS_REMOVE_3DES_CIPHERSUITES\r
709 \r
710 /**\r
711  * \def MBEDTLS_ECP_DP_SECP192R1_ENABLED\r
712  *\r
713  * MBEDTLS_ECP_XXXX_ENABLED: Enables specific curves within the Elliptic Curve\r
714  * module.  By default all supported curves are enabled.\r
715  *\r
716  * Comment macros to disable the curve and functions for it\r
717  */\r
718 #define MBEDTLS_ECP_DP_SECP192R1_ENABLED\r
719 #define MBEDTLS_ECP_DP_SECP224R1_ENABLED\r
720 #define MBEDTLS_ECP_DP_SECP256R1_ENABLED\r
721 #define MBEDTLS_ECP_DP_SECP384R1_ENABLED\r
722 #define MBEDTLS_ECP_DP_SECP521R1_ENABLED\r
723 #define MBEDTLS_ECP_DP_SECP192K1_ENABLED\r
724 #define MBEDTLS_ECP_DP_SECP224K1_ENABLED\r
725 #define MBEDTLS_ECP_DP_SECP256K1_ENABLED\r
726 #define MBEDTLS_ECP_DP_BP256R1_ENABLED\r
727 #define MBEDTLS_ECP_DP_BP384R1_ENABLED\r
728 #define MBEDTLS_ECP_DP_BP512R1_ENABLED\r
729 #define MBEDTLS_ECP_DP_CURVE25519_ENABLED\r
730 #define MBEDTLS_ECP_DP_CURVE448_ENABLED\r
731 \r
732 /**\r
733  * \def MBEDTLS_ECP_NIST_OPTIM\r
734  *\r
735  * Enable specific 'modulo p' routines for each NIST prime.\r
736  * Depending on the prime and architecture, makes operations 4 to 8 times\r
737  * faster on the corresponding curve.\r
738  *\r
739  * Comment this macro to disable NIST curves optimisation.\r
740  */\r
741 #define MBEDTLS_ECP_NIST_OPTIM\r
742 \r
743 /**\r
744  * \def MBEDTLS_ECP_RESTARTABLE\r
745  *\r
746  * Enable "non-blocking" ECC operations that can return early and be resumed.\r
747  *\r
748  * This allows various functions to pause by returning\r
749  * #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL module,\r
750  * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) and then be called later again in\r
751  * order to further progress and eventually complete their operation. This is\r
752  * controlled through mbedtls_ecp_set_max_ops() which limits the maximum\r
753  * number of ECC operations a function may perform before pausing; see\r
754  * mbedtls_ecp_set_max_ops() for more information.\r
755  *\r
756  * This is useful in non-threaded environments if you want to avoid blocking\r
757  * for too long on ECC (and, hence, X.509 or SSL/TLS) operations.\r
758  *\r
759  * Uncomment this macro to enable restartable ECC computations.\r
760  *\r
761  * \note  This option only works with the default software implementation of\r
762  *        elliptic curve functionality. It is incompatible with\r
763  *        MBEDTLS_ECP_ALT, MBEDTLS_ECDH_XXX_ALT, MBEDTLS_ECDSA_XXX_ALT\r
764  *        and MBEDTLS_ECDH_LEGACY_CONTEXT.\r
765  */\r
766 //#define MBEDTLS_ECP_RESTARTABLE\r
767 \r
768 /**\r
769  * \def MBEDTLS_ECDH_LEGACY_CONTEXT\r
770  *\r
771  * Use a backward compatible ECDH context.\r
772  *\r
773  * Mbed TLS supports two formats for ECDH contexts (#mbedtls_ecdh_context\r
774  * defined in `ecdh.h`). For most applications, the choice of format makes\r
775  * no difference, since all library functions can work with either format,\r
776  * except that the new format is incompatible with MBEDTLS_ECP_RESTARTABLE.\r
777 \r
778  * The new format used when this option is disabled is smaller\r
779  * (56 bytes on a 32-bit platform). In future versions of the library, it\r
780  * will support alternative implementations of ECDH operations.\r
781  * The new format is incompatible with applications that access\r
782  * context fields directly and with restartable ECP operations.\r
783  *\r
784  * Define this macro if you enable MBEDTLS_ECP_RESTARTABLE or if you\r
785  * want to access ECDH context fields directly. Otherwise you should\r
786  * comment out this macro definition.\r
787  *\r
788  * This option has no effect if #MBEDTLS_ECDH_C is not enabled.\r
789  *\r
790  * \note This configuration option is experimental. Future versions of the\r
791  *       library may modify the way the ECDH context layout is configured\r
792  *       and may modify the layout of the new context type.\r
793  */\r
794 #define MBEDTLS_ECDH_LEGACY_CONTEXT\r
795 \r
796 /**\r
797  * \def MBEDTLS_ECDSA_DETERMINISTIC\r
798  *\r
799  * Enable deterministic ECDSA (RFC 6979).\r
800  * Standard ECDSA is "fragile" in the sense that lack of entropy when signing\r
801  * may result in a compromise of the long-term signing key. This is avoided by\r
802  * the deterministic variant.\r
803  *\r
804  * Requires: MBEDTLS_HMAC_DRBG_C\r
805  *\r
806  * Comment this macro to disable deterministic ECDSA.\r
807  */\r
808 #define MBEDTLS_ECDSA_DETERMINISTIC\r
809 \r
810 /**\r
811  * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED\r
812  *\r
813  * Enable the PSK based ciphersuite modes in SSL / TLS.\r
814  *\r
815  * This enables the following ciphersuites (if other requisites are\r
816  * enabled as well):\r
817  *      MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384\r
818  *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384\r
819  *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA\r
820  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384\r
821  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
822  *      MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256\r
823  *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256\r
824  *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA\r
825  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256\r
826  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
827  *      MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA\r
828  *      MBEDTLS_TLS_PSK_WITH_RC4_128_SHA\r
829  */\r
830 #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED\r
831 \r
832 /**\r
833  * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED\r
834  *\r
835  * Enable the DHE-PSK based ciphersuite modes in SSL / TLS.\r
836  *\r
837  * Requires: MBEDTLS_DHM_C\r
838  *\r
839  * This enables the following ciphersuites (if other requisites are\r
840  * enabled as well):\r
841  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384\r
842  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384\r
843  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA\r
844  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384\r
845  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
846  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256\r
847  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256\r
848  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA\r
849  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256\r
850  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
851  *      MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA\r
852  *      MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA\r
853  *\r
854  * \warning    Using DHE constitutes a security risk as it\r
855  *             is not possible to validate custom DH parameters.\r
856  *             If possible, it is recommended users should consider\r
857  *             preferring other methods of key exchange.\r
858  *             See dhm.h for more details.\r
859  *\r
860  */\r
861 #define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED\r
862 \r
863 /**\r
864  * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED\r
865  *\r
866  * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.\r
867  *\r
868  * Requires: MBEDTLS_ECDH_C\r
869  *\r
870  * This enables the following ciphersuites (if other requisites are\r
871  * enabled as well):\r
872  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384\r
873  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA\r
874  *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
875  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256\r
876  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA\r
877  *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
878  *      MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA\r
879  *      MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA\r
880  */\r
881 #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED\r
882 \r
883 /**\r
884  * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED\r
885  *\r
886  * Enable the RSA-PSK based ciphersuite modes in SSL / TLS.\r
887  *\r
888  * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,\r
889  *           MBEDTLS_X509_CRT_PARSE_C\r
890  *\r
891  * This enables the following ciphersuites (if other requisites are\r
892  * enabled as well):\r
893  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384\r
894  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384\r
895  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA\r
896  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384\r
897  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
898  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256\r
899  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256\r
900  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA\r
901  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256\r
902  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
903  *      MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA\r
904  *      MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA\r
905  */\r
906 #define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED\r
907 \r
908 /**\r
909  * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED\r
910  *\r
911  * Enable the RSA-only based ciphersuite modes in SSL / TLS.\r
912  *\r
913  * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,\r
914  *           MBEDTLS_X509_CRT_PARSE_C\r
915  *\r
916  * This enables the following ciphersuites (if other requisites are\r
917  * enabled as well):\r
918  *      MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384\r
919  *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256\r
920  *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA\r
921  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
922  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256\r
923  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA\r
924  *      MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256\r
925  *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256\r
926  *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA\r
927  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
928  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
929  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA\r
930  *      MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA\r
931  *      MBEDTLS_TLS_RSA_WITH_RC4_128_SHA\r
932  *      MBEDTLS_TLS_RSA_WITH_RC4_128_MD5\r
933  */\r
934 #define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED\r
935 \r
936 /**\r
937  * \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED\r
938  *\r
939  * Enable the DHE-RSA based ciphersuite modes in SSL / TLS.\r
940  *\r
941  * Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,\r
942  *           MBEDTLS_X509_CRT_PARSE_C\r
943  *\r
944  * This enables the following ciphersuites (if other requisites are\r
945  * enabled as well):\r
946  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\r
947  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\r
948  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA\r
949  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
950  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256\r
951  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA\r
952  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\r
953  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\r
954  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA\r
955  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
956  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
957  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA\r
958  *      MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA\r
959  *\r
960  * \warning    Using DHE constitutes a security risk as it\r
961  *             is not possible to validate custom DH parameters.\r
962  *             If possible, it is recommended users should consider\r
963  *             preferring other methods of key exchange.\r
964  *             See dhm.h for more details.\r
965  *\r
966  */\r
967 #define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED\r
968 \r
969 /**\r
970  * \def MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED\r
971  *\r
972  * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS.\r
973  *\r
974  * Requires: MBEDTLS_ECDH_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,\r
975  *           MBEDTLS_X509_CRT_PARSE_C\r
976  *\r
977  * This enables the following ciphersuites (if other requisites are\r
978  * enabled as well):\r
979  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\r
980  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\r
981  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\r
982  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
983  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384\r
984  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\r
985  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\r
986  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\r
987  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
988  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
989  *      MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\r
990  *      MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA\r
991  */\r
992 #define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED\r
993 \r
994 /**\r
995  * \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED\r
996  *\r
997  * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.\r
998  *\r
999  * Requires: MBEDTLS_ECDH_C, MBEDTLS_ECDSA_C, MBEDTLS_X509_CRT_PARSE_C,\r
1000  *\r
1001  * This enables the following ciphersuites (if other requisites are\r
1002  * enabled as well):\r
1003  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\r
1004  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\r
1005  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\r
1006  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384\r
1007  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384\r
1008  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\r
1009  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\r
1010  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\r
1011  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256\r
1012  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256\r
1013  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\r
1014  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA\r
1015  */\r
1016 #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED\r
1017 \r
1018 /**\r
1019  * \def MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED\r
1020  *\r
1021  * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.\r
1022  *\r
1023  * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C\r
1024  *\r
1025  * This enables the following ciphersuites (if other requisites are\r
1026  * enabled as well):\r
1027  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA\r
1028  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA\r
1029  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\r
1030  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\r
1031  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\r
1032  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\r
1033  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\r
1034  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\r
1035  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256\r
1036  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384\r
1037  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256\r
1038  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384\r
1039  */\r
1040 #define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED\r
1041 \r
1042 /**\r
1043  * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED\r
1044  *\r
1045  * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS.\r
1046  *\r
1047  * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C\r
1048  *\r
1049  * This enables the following ciphersuites (if other requisites are\r
1050  * enabled as well):\r
1051  *      MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA\r
1052  *      MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA\r
1053  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\r
1054  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\r
1055  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\r
1056  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\r
1057  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\r
1058  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\r
1059  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
1060  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384\r
1061  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
1062  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
1063  */\r
1064 #define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED\r
1065 \r
1066 /**\r
1067  * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED\r
1068  *\r
1069  * Enable the ECJPAKE based ciphersuite modes in SSL / TLS.\r
1070  *\r
1071  * \warning This is currently experimental. EC J-PAKE support is based on the\r
1072  * Thread v1.0.0 specification; incompatible changes to the specification\r
1073  * might still happen. For this reason, this is disabled by default.\r
1074  *\r
1075  * Requires: MBEDTLS_ECJPAKE_C\r
1076  *           MBEDTLS_SHA256_C\r
1077  *           MBEDTLS_ECP_DP_SECP256R1_ENABLED\r
1078  *\r
1079  * This enables the following ciphersuites (if other requisites are\r
1080  * enabled as well):\r
1081  *      MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8\r
1082  */\r
1083 //#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED\r
1084 \r
1085 /**\r
1086  * \def MBEDTLS_PK_PARSE_EC_EXTENDED\r
1087  *\r
1088  * Enhance support for reading EC keys using variants of SEC1 not allowed by\r
1089  * RFC 5915 and RFC 5480.\r
1090  *\r
1091  * Currently this means parsing the SpecifiedECDomain choice of EC\r
1092  * parameters (only known groups are supported, not arbitrary domains, to\r
1093  * avoid validation issues).\r
1094  *\r
1095  * Disable if you only need to support RFC 5915 + 5480 key formats.\r
1096  */\r
1097 #define MBEDTLS_PK_PARSE_EC_EXTENDED\r
1098 \r
1099 /**\r
1100  * \def MBEDTLS_ERROR_STRERROR_DUMMY\r
1101  *\r
1102  * Enable a dummy error function to make use of mbedtls_strerror() in\r
1103  * third party libraries easier when MBEDTLS_ERROR_C is disabled\r
1104  * (no effect when MBEDTLS_ERROR_C is enabled).\r
1105  *\r
1106  * You can safely disable this if MBEDTLS_ERROR_C is enabled, or if you're\r
1107  * not using mbedtls_strerror() or error_strerror() in your application.\r
1108  *\r
1109  * Disable if you run into name conflicts and want to really remove the\r
1110  * mbedtls_strerror()\r
1111  */\r
1112 #define MBEDTLS_ERROR_STRERROR_DUMMY\r
1113 \r
1114 /**\r
1115  * \def MBEDTLS_GENPRIME\r
1116  *\r
1117  * Enable the prime-number generation code.\r
1118  *\r
1119  * Requires: MBEDTLS_BIGNUM_C\r
1120  */\r
1121 #define MBEDTLS_GENPRIME\r
1122 \r
1123 /**\r
1124  * \def MBEDTLS_FS_IO\r
1125  *\r
1126  * Enable functions that use the filesystem.\r
1127  */\r
1128 #define MBEDTLS_FS_IO\r
1129 \r
1130 /**\r
1131  * \def MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES\r
1132  *\r
1133  * Do not add default entropy sources. These are the platform specific,\r
1134  * mbedtls_timing_hardclock and HAVEGE based poll functions.\r
1135  *\r
1136  * This is useful to have more control over the added entropy sources in an\r
1137  * application.\r
1138  *\r
1139  * Uncomment this macro to prevent loading of default entropy functions.\r
1140  */\r
1141 //#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES\r
1142 \r
1143 /**\r
1144  * \def MBEDTLS_NO_PLATFORM_ENTROPY\r
1145  *\r
1146  * Do not use built-in platform entropy functions.\r
1147  * This is useful if your platform does not support\r
1148  * standards like the /dev/urandom or Windows CryptoAPI.\r
1149  *\r
1150  * Uncomment this macro to disable the built-in platform entropy functions.\r
1151  */\r
1152 //#define MBEDTLS_NO_PLATFORM_ENTROPY\r
1153 \r
1154 /**\r
1155  * \def MBEDTLS_ENTROPY_FORCE_SHA256\r
1156  *\r
1157  * Force the entropy accumulator to use a SHA-256 accumulator instead of the\r
1158  * default SHA-512 based one (if both are available).\r
1159  *\r
1160  * Requires: MBEDTLS_SHA256_C\r
1161  *\r
1162  * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option\r
1163  * if you have performance concerns.\r
1164  *\r
1165  * This option is only useful if both MBEDTLS_SHA256_C and\r
1166  * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used.\r
1167  */\r
1168 //#define MBEDTLS_ENTROPY_FORCE_SHA256\r
1169 \r
1170 /**\r
1171  * \def MBEDTLS_ENTROPY_NV_SEED\r
1172  *\r
1173  * Enable the non-volatile (NV) seed file-based entropy source.\r
1174  * (Also enables the NV seed read/write functions in the platform layer)\r
1175  *\r
1176  * This is crucial (if not required) on systems that do not have a\r
1177  * cryptographic entropy source (in hardware or kernel) available.\r
1178  *\r
1179  * Requires: MBEDTLS_ENTROPY_C, MBEDTLS_PLATFORM_C\r
1180  *\r
1181  * \note The read/write functions that are used by the entropy source are\r
1182  *       determined in the platform layer, and can be modified at runtime and/or\r
1183  *       compile-time depending on the flags (MBEDTLS_PLATFORM_NV_SEED_*) used.\r
1184  *\r
1185  * \note If you use the default implementation functions that read a seedfile\r
1186  *       with regular fopen(), please make sure you make a seedfile with the\r
1187  *       proper name (defined in MBEDTLS_PLATFORM_STD_NV_SEED_FILE) and at\r
1188  *       least MBEDTLS_ENTROPY_BLOCK_SIZE bytes in size that can be read from\r
1189  *       and written to or you will get an entropy source error! The default\r
1190  *       implementation will only use the first MBEDTLS_ENTROPY_BLOCK_SIZE\r
1191  *       bytes from the file.\r
1192  *\r
1193  * \note The entropy collector will write to the seed file before entropy is\r
1194  *       given to an external source, to update it.\r
1195  */\r
1196 //#define MBEDTLS_ENTROPY_NV_SEED\r
1197 \r
1198 /**\r
1199  * \def MBEDTLS_MEMORY_DEBUG\r
1200  *\r
1201  * Enable debugging of buffer allocator memory issues. Automatically prints\r
1202  * (to stderr) all (fatal) messages on memory allocation issues. Enables\r
1203  * function for 'debug output' of allocated memory.\r
1204  *\r
1205  * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C\r
1206  *\r
1207  * Uncomment this macro to let the buffer allocator print out error messages.\r
1208  */\r
1209 //#define MBEDTLS_MEMORY_DEBUG\r
1210 \r
1211 /**\r
1212  * \def MBEDTLS_MEMORY_BACKTRACE\r
1213  *\r
1214  * Include backtrace information with each allocated block.\r
1215  *\r
1216  * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C\r
1217  *           GLIBC-compatible backtrace() an backtrace_symbols() support\r
1218  *\r
1219  * Uncomment this macro to include backtrace information\r
1220  */\r
1221 //#define MBEDTLS_MEMORY_BACKTRACE\r
1222 \r
1223 /**\r
1224  * \def MBEDTLS_PK_RSA_ALT_SUPPORT\r
1225  *\r
1226  * Support external private RSA keys (eg from a HSM) in the PK layer.\r
1227  *\r
1228  * Comment this macro to disable support for external private RSA keys.\r
1229  */\r
1230 #define MBEDTLS_PK_RSA_ALT_SUPPORT\r
1231 \r
1232 /**\r
1233  * \def MBEDTLS_PKCS1_V15\r
1234  *\r
1235  * Enable support for PKCS#1 v1.5 encoding.\r
1236  *\r
1237  * Requires: MBEDTLS_RSA_C\r
1238  *\r
1239  * This enables support for PKCS#1 v1.5 operations.\r
1240  */\r
1241 #define MBEDTLS_PKCS1_V15\r
1242 \r
1243 /**\r
1244  * \def MBEDTLS_PKCS1_V21\r
1245  *\r
1246  * Enable support for PKCS#1 v2.1 encoding.\r
1247  *\r
1248  * Requires: MBEDTLS_MD_C, MBEDTLS_RSA_C\r
1249  *\r
1250  * This enables support for RSAES-OAEP and RSASSA-PSS operations.\r
1251  */\r
1252 #define MBEDTLS_PKCS1_V21\r
1253 \r
1254 /**\r
1255  * \def MBEDTLS_PSA_CRYPTO_SPM\r
1256  *\r
1257  * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is built for SPM (Secure\r
1258  * Partition Manager) integration which separates the code into two parts: a\r
1259  * NSPE (Non-Secure Process Environment) and an SPE (Secure Process\r
1260  * Environment).\r
1261  *\r
1262  * Module:  library/psa_crypto.c\r
1263  * Requires: MBEDTLS_PSA_CRYPTO_C\r
1264  *\r
1265  */\r
1266 //#define MBEDTLS_PSA_CRYPTO_SPM\r
1267 \r
1268 /**\r
1269  * \def MBEDTLS_PSA_INJECT_ENTROPY\r
1270  *\r
1271  * Enable support for entropy injection at first boot. This feature is\r
1272  * required on systems that do not have a built-in entropy source (TRNG).\r
1273  * This feature is currently not supported on systems that have a built-in\r
1274  * entropy source.\r
1275  *\r
1276  * Requires: MBEDTLS_PSA_CRYPTO_STORAGE_C, MBEDTLS_ENTROPY_NV_SEED\r
1277  *\r
1278  */\r
1279 //#define MBEDTLS_PSA_INJECT_ENTROPY\r
1280 \r
1281 /**\r
1282  * \def MBEDTLS_RSA_NO_CRT\r
1283  *\r
1284  * Do not use the Chinese Remainder Theorem\r
1285  * for the RSA private operation.\r
1286  *\r
1287  * Uncomment this macro to disable the use of CRT in RSA.\r
1288  *\r
1289  */\r
1290 //#define MBEDTLS_RSA_NO_CRT\r
1291 \r
1292 /**\r
1293  * \def MBEDTLS_SELF_TEST\r
1294  *\r
1295  * Enable the checkup functions (*_self_test).\r
1296  */\r
1297 #define MBEDTLS_SELF_TEST\r
1298 \r
1299 /**\r
1300  * \def MBEDTLS_SHA256_SMALLER\r
1301  *\r
1302  * Enable an implementation of SHA-256 that has lower ROM footprint but also\r
1303  * lower performance.\r
1304  *\r
1305  * The default implementation is meant to be a reasonnable compromise between\r
1306  * performance and size. This version optimizes more aggressively for size at\r
1307  * the expense of performance. Eg on Cortex-M4 it reduces the size of\r
1308  * mbedtls_sha256_process() from ~2KB to ~0.5KB for a performance hit of about\r
1309  * 30%.\r
1310  *\r
1311  * Uncomment to enable the smaller implementation of SHA256.\r
1312  */\r
1313 //#define MBEDTLS_SHA256_SMALLER\r
1314 \r
1315 /**\r
1316  * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES\r
1317  *\r
1318  * Enable sending of alert messages in case of encountered errors as per RFC.\r
1319  * If you choose not to send the alert messages, mbed TLS can still communicate\r
1320  * with other servers, only debugging of failures is harder.\r
1321  *\r
1322  * The advantage of not sending alert messages, is that no information is given\r
1323  * about reasons for failures thus preventing adversaries of gaining intel.\r
1324  *\r
1325  * Enable sending of all alert messages\r
1326  */\r
1327 #define MBEDTLS_SSL_ALL_ALERT_MESSAGES\r
1328 \r
1329 /**\r
1330  * \def MBEDTLS_SSL_DTLS_CONNECTION_ID\r
1331  *\r
1332  * Enable support for the DTLS Connection ID extension\r
1333  * (version draft-ietf-tls-dtls-connection-id-05,\r
1334  * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05)\r
1335  * which allows to identify DTLS connections across changes\r
1336  * in the underlying transport.\r
1337  *\r
1338  * Setting this option enables the SSL APIs `mbedtls_ssl_set_cid()`,\r
1339  * `mbedtls_ssl_get_peer_cid()` and `mbedtls_ssl_conf_cid()`.\r
1340  * See the corresponding documentation for more information.\r
1341  *\r
1342  * \warning The Connection ID extension is still in draft state.\r
1343  *          We make no stability promises for the availability\r
1344  *          or the shape of the API controlled by this option.\r
1345  *\r
1346  * The maximum lengths of outgoing and incoming CIDs can be configured\r
1347  * through the options\r
1348  * - MBEDTLS_SSL_CID_OUT_LEN_MAX\r
1349  * - MBEDTLS_SSL_CID_IN_LEN_MAX.\r
1350  *\r
1351  * Requires: MBEDTLS_SSL_PROTO_DTLS\r
1352  *\r
1353  * Uncomment to enable the Connection ID extension.\r
1354  */\r
1355 //#define MBEDTLS_SSL_DTLS_CONNECTION_ID\r
1356 \r
1357 /**\r
1358  * \def MBEDTLS_SSL_ASYNC_PRIVATE\r
1359  *\r
1360  * Enable asynchronous external private key operations in SSL. This allows\r
1361  * you to configure an SSL connection to call an external cryptographic\r
1362  * module to perform private key operations instead of performing the\r
1363  * operation inside the library.\r
1364  *\r
1365  */\r
1366 //#define MBEDTLS_SSL_ASYNC_PRIVATE\r
1367 \r
1368 /**\r
1369  * \def MBEDTLS_SSL_DEBUG_ALL\r
1370  *\r
1371  * Enable the debug messages in SSL module for all issues.\r
1372  * Debug messages have been disabled in some places to prevent timing\r
1373  * attacks due to (unbalanced) debugging function calls.\r
1374  *\r
1375  * If you need all error reporting you should enable this during debugging,\r
1376  * but remove this for production servers that should log as well.\r
1377  *\r
1378  * Uncomment this macro to report all debug messages on errors introducing\r
1379  * a timing side-channel.\r
1380  *\r
1381  */\r
1382 //#define MBEDTLS_SSL_DEBUG_ALL\r
1383 \r
1384 /** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC\r
1385  *\r
1386  * Enable support for Encrypt-then-MAC, RFC 7366.\r
1387  *\r
1388  * This allows peers that both support it to use a more robust protection for\r
1389  * ciphersuites using CBC, providing deep resistance against timing attacks\r
1390  * on the padding or underlying cipher.\r
1391  *\r
1392  * This only affects CBC ciphersuites, and is useless if none is defined.\r
1393  *\r
1394  * Requires: MBEDTLS_SSL_PROTO_TLS1    or\r
1395  *           MBEDTLS_SSL_PROTO_TLS1_1  or\r
1396  *           MBEDTLS_SSL_PROTO_TLS1_2\r
1397  *\r
1398  * Comment this macro to disable support for Encrypt-then-MAC\r
1399  */\r
1400 #define MBEDTLS_SSL_ENCRYPT_THEN_MAC\r
1401 \r
1402 /** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET\r
1403  *\r
1404  * Enable support for Extended Master Secret, aka Session Hash\r
1405  * (draft-ietf-tls-session-hash-02).\r
1406  *\r
1407  * This was introduced as "the proper fix" to the Triple Handshake familiy of\r
1408  * attacks, but it is recommended to always use it (even if you disable\r
1409  * renegotiation), since it actually fixes a more fundamental issue in the\r
1410  * original SSL/TLS design, and has implications beyond Triple Handshake.\r
1411  *\r
1412  * Requires: MBEDTLS_SSL_PROTO_TLS1    or\r
1413  *           MBEDTLS_SSL_PROTO_TLS1_1  or\r
1414  *           MBEDTLS_SSL_PROTO_TLS1_2\r
1415  *\r
1416  * Comment this macro to disable support for Extended Master Secret.\r
1417  */\r
1418 #define MBEDTLS_SSL_EXTENDED_MASTER_SECRET\r
1419 \r
1420 /**\r
1421  * \def MBEDTLS_SSL_FALLBACK_SCSV\r
1422  *\r
1423  * Enable support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv-00).\r
1424  *\r
1425  * For servers, it is recommended to always enable this, unless you support\r
1426  * only one version of TLS, or know for sure that none of your clients\r
1427  * implements a fallback strategy.\r
1428  *\r
1429  * For clients, you only need this if you're using a fallback strategy, which\r
1430  * is not recommended in the first place, unless you absolutely need it to\r
1431  * interoperate with buggy (version-intolerant) servers.\r
1432  *\r
1433  * Comment this macro to disable support for FALLBACK_SCSV\r
1434  */\r
1435 #define MBEDTLS_SSL_FALLBACK_SCSV\r
1436 \r
1437 /**\r
1438  * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE\r
1439  *\r
1440  * This option controls the availability of the API mbedtls_ssl_get_peer_cert()\r
1441  * giving access to the peer's certificate after completion of the handshake.\r
1442  *\r
1443  * Unless you need mbedtls_ssl_peer_cert() in your application, it is\r
1444  * recommended to disable this option for reduced RAM usage.\r
1445  *\r
1446  * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still\r
1447  *       defined, but always returns \c NULL.\r
1448  *\r
1449  * \note This option has no influence on the protection against the\r
1450  *       triple handshake attack. Even if it is disabled, Mbed TLS will\r
1451  *       still ensure that certificates do not change during renegotiation,\r
1452  *       for exaple by keeping a hash of the peer's certificate.\r
1453  *\r
1454  * Comment this macro to disable storing the peer's certificate\r
1455  * after the handshake.\r
1456  */\r
1457 #define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE\r
1458 \r
1459 /**\r
1460  * \def MBEDTLS_SSL_HW_RECORD_ACCEL\r
1461  *\r
1462  * Enable hooking functions in SSL module for hardware acceleration of\r
1463  * individual records.\r
1464  *\r
1465  * Uncomment this macro to enable hooking functions.\r
1466  */\r
1467 //#define MBEDTLS_SSL_HW_RECORD_ACCEL\r
1468 \r
1469 /**\r
1470  * \def MBEDTLS_SSL_CBC_RECORD_SPLITTING\r
1471  *\r
1472  * Enable 1/n-1 record splitting for CBC mode in SSLv3 and TLS 1.0.\r
1473  *\r
1474  * This is a countermeasure to the BEAST attack, which also minimizes the risk\r
1475  * of interoperability issues compared to sending 0-length records.\r
1476  *\r
1477  * Comment this macro to disable 1/n-1 record splitting.\r
1478  */\r
1479 #define MBEDTLS_SSL_CBC_RECORD_SPLITTING\r
1480 \r
1481 /**\r
1482  * \def MBEDTLS_SSL_RENEGOTIATION\r
1483  *\r
1484  * Enable support for TLS renegotiation.\r
1485  *\r
1486  * The two main uses of renegotiation are (1) refresh keys on long-lived\r
1487  * connections and (2) client authentication after the initial handshake.\r
1488  * If you don't need renegotiation, it's probably better to disable it, since\r
1489  * it has been associated with security issues in the past and is easy to\r
1490  * misuse/misunderstand.\r
1491  *\r
1492  * Comment this to disable support for renegotiation.\r
1493  *\r
1494  * \note   Even if this option is disabled, both client and server are aware\r
1495  *         of the Renegotiation Indication Extension (RFC 5746) used to\r
1496  *         prevent the SSL renegotiation attack (see RFC 5746 Sect. 1).\r
1497  *         (See \c mbedtls_ssl_conf_legacy_renegotiation for the\r
1498  *          configuration of this extension).\r
1499  *\r
1500  */\r
1501 #define MBEDTLS_SSL_RENEGOTIATION\r
1502 \r
1503 /**\r
1504  * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO\r
1505  *\r
1506  * Enable support for receiving and parsing SSLv2 Client Hello messages for the\r
1507  * SSL Server module (MBEDTLS_SSL_SRV_C).\r
1508  *\r
1509  * Uncomment this macro to enable support for SSLv2 Client Hello messages.\r
1510  */\r
1511 //#define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO\r
1512 \r
1513 /**\r
1514  * \def MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE\r
1515  *\r
1516  * Pick the ciphersuite according to the client's preferences rather than ours\r
1517  * in the SSL Server module (MBEDTLS_SSL_SRV_C).\r
1518  *\r
1519  * Uncomment this macro to respect client's ciphersuite order\r
1520  */\r
1521 //#define MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE\r
1522 \r
1523 /**\r
1524  * \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH\r
1525  *\r
1526  * Enable support for RFC 6066 max_fragment_length extension in SSL.\r
1527  *\r
1528  * Comment this macro to disable support for the max_fragment_length extension\r
1529  */\r
1530 #define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH\r
1531 \r
1532 /**\r
1533  * \def MBEDTLS_SSL_PROTO_SSL3\r
1534  *\r
1535  * Enable support for SSL 3.0.\r
1536  *\r
1537  * Requires: MBEDTLS_MD5_C\r
1538  *           MBEDTLS_SHA1_C\r
1539  *\r
1540  * Comment this macro to disable support for SSL 3.0\r
1541  */\r
1542 //#define MBEDTLS_SSL_PROTO_SSL3\r
1543 \r
1544 /**\r
1545  * \def MBEDTLS_SSL_PROTO_TLS1\r
1546  *\r
1547  * Enable support for TLS 1.0.\r
1548  *\r
1549  * Requires: MBEDTLS_MD5_C\r
1550  *           MBEDTLS_SHA1_C\r
1551  *\r
1552  * Comment this macro to disable support for TLS 1.0\r
1553  */\r
1554 #define MBEDTLS_SSL_PROTO_TLS1\r
1555 \r
1556 /**\r
1557  * \def MBEDTLS_SSL_PROTO_TLS1_1\r
1558  *\r
1559  * Enable support for TLS 1.1 (and DTLS 1.0 if DTLS is enabled).\r
1560  *\r
1561  * Requires: MBEDTLS_MD5_C\r
1562  *           MBEDTLS_SHA1_C\r
1563  *\r
1564  * Comment this macro to disable support for TLS 1.1 / DTLS 1.0\r
1565  */\r
1566 #define MBEDTLS_SSL_PROTO_TLS1_1\r
1567 \r
1568 /**\r
1569  * \def MBEDTLS_SSL_PROTO_TLS1_2\r
1570  *\r
1571  * Enable support for TLS 1.2 (and DTLS 1.2 if DTLS is enabled).\r
1572  *\r
1573  * Requires: MBEDTLS_SHA1_C or MBEDTLS_SHA256_C or MBEDTLS_SHA512_C\r
1574  *           (Depends on ciphersuites)\r
1575  *\r
1576  * Comment this macro to disable support for TLS 1.2 / DTLS 1.2\r
1577  */\r
1578 #define MBEDTLS_SSL_PROTO_TLS1_2\r
1579 \r
1580 /**\r
1581  * \def MBEDTLS_SSL_PROTO_DTLS\r
1582  *\r
1583  * Enable support for DTLS (all available versions).\r
1584  *\r
1585  * Enable this and MBEDTLS_SSL_PROTO_TLS1_1 to enable DTLS 1.0,\r
1586  * and/or this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2.\r
1587  *\r
1588  * Requires: MBEDTLS_SSL_PROTO_TLS1_1\r
1589  *        or MBEDTLS_SSL_PROTO_TLS1_2\r
1590  *\r
1591  * Comment this macro to disable support for DTLS\r
1592  */\r
1593 #define MBEDTLS_SSL_PROTO_DTLS\r
1594 \r
1595 /**\r
1596  * \def MBEDTLS_SSL_ALPN\r
1597  *\r
1598  * Enable support for RFC 7301 Application Layer Protocol Negotiation.\r
1599  *\r
1600  * Comment this macro to disable support for ALPN.\r
1601  */\r
1602 #define MBEDTLS_SSL_ALPN\r
1603 \r
1604 /**\r
1605  * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY\r
1606  *\r
1607  * Enable support for the anti-replay mechanism in DTLS.\r
1608  *\r
1609  * Requires: MBEDTLS_SSL_TLS_C\r
1610  *           MBEDTLS_SSL_PROTO_DTLS\r
1611  *\r
1612  * \warning Disabling this is often a security risk!\r
1613  * See mbedtls_ssl_conf_dtls_anti_replay() for details.\r
1614  *\r
1615  * Comment this to disable anti-replay in DTLS.\r
1616  */\r
1617 #define MBEDTLS_SSL_DTLS_ANTI_REPLAY\r
1618 \r
1619 /**\r
1620  * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY\r
1621  *\r
1622  * Enable support for HelloVerifyRequest on DTLS servers.\r
1623  *\r
1624  * This feature is highly recommended to prevent DTLS servers being used as\r
1625  * amplifiers in DoS attacks against other hosts. It should always be enabled\r
1626  * unless you know for sure amplification cannot be a problem in the\r
1627  * environment in which your server operates.\r
1628  *\r
1629  * \warning Disabling this can ba a security risk! (see above)\r
1630  *\r
1631  * Requires: MBEDTLS_SSL_PROTO_DTLS\r
1632  *\r
1633  * Comment this to disable support for HelloVerifyRequest.\r
1634  */\r
1635 #define MBEDTLS_SSL_DTLS_HELLO_VERIFY\r
1636 \r
1637 /**\r
1638  * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE\r
1639  *\r
1640  * Enable server-side support for clients that reconnect from the same port.\r
1641  *\r
1642  * Some clients unexpectedly close the connection and try to reconnect using the\r
1643  * same source port. This needs special support from the server to handle the\r
1644  * new connection securely, as described in section 4.2.8 of RFC 6347. This\r
1645  * flag enables that support.\r
1646  *\r
1647  * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY\r
1648  *\r
1649  * Comment this to disable support for clients reusing the source port.\r
1650  */\r
1651 #define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE\r
1652 \r
1653 /**\r
1654  * \def MBEDTLS_SSL_DTLS_BADMAC_LIMIT\r
1655  *\r
1656  * Enable support for a limit of records with bad MAC.\r
1657  *\r
1658  * See mbedtls_ssl_conf_dtls_badmac_limit().\r
1659  *\r
1660  * Requires: MBEDTLS_SSL_PROTO_DTLS\r
1661  */\r
1662 #define MBEDTLS_SSL_DTLS_BADMAC_LIMIT\r
1663 \r
1664 /**\r
1665  * \def MBEDTLS_SSL_SESSION_TICKETS\r
1666  *\r
1667  * Enable support for RFC 5077 session tickets in SSL.\r
1668  * Client-side, provides full support for session tickets (maintenance of a\r
1669  * session store remains the responsibility of the application, though).\r
1670  * Server-side, you also need to provide callbacks for writing and parsing\r
1671  * tickets, including authenticated encryption and key management. Example\r
1672  * callbacks are provided by MBEDTLS_SSL_TICKET_C.\r
1673  *\r
1674  * Comment this macro to disable support for SSL session tickets\r
1675  */\r
1676 #define MBEDTLS_SSL_SESSION_TICKETS\r
1677 \r
1678 /**\r
1679  * \def MBEDTLS_SSL_EXPORT_KEYS\r
1680  *\r
1681  * Enable support for exporting key block and master secret.\r
1682  * This is required for certain users of TLS, e.g. EAP-TLS.\r
1683  *\r
1684  * Comment this macro to disable support for key export\r
1685  */\r
1686 #define MBEDTLS_SSL_EXPORT_KEYS\r
1687 \r
1688 /**\r
1689  * \def MBEDTLS_SSL_SERVER_NAME_INDICATION\r
1690  *\r
1691  * Enable support for RFC 6066 server name indication (SNI) in SSL.\r
1692  *\r
1693  * Requires: MBEDTLS_X509_CRT_PARSE_C\r
1694  *\r
1695  * Comment this macro to disable support for server name indication in SSL\r
1696  */\r
1697 #define MBEDTLS_SSL_SERVER_NAME_INDICATION\r
1698 \r
1699 /**\r
1700  * \def MBEDTLS_SSL_TRUNCATED_HMAC\r
1701  *\r
1702  * Enable support for RFC 6066 truncated HMAC in SSL.\r
1703  *\r
1704  * Comment this macro to disable support for truncated HMAC in SSL\r
1705  */\r
1706 #define MBEDTLS_SSL_TRUNCATED_HMAC\r
1707 \r
1708 /**\r
1709  * \def MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT\r
1710  *\r
1711  * Fallback to old (pre-2.7), non-conforming implementation of the truncated\r
1712  * HMAC extension which also truncates the HMAC key. Note that this option is\r
1713  * only meant for a transitory upgrade period and is likely to be removed in\r
1714  * a future version of the library.\r
1715  *\r
1716  * \warning The old implementation is non-compliant and has a security weakness\r
1717  *          (2^80 brute force attack on the HMAC key used for a single,\r
1718  *          uninterrupted connection). This should only be enabled temporarily\r
1719  *          when (1) the use of truncated HMAC is essential in order to save\r
1720  *          bandwidth, and (2) the peer is an Mbed TLS stack that doesn't use\r
1721  *          the fixed implementation yet (pre-2.7).\r
1722  *\r
1723  * \deprecated This option is deprecated and will likely be removed in a\r
1724  *             future version of Mbed TLS.\r
1725  *\r
1726  * Uncomment to fallback to old, non-compliant truncated HMAC implementation.\r
1727  *\r
1728  * Requires: MBEDTLS_SSL_TRUNCATED_HMAC\r
1729  */\r
1730 //#define MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT\r
1731 \r
1732 /**\r
1733  * \def MBEDTLS_THREADING_ALT\r
1734  *\r
1735  * Provide your own alternate threading implementation.\r
1736  *\r
1737  * Requires: MBEDTLS_THREADING_C\r
1738  *\r
1739  * Uncomment this to allow your own alternate threading implementation.\r
1740  */\r
1741 //#define MBEDTLS_THREADING_ALT\r
1742 \r
1743 /**\r
1744  * \def MBEDTLS_THREADING_PTHREAD\r
1745  *\r
1746  * Enable the pthread wrapper layer for the threading layer.\r
1747  *\r
1748  * Requires: MBEDTLS_THREADING_C\r
1749  *\r
1750  * Uncomment this to enable pthread mutexes.\r
1751  */\r
1752 //#define MBEDTLS_THREADING_PTHREAD\r
1753 \r
1754 /**\r
1755  * \def MBEDTLS_USE_PSA_CRYPTO\r
1756  *\r
1757  * Make the X.509 and TLS library use PSA for cryptographic operations, and\r
1758  * enable new APIs for using keys handled by PSA Crypto.\r
1759  *\r
1760  * \note Development of this option is currently in progress, and parts\r
1761  * of the X.509 and TLS modules are not ported to PSA yet. However, these parts\r
1762  * will still continue to work as usual, so enabling this option should not\r
1763  * break backwards compatibility.\r
1764  *\r
1765  * \warning The PSA Crypto API is in beta stage. While you're welcome to\r
1766  * experiment using it, incompatible API changes are still possible, and some\r
1767  * parts may not have reached the same quality as the rest of Mbed TLS yet.\r
1768  *\r
1769  * \warning This option enables new Mbed TLS APIs that are dependent on the\r
1770  * PSA Crypto API, so can't come with the same stability guarantees as the\r
1771  * rest of the Mbed TLS APIs. You're welcome to experiment with them, but for\r
1772  * now, access to these APIs is opt-in (via enabling the present option), in\r
1773  * order to clearly differentiate them from the stable Mbed TLS APIs.\r
1774  *\r
1775  * Requires: MBEDTLS_PSA_CRYPTO_C.\r
1776  *\r
1777  * Uncomment this to enable internal use of PSA Crypto and new associated APIs.\r
1778  */\r
1779 //#define MBEDTLS_USE_PSA_CRYPTO\r
1780 \r
1781 /**\r
1782  * \def MBEDTLS_VERSION_FEATURES\r
1783  *\r
1784  * Allow run-time checking of compile-time enabled features. Thus allowing users\r
1785  * to check at run-time if the library is for instance compiled with threading\r
1786  * support via mbedtls_version_check_feature().\r
1787  *\r
1788  * Requires: MBEDTLS_VERSION_C\r
1789  *\r
1790  * Comment this to disable run-time checking and save ROM space\r
1791  */\r
1792 #define MBEDTLS_VERSION_FEATURES\r
1793 \r
1794 /**\r
1795  * \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3\r
1796  *\r
1797  * If set, the X509 parser will not break-off when parsing an X509 certificate\r
1798  * and encountering an extension in a v1 or v2 certificate.\r
1799  *\r
1800  * Uncomment to prevent an error.\r
1801  */\r
1802 //#define MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3\r
1803 \r
1804 /**\r
1805  * \def MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION\r
1806  *\r
1807  * If set, the X509 parser will not break-off when parsing an X509 certificate\r
1808  * and encountering an unknown critical extension.\r
1809  *\r
1810  * \warning Depending on your PKI use, enabling this can be a security risk!\r
1811  *\r
1812  * Uncomment to prevent an error.\r
1813  */\r
1814 //#define MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION\r
1815 \r
1816 /**\r
1817  * \def MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK\r
1818  *\r
1819  * If set, this enables the X.509 API `mbedtls_x509_crt_verify_with_ca_cb()`\r
1820  * and the SSL API `mbedtls_ssl_conf_ca_cb()` which allow users to configure\r
1821  * the set of trusted certificates through a callback instead of a linked\r
1822  * list.\r
1823  *\r
1824  * This is useful for example in environments where a large number of trusted\r
1825  * certificates is present and storing them in a linked list isn't efficient\r
1826  * enough, or when the set of trusted certificates changes frequently.\r
1827  *\r
1828  * See the documentation of `mbedtls_x509_crt_verify_with_ca_cb()` and\r
1829  * `mbedtls_ssl_conf_ca_cb()` for more information.\r
1830  *\r
1831  * Uncomment to enable trusted certificate callbacks.\r
1832  */\r
1833 //#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK\r
1834 \r
1835 /**\r
1836  * \def MBEDTLS_X509_CHECK_KEY_USAGE\r
1837  *\r
1838  * Enable verification of the keyUsage extension (CA and leaf certificates).\r
1839  *\r
1840  * Disabling this avoids problems with mis-issued and/or misused\r
1841  * (intermediate) CA and leaf certificates.\r
1842  *\r
1843  * \warning Depending on your PKI use, disabling this can be a security risk!\r
1844  *\r
1845  * Comment to skip keyUsage checking for both CA and leaf certificates.\r
1846  */\r
1847 #define MBEDTLS_X509_CHECK_KEY_USAGE\r
1848 \r
1849 /**\r
1850  * \def MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE\r
1851  *\r
1852  * Enable verification of the extendedKeyUsage extension (leaf certificates).\r
1853  *\r
1854  * Disabling this avoids problems with mis-issued and/or misused certificates.\r
1855  *\r
1856  * \warning Depending on your PKI use, disabling this can be a security risk!\r
1857  *\r
1858  * Comment to skip extendedKeyUsage checking for certificates.\r
1859  */\r
1860 #define MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE\r
1861 \r
1862 /**\r
1863  * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT\r
1864  *\r
1865  * Enable parsing and verification of X.509 certificates, CRLs and CSRS\r
1866  * signed with RSASSA-PSS (aka PKCS#1 v2.1).\r
1867  *\r
1868  * Comment this macro to disallow using RSASSA-PSS in certificates.\r
1869  */\r
1870 #define MBEDTLS_X509_RSASSA_PSS_SUPPORT\r
1871 \r
1872 /**\r
1873  * \def MBEDTLS_ZLIB_SUPPORT\r
1874  *\r
1875  * If set, the SSL/TLS module uses ZLIB to support compression and\r
1876  * decompression of packet data.\r
1877  *\r
1878  * \warning TLS-level compression MAY REDUCE SECURITY! See for example the\r
1879  * CRIME attack. Before enabling this option, you should examine with care if\r
1880  * CRIME or similar exploits may be applicable to your use case.\r
1881  *\r
1882  * \note Currently compression can't be used with DTLS.\r
1883  *\r
1884  * \deprecated This feature is deprecated and will be removed\r
1885  *             in the next major revision of the library.\r
1886  *\r
1887  * Used in: library/ssl_tls.c\r
1888  *          library/ssl_cli.c\r
1889  *          library/ssl_srv.c\r
1890  *\r
1891  * This feature requires zlib library and headers to be present.\r
1892  *\r
1893  * Uncomment to enable use of ZLIB\r
1894  */\r
1895 //#define MBEDTLS_ZLIB_SUPPORT\r
1896 /* \} name SECTION: mbed TLS feature support */\r
1897 \r
1898 /**\r
1899  * \name SECTION: mbed TLS modules\r
1900  *\r
1901  * This section enables or disables entire modules in mbed TLS\r
1902  * \{\r
1903  */\r
1904 \r
1905 /**\r
1906  * \def MBEDTLS_AESNI_C\r
1907  *\r
1908  * Enable AES-NI support on x86-64.\r
1909  *\r
1910  * Module:  library/aesni.c\r
1911  * Caller:  library/aes.c\r
1912  *\r
1913  * Requires: MBEDTLS_HAVE_ASM\r
1914  *\r
1915  * This modules adds support for the AES-NI instructions on x86-64\r
1916  */\r
1917 #define MBEDTLS_AESNI_C\r
1918 \r
1919 /**\r
1920  * \def MBEDTLS_AES_C\r
1921  *\r
1922  * Enable the AES block cipher.\r
1923  *\r
1924  * Module:  library/aes.c\r
1925  * Caller:  library/cipher.c\r
1926  *          library/pem.c\r
1927  *          library/ctr_drbg.c\r
1928  *\r
1929  * This module enables the following ciphersuites (if other requisites are\r
1930  * enabled as well):\r
1931  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\r
1932  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\r
1933  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\r
1934  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\r
1935  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\r
1936  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\r
1937  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\r
1938  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\r
1939  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\r
1940  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\r
1941  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\r
1942  *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\r
1943  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\r
1944  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\r
1945  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\r
1946  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\r
1947  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\r
1948  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\r
1949  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\r
1950  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\r
1951  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA\r
1952  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\r
1953  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\r
1954  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\r
1955  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\r
1956  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\r
1957  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\r
1958  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\r
1959  *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\r
1960  *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA\r
1961  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384\r
1962  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384\r
1963  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384\r
1964  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA\r
1965  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA\r
1966  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256\r
1967  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256\r
1968  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256\r
1969  *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA\r
1970  *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA\r
1971  *      MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384\r
1972  *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256\r
1973  *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA\r
1974  *      MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256\r
1975  *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256\r
1976  *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA\r
1977  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384\r
1978  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384\r
1979  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA\r
1980  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256\r
1981  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256\r
1982  *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA\r
1983  *      MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384\r
1984  *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384\r
1985  *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA\r
1986  *      MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256\r
1987  *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256\r
1988  *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA\r
1989  *\r
1990  * PEM_PARSE uses AES for decrypting encrypted keys.\r
1991  */\r
1992 #define MBEDTLS_AES_C\r
1993 \r
1994 /**\r
1995  * \def MBEDTLS_ARC4_C\r
1996  *\r
1997  * Enable the ARCFOUR stream cipher.\r
1998  *\r
1999  * Module:  library/arc4.c\r
2000  * Caller:  library/cipher.c\r
2001  *\r
2002  * This module enables the following ciphersuites (if other requisites are\r
2003  * enabled as well):\r
2004  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA\r
2005  *      MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA\r
2006  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA\r
2007  *      MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA\r
2008  *      MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA\r
2009  *      MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA\r
2010  *      MBEDTLS_TLS_RSA_WITH_RC4_128_SHA\r
2011  *      MBEDTLS_TLS_RSA_WITH_RC4_128_MD5\r
2012  *      MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA\r
2013  *      MBEDTLS_TLS_PSK_WITH_RC4_128_SHA\r
2014  *\r
2015  * \warning   ARC4 is considered a weak cipher and its use constitutes a\r
2016  *            security risk. If possible, we recommend avoidng dependencies on\r
2017  *            it, and considering stronger ciphers instead.\r
2018  *\r
2019  */\r
2020 #define MBEDTLS_ARC4_C\r
2021 \r
2022 /**\r
2023  * \def MBEDTLS_ASN1_PARSE_C\r
2024  *\r
2025  * Enable the generic ASN1 parser.\r
2026  *\r
2027  * Module:  library/asn1.c\r
2028  * Caller:  library/x509.c\r
2029  *          library/dhm.c\r
2030  *          library/pkcs12.c\r
2031  *          library/pkcs5.c\r
2032  *          library/pkparse.c\r
2033  */\r
2034 #define MBEDTLS_ASN1_PARSE_C\r
2035 \r
2036 /**\r
2037  * \def MBEDTLS_ASN1_WRITE_C\r
2038  *\r
2039  * Enable the generic ASN1 writer.\r
2040  *\r
2041  * Module:  library/asn1write.c\r
2042  * Caller:  library/ecdsa.c\r
2043  *          library/pkwrite.c\r
2044  *          library/x509_create.c\r
2045  *          library/x509write_crt.c\r
2046  *          library/x509write_csr.c\r
2047  */\r
2048 #define MBEDTLS_ASN1_WRITE_C\r
2049 \r
2050 /**\r
2051  * \def MBEDTLS_BASE64_C\r
2052  *\r
2053  * Enable the Base64 module.\r
2054  *\r
2055  * Module:  library/base64.c\r
2056  * Caller:  library/pem.c\r
2057  *\r
2058  * This module is required for PEM support (required by X.509).\r
2059  */\r
2060 #define MBEDTLS_BASE64_C\r
2061 \r
2062 /**\r
2063  * \def MBEDTLS_BIGNUM_C\r
2064  *\r
2065  * Enable the multi-precision integer library.\r
2066  *\r
2067  * Module:  library/bignum.c\r
2068  * Caller:  library/dhm.c\r
2069  *          library/ecp.c\r
2070  *          library/ecdsa.c\r
2071  *          library/rsa.c\r
2072  *          library/rsa_internal.c\r
2073  *          library/ssl_tls.c\r
2074  *\r
2075  * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.\r
2076  */\r
2077 #define MBEDTLS_BIGNUM_C\r
2078 \r
2079 /**\r
2080  * \def MBEDTLS_BLOWFISH_C\r
2081  *\r
2082  * Enable the Blowfish block cipher.\r
2083  *\r
2084  * Module:  library/blowfish.c\r
2085  */\r
2086 #define MBEDTLS_BLOWFISH_C\r
2087 \r
2088 /**\r
2089  * \def MBEDTLS_CAMELLIA_C\r
2090  *\r
2091  * Enable the Camellia block cipher.\r
2092  *\r
2093  * Module:  library/camellia.c\r
2094  * Caller:  library/cipher.c\r
2095  *\r
2096  * This module enables the following ciphersuites (if other requisites are\r
2097  * enabled as well):\r
2098  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256\r
2099  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384\r
2100  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
2101  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384\r
2102  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256\r
2103  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384\r
2104  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
2105  *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
2106  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384\r
2107  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
2108  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
2109  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384\r
2110  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384\r
2111  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256\r
2112  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA\r
2113  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256\r
2114  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
2115  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
2116  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256\r
2117  *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
2118  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
2119  *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA\r
2120  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384\r
2121  *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
2122  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
2123  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256\r
2124  *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
2125  *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
2126  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384\r
2127  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256\r
2128  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA\r
2129  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256\r
2130  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256\r
2131  *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA\r
2132  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384\r
2133  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
2134  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256\r
2135  *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
2136  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384\r
2137  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384\r
2138  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256\r
2139  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256\r
2140  */\r
2141 #define MBEDTLS_CAMELLIA_C\r
2142 \r
2143 /**\r
2144  * \def MBEDTLS_ARIA_C\r
2145  *\r
2146  * Enable the ARIA block cipher.\r
2147  *\r
2148  * Module:  library/aria.c\r
2149  * Caller:  library/cipher.c\r
2150  *\r
2151  * This module enables the following ciphersuites (if other requisites are\r
2152  * enabled as well):\r
2153  *\r
2154  *      MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256\r
2155  *      MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384\r
2156  *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256\r
2157  *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384\r
2158  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256\r
2159  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384\r
2160  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256\r
2161  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384\r
2162  *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256\r
2163  *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384\r
2164  *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256\r
2165  *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384\r
2166  *      MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256\r
2167  *      MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384\r
2168  *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256\r
2169  *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384\r
2170  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256\r
2171  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384\r
2172  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256\r
2173  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384\r
2174  *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256\r
2175  *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384\r
2176  *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256\r
2177  *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384\r
2178  *      MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256\r
2179  *      MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384\r
2180  *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256\r
2181  *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384\r
2182  *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256\r
2183  *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384\r
2184  *      MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256\r
2185  *      MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384\r
2186  *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256\r
2187  *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384\r
2188  *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256\r
2189  *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384\r
2190  *      MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256\r
2191  *      MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384\r
2192  */\r
2193 //#define MBEDTLS_ARIA_C\r
2194 \r
2195 /**\r
2196  * \def MBEDTLS_CCM_C\r
2197  *\r
2198  * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.\r
2199  *\r
2200  * Module:  library/ccm.c\r
2201  *\r
2202  * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C\r
2203  *\r
2204  * This module enables the AES-CCM ciphersuites, if other requisites are\r
2205  * enabled as well.\r
2206  */\r
2207 #define MBEDTLS_CCM_C\r
2208 \r
2209 /**\r
2210  * \def MBEDTLS_CERTS_C\r
2211  *\r
2212  * Enable the test certificates.\r
2213  *\r
2214  * Module:  library/certs.c\r
2215  * Caller:\r
2216  *\r
2217  * This module is used for testing (ssl_client/server).\r
2218  */\r
2219 #define MBEDTLS_CERTS_C\r
2220 \r
2221 /**\r
2222  * \def MBEDTLS_CHACHA20_C\r
2223  *\r
2224  * Enable the ChaCha20 stream cipher.\r
2225  *\r
2226  * Module:  library/chacha20.c\r
2227  */\r
2228 #define MBEDTLS_CHACHA20_C\r
2229 \r
2230 /**\r
2231  * \def MBEDTLS_CHACHAPOLY_C\r
2232  *\r
2233  * Enable the ChaCha20-Poly1305 AEAD algorithm.\r
2234  *\r
2235  * Module:  library/chachapoly.c\r
2236  *\r
2237  * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C\r
2238  */\r
2239 #define MBEDTLS_CHACHAPOLY_C\r
2240 \r
2241 /**\r
2242  * \def MBEDTLS_CIPHER_C\r
2243  *\r
2244  * Enable the generic cipher layer.\r
2245  *\r
2246  * Module:  library/cipher.c\r
2247  * Caller:  library/ssl_tls.c\r
2248  *\r
2249  * Uncomment to enable generic cipher wrappers.\r
2250  */\r
2251 #define MBEDTLS_CIPHER_C\r
2252 \r
2253 /**\r
2254  * \def MBEDTLS_CMAC_C\r
2255  *\r
2256  * Enable the CMAC (Cipher-based Message Authentication Code) mode for block\r
2257  * ciphers.\r
2258  *\r
2259  * Module:  library/cmac.c\r
2260  *\r
2261  * Requires: MBEDTLS_AES_C or MBEDTLS_DES_C\r
2262  *\r
2263  */\r
2264 //#define MBEDTLS_CMAC_C\r
2265 \r
2266 /**\r
2267  * \def MBEDTLS_CTR_DRBG_C\r
2268  *\r
2269  * Enable the CTR_DRBG AES-based random generator.\r
2270  * The CTR_DRBG generator uses AES-256 by default.\r
2271  * To use AES-128 instead, enable MBEDTLS_CTR_DRBG_USE_128_BIT_KEY below.\r
2272  *\r
2273  * Module:  library/ctr_drbg.c\r
2274  * Caller:\r
2275  *\r
2276  * Requires: MBEDTLS_AES_C\r
2277  *\r
2278  * This module provides the CTR_DRBG AES random number generator.\r
2279  */\r
2280 #define MBEDTLS_CTR_DRBG_C\r
2281 \r
2282 /**\r
2283  * \def MBEDTLS_DEBUG_C\r
2284  *\r
2285  * Enable the debug functions.\r
2286  *\r
2287  * Module:  library/debug.c\r
2288  * Caller:  library/ssl_cli.c\r
2289  *          library/ssl_srv.c\r
2290  *          library/ssl_tls.c\r
2291  *\r
2292  * This module provides debugging functions.\r
2293  */\r
2294 #define MBEDTLS_DEBUG_C\r
2295 \r
2296 /**\r
2297  * \def MBEDTLS_DES_C\r
2298  *\r
2299  * Enable the DES block cipher.\r
2300  *\r
2301  * Module:  library/des.c\r
2302  * Caller:  library/pem.c\r
2303  *          library/cipher.c\r
2304  *\r
2305  * This module enables the following ciphersuites (if other requisites are\r
2306  * enabled as well):\r
2307  *      MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA\r
2308  *      MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA\r
2309  *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\r
2310  *      MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\r
2311  *      MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA\r
2312  *      MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA\r
2313  *      MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA\r
2314  *      MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA\r
2315  *      MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA\r
2316  *      MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA\r
2317  *\r
2318  * PEM_PARSE uses DES/3DES for decrypting encrypted keys.\r
2319  *\r
2320  * \warning   DES is considered a weak cipher and its use constitutes a\r
2321  *            security risk. We recommend considering stronger ciphers instead.\r
2322  */\r
2323 #define MBEDTLS_DES_C\r
2324 \r
2325 /**\r
2326  * \def MBEDTLS_DHM_C\r
2327  *\r
2328  * Enable the Diffie-Hellman-Merkle module.\r
2329  *\r
2330  * Module:  library/dhm.c\r
2331  * Caller:  library/ssl_cli.c\r
2332  *          library/ssl_srv.c\r
2333  *\r
2334  * This module is used by the following key exchanges:\r
2335  *      DHE-RSA, DHE-PSK\r
2336  *\r
2337  * \warning    Using DHE constitutes a security risk as it\r
2338  *             is not possible to validate custom DH parameters.\r
2339  *             If possible, it is recommended users should consider\r
2340  *             preferring other methods of key exchange.\r
2341  *             See dhm.h for more details.\r
2342  *\r
2343  */\r
2344 #define MBEDTLS_DHM_C\r
2345 \r
2346 /**\r
2347  * \def MBEDTLS_ECDH_C\r
2348  *\r
2349  * Enable the elliptic curve Diffie-Hellman library.\r
2350  *\r
2351  * Module:  library/ecdh.c\r
2352  * Caller:  library/ssl_cli.c\r
2353  *          library/ssl_srv.c\r
2354  *\r
2355  * This module is used by the following key exchanges:\r
2356  *      ECDHE-ECDSA, ECDHE-RSA, DHE-PSK\r
2357  *\r
2358  * Requires: MBEDTLS_ECP_C\r
2359  */\r
2360 #define MBEDTLS_ECDH_C\r
2361 \r
2362 /**\r
2363  * \def MBEDTLS_ECDSA_C\r
2364  *\r
2365  * Enable the elliptic curve DSA library.\r
2366  *\r
2367  * Module:  library/ecdsa.c\r
2368  * Caller:\r
2369  *\r
2370  * This module is used by the following key exchanges:\r
2371  *      ECDHE-ECDSA\r
2372  *\r
2373  * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C\r
2374  */\r
2375 #define MBEDTLS_ECDSA_C\r
2376 \r
2377 /**\r
2378  * \def MBEDTLS_ECJPAKE_C\r
2379  *\r
2380  * Enable the elliptic curve J-PAKE library.\r
2381  *\r
2382  * \warning This is currently experimental. EC J-PAKE support is based on the\r
2383  * Thread v1.0.0 specification; incompatible changes to the specification\r
2384  * might still happen. For this reason, this is disabled by default.\r
2385  *\r
2386  * Module:  library/ecjpake.c\r
2387  * Caller:\r
2388  *\r
2389  * This module is used by the following key exchanges:\r
2390  *      ECJPAKE\r
2391  *\r
2392  * Requires: MBEDTLS_ECP_C, MBEDTLS_MD_C\r
2393  */\r
2394 //#define MBEDTLS_ECJPAKE_C\r
2395 \r
2396 /**\r
2397  * \def MBEDTLS_ECP_C\r
2398  *\r
2399  * Enable the elliptic curve over GF(p) library.\r
2400  *\r
2401  * Module:  library/ecp.c\r
2402  * Caller:  library/ecdh.c\r
2403  *          library/ecdsa.c\r
2404  *          library/ecjpake.c\r
2405  *\r
2406  * Requires: MBEDTLS_BIGNUM_C and at least one MBEDTLS_ECP_DP_XXX_ENABLED\r
2407  */\r
2408 #define MBEDTLS_ECP_C\r
2409 \r
2410 /**\r
2411  * \def MBEDTLS_ENTROPY_C\r
2412  *\r
2413  * Enable the platform-specific entropy code.\r
2414  *\r
2415  * Module:  library/entropy.c\r
2416  * Caller:\r
2417  *\r
2418  * Requires: MBEDTLS_SHA512_C or MBEDTLS_SHA256_C\r
2419  *\r
2420  * This module provides a generic entropy pool\r
2421  */\r
2422 #define MBEDTLS_ENTROPY_C\r
2423 \r
2424 /**\r
2425  * \def MBEDTLS_ERROR_C\r
2426  *\r
2427  * Enable error code to error string conversion.\r
2428  *\r
2429  * Module:  library/error.c\r
2430  * Caller:\r
2431  *\r
2432  * This module enables mbedtls_strerror().\r
2433  */\r
2434 #define MBEDTLS_ERROR_C\r
2435 \r
2436 /**\r
2437  * \def MBEDTLS_GCM_C\r
2438  *\r
2439  * Enable the Galois/Counter Mode (GCM) for AES.\r
2440  *\r
2441  * Module:  library/gcm.c\r
2442  *\r
2443  * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C\r
2444  *\r
2445  * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other\r
2446  * requisites are enabled as well.\r
2447  */\r
2448 #define MBEDTLS_GCM_C\r
2449 \r
2450 /**\r
2451  * \def MBEDTLS_HAVEGE_C\r
2452  *\r
2453  * Enable the HAVEGE random generator.\r
2454  *\r
2455  * Warning: the HAVEGE random generator is not suitable for virtualized\r
2456  *          environments\r
2457  *\r
2458  * Warning: the HAVEGE random generator is dependent on timing and specific\r
2459  *          processor traits. It is therefore not advised to use HAVEGE as\r
2460  *          your applications primary random generator or primary entropy pool\r
2461  *          input. As a secondary input to your entropy pool, it IS able add\r
2462  *          the (limited) extra entropy it provides.\r
2463  *\r
2464  * Module:  library/havege.c\r
2465  * Caller:\r
2466  *\r
2467  * Requires: MBEDTLS_TIMING_C\r
2468  *\r
2469  * Uncomment to enable the HAVEGE random generator.\r
2470  */\r
2471 //#define MBEDTLS_HAVEGE_C\r
2472 \r
2473 /**\r
2474  * \def MBEDTLS_HKDF_C\r
2475  *\r
2476  * Enable the HKDF algorithm (RFC 5869).\r
2477  *\r
2478  * Module:  library/hkdf.c\r
2479  * Caller:\r
2480  *\r
2481  * Requires: MBEDTLS_MD_C\r
2482  *\r
2483  * This module adds support for the Hashed Message Authentication Code\r
2484  * (HMAC)-based key derivation function (HKDF).\r
2485  */\r
2486 #define MBEDTLS_HKDF_C\r
2487 \r
2488 /**\r
2489  * \def MBEDTLS_HMAC_DRBG_C\r
2490  *\r
2491  * Enable the HMAC_DRBG random generator.\r
2492  *\r
2493  * Module:  library/hmac_drbg.c\r
2494  * Caller:\r
2495  *\r
2496  * Requires: MBEDTLS_MD_C\r
2497  *\r
2498  * Uncomment to enable the HMAC_DRBG random number geerator.\r
2499  */\r
2500 #define MBEDTLS_HMAC_DRBG_C\r
2501 \r
2502 /**\r
2503  * \def MBEDTLS_NIST_KW_C\r
2504  *\r
2505  * Enable the Key Wrapping mode for 128-bit block ciphers,\r
2506  * as defined in NIST SP 800-38F. Only KW and KWP modes\r
2507  * are supported. At the moment, only AES is approved by NIST.\r
2508  *\r
2509  * Module:  library/nist_kw.c\r
2510  *\r
2511  * Requires: MBEDTLS_AES_C and MBEDTLS_CIPHER_C\r
2512  */\r
2513 //#define MBEDTLS_NIST_KW_C\r
2514 \r
2515 /**\r
2516  * \def MBEDTLS_MD_C\r
2517  *\r
2518  * Enable the generic message digest layer.\r
2519  *\r
2520  * Module:  library/md.c\r
2521  * Caller:\r
2522  *\r
2523  * Uncomment to enable generic message digest wrappers.\r
2524  */\r
2525 #define MBEDTLS_MD_C\r
2526 \r
2527 /**\r
2528  * \def MBEDTLS_MD2_C\r
2529  *\r
2530  * Enable the MD2 hash algorithm.\r
2531  *\r
2532  * Module:  library/md2.c\r
2533  * Caller:\r
2534  *\r
2535  * Uncomment to enable support for (rare) MD2-signed X.509 certs.\r
2536  *\r
2537  * \warning   MD2 is considered a weak message digest and its use constitutes a\r
2538  *            security risk. If possible, we recommend avoiding dependencies on\r
2539  *            it, and considering stronger message digests instead.\r
2540  *\r
2541  */\r
2542 //#define MBEDTLS_MD2_C\r
2543 \r
2544 /**\r
2545  * \def MBEDTLS_MD4_C\r
2546  *\r
2547  * Enable the MD4 hash algorithm.\r
2548  *\r
2549  * Module:  library/md4.c\r
2550  * Caller:\r
2551  *\r
2552  * Uncomment to enable support for (rare) MD4-signed X.509 certs.\r
2553  *\r
2554  * \warning   MD4 is considered a weak message digest and its use constitutes a\r
2555  *            security risk. If possible, we recommend avoiding dependencies on\r
2556  *            it, and considering stronger message digests instead.\r
2557  *\r
2558  */\r
2559 //#define MBEDTLS_MD4_C\r
2560 \r
2561 /**\r
2562  * \def MBEDTLS_MD5_C\r
2563  *\r
2564  * Enable the MD5 hash algorithm.\r
2565  *\r
2566  * Module:  library/md5.c\r
2567  * Caller:  library/md.c\r
2568  *          library/pem.c\r
2569  *          library/ssl_tls.c\r
2570  *\r
2571  * This module is required for SSL/TLS up to version 1.1, and for TLS 1.2\r
2572  * depending on the handshake parameters. Further, it is used for checking\r
2573  * MD5-signed certificates, and for PBKDF1 when decrypting PEM-encoded\r
2574  * encrypted keys.\r
2575  *\r
2576  * \warning   MD5 is considered a weak message digest and its use constitutes a\r
2577  *            security risk. If possible, we recommend avoiding dependencies on\r
2578  *            it, and considering stronger message digests instead.\r
2579  *\r
2580  */\r
2581 #define MBEDTLS_MD5_C\r
2582 \r
2583 /**\r
2584  * \def MBEDTLS_MEMORY_BUFFER_ALLOC_C\r
2585  *\r
2586  * Enable the buffer allocator implementation that makes use of a (stack)\r
2587  * based buffer to 'allocate' dynamic memory. (replaces calloc() and free()\r
2588  * calls)\r
2589  *\r
2590  * Module:  library/memory_buffer_alloc.c\r
2591  *\r
2592  * Requires: MBEDTLS_PLATFORM_C\r
2593  *           MBEDTLS_PLATFORM_MEMORY (to use it within mbed TLS)\r
2594  *\r
2595  * Enable this module to enable the buffer memory allocator.\r
2596  */\r
2597 //#define MBEDTLS_MEMORY_BUFFER_ALLOC_C\r
2598 \r
2599 /**\r
2600  * \def MBEDTLS_NET_C\r
2601  *\r
2602  * Enable the TCP and UDP over IPv6/IPv4 networking routines.\r
2603  *\r
2604  * \note This module only works on POSIX/Unix (including Linux, BSD and OS X)\r
2605  * and Windows. For other platforms, you'll want to disable it, and write your\r
2606  * own networking callbacks to be passed to \c mbedtls_ssl_set_bio().\r
2607  *\r
2608  * \note See also our Knowledge Base article about porting to a new\r
2609  * environment:\r
2610  * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS\r
2611  *\r
2612  * Module:  library/net_sockets.c\r
2613  *\r
2614  * This module provides networking routines.\r
2615  */\r
2616 #define MBEDTLS_NET_C\r
2617 \r
2618 /**\r
2619  * \def MBEDTLS_OID_C\r
2620  *\r
2621  * Enable the OID database.\r
2622  *\r
2623  * Module:  library/oid.c\r
2624  * Caller:  library/asn1write.c\r
2625  *          library/pkcs5.c\r
2626  *          library/pkparse.c\r
2627  *          library/pkwrite.c\r
2628  *          library/rsa.c\r
2629  *          library/x509.c\r
2630  *          library/x509_create.c\r
2631  *          library/x509_crl.c\r
2632  *          library/x509_crt.c\r
2633  *          library/x509_csr.c\r
2634  *          library/x509write_crt.c\r
2635  *          library/x509write_csr.c\r
2636  *\r
2637  * This modules translates between OIDs and internal values.\r
2638  */\r
2639 #define MBEDTLS_OID_C\r
2640 \r
2641 /**\r
2642  * \def MBEDTLS_PADLOCK_C\r
2643  *\r
2644  * Enable VIA Padlock support on x86.\r
2645  *\r
2646  * Module:  library/padlock.c\r
2647  * Caller:  library/aes.c\r
2648  *\r
2649  * Requires: MBEDTLS_HAVE_ASM\r
2650  *\r
2651  * This modules adds support for the VIA PadLock on x86.\r
2652  */\r
2653 #define MBEDTLS_PADLOCK_C\r
2654 \r
2655 /**\r
2656  * \def MBEDTLS_PEM_PARSE_C\r
2657  *\r
2658  * Enable PEM decoding / parsing.\r
2659  *\r
2660  * Module:  library/pem.c\r
2661  * Caller:  library/dhm.c\r
2662  *          library/pkparse.c\r
2663  *          library/x509_crl.c\r
2664  *          library/x509_crt.c\r
2665  *          library/x509_csr.c\r
2666  *\r
2667  * Requires: MBEDTLS_BASE64_C\r
2668  *\r
2669  * This modules adds support for decoding / parsing PEM files.\r
2670  */\r
2671 #define MBEDTLS_PEM_PARSE_C\r
2672 \r
2673 /**\r
2674  * \def MBEDTLS_PEM_WRITE_C\r
2675  *\r
2676  * Enable PEM encoding / writing.\r
2677  *\r
2678  * Module:  library/pem.c\r
2679  * Caller:  library/pkwrite.c\r
2680  *          library/x509write_crt.c\r
2681  *          library/x509write_csr.c\r
2682  *\r
2683  * Requires: MBEDTLS_BASE64_C\r
2684  *\r
2685  * This modules adds support for encoding / writing PEM files.\r
2686  */\r
2687 #define MBEDTLS_PEM_WRITE_C\r
2688 \r
2689 /**\r
2690  * \def MBEDTLS_PK_C\r
2691  *\r
2692  * Enable the generic public (asymetric) key layer.\r
2693  *\r
2694  * Module:  library/pk.c\r
2695  * Caller:  library/ssl_tls.c\r
2696  *          library/ssl_cli.c\r
2697  *          library/ssl_srv.c\r
2698  *\r
2699  * Requires: MBEDTLS_RSA_C or MBEDTLS_ECP_C\r
2700  *\r
2701  * Uncomment to enable generic public key wrappers.\r
2702  */\r
2703 #define MBEDTLS_PK_C\r
2704 \r
2705 /**\r
2706  * \def MBEDTLS_PK_PARSE_C\r
2707  *\r
2708  * Enable the generic public (asymetric) key parser.\r
2709  *\r
2710  * Module:  library/pkparse.c\r
2711  * Caller:  library/x509_crt.c\r
2712  *          library/x509_csr.c\r
2713  *\r
2714  * Requires: MBEDTLS_PK_C\r
2715  *\r
2716  * Uncomment to enable generic public key parse functions.\r
2717  */\r
2718 #define MBEDTLS_PK_PARSE_C\r
2719 \r
2720 /**\r
2721  * \def MBEDTLS_PK_WRITE_C\r
2722  *\r
2723  * Enable the generic public (asymetric) key writer.\r
2724  *\r
2725  * Module:  library/pkwrite.c\r
2726  * Caller:  library/x509write.c\r
2727  *\r
2728  * Requires: MBEDTLS_PK_C\r
2729  *\r
2730  * Uncomment to enable generic public key write functions.\r
2731  */\r
2732 #define MBEDTLS_PK_WRITE_C\r
2733 \r
2734 /**\r
2735  * \def MBEDTLS_PKCS5_C\r
2736  *\r
2737  * Enable PKCS#5 functions.\r
2738  *\r
2739  * Module:  library/pkcs5.c\r
2740  *\r
2741  * Requires: MBEDTLS_MD_C\r
2742  *\r
2743  * This module adds support for the PKCS#5 functions.\r
2744  */\r
2745 #define MBEDTLS_PKCS5_C\r
2746 \r
2747 /**\r
2748  * \def MBEDTLS_PKCS11_C\r
2749  *\r
2750  * Enable wrapper for PKCS#11 smartcard support.\r
2751  *\r
2752  * Module:  library/pkcs11.c\r
2753  * Caller:  library/pk.c\r
2754  *\r
2755  * Requires: MBEDTLS_PK_C\r
2756  *\r
2757  * This module enables SSL/TLS PKCS #11 smartcard support.\r
2758  * Requires the presence of the PKCS#11 helper library (libpkcs11-helper)\r
2759  */\r
2760 //#define MBEDTLS_PKCS11_C\r
2761 \r
2762 /**\r
2763  * \def MBEDTLS_PKCS12_C\r
2764  *\r
2765  * Enable PKCS#12 PBE functions.\r
2766  * Adds algorithms for parsing PKCS#8 encrypted private keys\r
2767  *\r
2768  * Module:  library/pkcs12.c\r
2769  * Caller:  library/pkparse.c\r
2770  *\r
2771  * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_CIPHER_C, MBEDTLS_MD_C\r
2772  * Can use:  MBEDTLS_ARC4_C\r
2773  *\r
2774  * This module enables PKCS#12 functions.\r
2775  */\r
2776 #define MBEDTLS_PKCS12_C\r
2777 \r
2778 /**\r
2779  * \def MBEDTLS_PLATFORM_C\r
2780  *\r
2781  * Enable the platform abstraction layer that allows you to re-assign\r
2782  * functions like calloc(), free(), snprintf(), printf(), fprintf(), exit().\r
2783  *\r
2784  * Enabling MBEDTLS_PLATFORM_C enables to use of MBEDTLS_PLATFORM_XXX_ALT\r
2785  * or MBEDTLS_PLATFORM_XXX_MACRO directives, allowing the functions mentioned\r
2786  * above to be specified at runtime or compile time respectively.\r
2787  *\r
2788  * \note This abstraction layer must be enabled on Windows (including MSYS2)\r
2789  * as other module rely on it for a fixed snprintf implementation.\r
2790  *\r
2791  * Module:  library/platform.c\r
2792  * Caller:  Most other .c files\r
2793  *\r
2794  * This module enables abstraction of common (libc) functions.\r
2795  */\r
2796 #define MBEDTLS_PLATFORM_C\r
2797 \r
2798 /**\r
2799  * \def MBEDTLS_POLY1305_C\r
2800  *\r
2801  * Enable the Poly1305 MAC algorithm.\r
2802  *\r
2803  * Module:  library/poly1305.c\r
2804  * Caller:  library/chachapoly.c\r
2805  */\r
2806 #define MBEDTLS_POLY1305_C\r
2807 \r
2808 /**\r
2809  * \def MBEDTLS_PSA_CRYPTO_C\r
2810  *\r
2811  * Enable the Platform Security Architecture cryptography API.\r
2812  *\r
2813  * \warning The PSA Crypto API is still beta status. While you're welcome to\r
2814  * experiment using it, incompatible API changes are still possible, and some\r
2815  * parts may not have reached the same quality as the rest of Mbed TLS yet.\r
2816  *\r
2817  * Module:  crypto/library/psa_crypto.c\r
2818  *\r
2819  * Requires: MBEDTLS_CTR_DRBG_C, MBEDTLS_ENTROPY_C\r
2820  *\r
2821  */\r
2822 #define MBEDTLS_PSA_CRYPTO_C\r
2823 \r
2824 /**\r
2825  * \def MBEDTLS_PSA_CRYPTO_STORAGE_C\r
2826  *\r
2827  * Enable the Platform Security Architecture persistent key storage.\r
2828  *\r
2829  * Module:  crypto/library/psa_crypto_storage.c\r
2830  *\r
2831  * Requires: MBEDTLS_PSA_CRYPTO_C,\r
2832  *           either MBEDTLS_PSA_ITS_FILE_C or a native implementation of\r
2833  *           the PSA ITS interface\r
2834  */\r
2835 //#define MBEDTLS_PSA_CRYPTO_STORAGE_C\r
2836 \r
2837 /**\r
2838  * \def MBEDTLS_PSA_ITS_FILE_C\r
2839  *\r
2840  * Enable the emulation of the Platform Security Architecture\r
2841  * Internal Trusted Storage (PSA ITS) over files.\r
2842  *\r
2843  * Module:  crypto/library/psa_its_file.c\r
2844  *\r
2845  * Requires: MBEDTLS_FS_IO\r
2846  *\r
2847  */\r
2848 //#define MBEDTLS_PSA_ITS_FILE_C\r
2849 \r
2850 /**\r
2851  * \def MBEDTLS_RIPEMD160_C\r
2852  *\r
2853  * Enable the RIPEMD-160 hash algorithm.\r
2854  *\r
2855  * Module:  library/ripemd160.c\r
2856  * Caller:  library/md.c\r
2857  *\r
2858  */\r
2859 #define MBEDTLS_RIPEMD160_C\r
2860 \r
2861 /**\r
2862  * \def MBEDTLS_RSA_C\r
2863  *\r
2864  * Enable the RSA public-key cryptosystem.\r
2865  *\r
2866  * Module:  library/rsa.c\r
2867  *          library/rsa_internal.c\r
2868  * Caller:  library/ssl_cli.c\r
2869  *          library/ssl_srv.c\r
2870  *          library/ssl_tls.c\r
2871  *          library/x509.c\r
2872  *\r
2873  * This module is used by the following key exchanges:\r
2874  *      RSA, DHE-RSA, ECDHE-RSA, RSA-PSK\r
2875  *\r
2876  * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C\r
2877  */\r
2878 #define MBEDTLS_RSA_C\r
2879 \r
2880 /**\r
2881  * \def MBEDTLS_SHA1_C\r
2882  *\r
2883  * Enable the SHA1 cryptographic hash algorithm.\r
2884  *\r
2885  * Module:  library/sha1.c\r
2886  * Caller:  library/md.c\r
2887  *          library/ssl_cli.c\r
2888  *          library/ssl_srv.c\r
2889  *          library/ssl_tls.c\r
2890  *          library/x509write_crt.c\r
2891  *\r
2892  * This module is required for SSL/TLS up to version 1.1, for TLS 1.2\r
2893  * depending on the handshake parameters, and for SHA1-signed certificates.\r
2894  *\r
2895  * \warning   SHA-1 is considered a weak message digest and its use constitutes\r
2896  *            a security risk. If possible, we recommend avoiding dependencies\r
2897  *            on it, and considering stronger message digests instead.\r
2898  *\r
2899  */\r
2900 #define MBEDTLS_SHA1_C\r
2901 \r
2902 /**\r
2903  * \def MBEDTLS_SHA256_C\r
2904  *\r
2905  * Enable the SHA-224 and SHA-256 cryptographic hash algorithms.\r
2906  *\r
2907  * Module:  library/sha256.c\r
2908  * Caller:  library/entropy.c\r
2909  *          library/md.c\r
2910  *          library/ssl_cli.c\r
2911  *          library/ssl_srv.c\r
2912  *          library/ssl_tls.c\r
2913  *\r
2914  * This module adds support for SHA-224 and SHA-256.\r
2915  * This module is required for the SSL/TLS 1.2 PRF function.\r
2916  */\r
2917 #define MBEDTLS_SHA256_C\r
2918 \r
2919 /**\r
2920  * \def MBEDTLS_SHA512_C\r
2921  *\r
2922  * Enable the SHA-384 and SHA-512 cryptographic hash algorithms.\r
2923  *\r
2924  * Module:  library/sha512.c\r
2925  * Caller:  library/entropy.c\r
2926  *          library/md.c\r
2927  *          library/ssl_cli.c\r
2928  *          library/ssl_srv.c\r
2929  *\r
2930  * This module adds support for SHA-384 and SHA-512.\r
2931  */\r
2932 #define MBEDTLS_SHA512_C\r
2933 \r
2934 /**\r
2935  * \def MBEDTLS_SSL_CACHE_C\r
2936  *\r
2937  * Enable simple SSL cache implementation.\r
2938  *\r
2939  * Module:  library/ssl_cache.c\r
2940  * Caller:\r
2941  *\r
2942  * Requires: MBEDTLS_SSL_CACHE_C\r
2943  */\r
2944 #define MBEDTLS_SSL_CACHE_C\r
2945 \r
2946 /**\r
2947  * \def MBEDTLS_SSL_COOKIE_C\r
2948  *\r
2949  * Enable basic implementation of DTLS cookies for hello verification.\r
2950  *\r
2951  * Module:  library/ssl_cookie.c\r
2952  * Caller:\r
2953  */\r
2954 #define MBEDTLS_SSL_COOKIE_C\r
2955 \r
2956 /**\r
2957  * \def MBEDTLS_SSL_TICKET_C\r
2958  *\r
2959  * Enable an implementation of TLS server-side callbacks for session tickets.\r
2960  *\r
2961  * Module:  library/ssl_ticket.c\r
2962  * Caller:\r
2963  *\r
2964  * Requires: MBEDTLS_CIPHER_C\r
2965  */\r
2966 #define MBEDTLS_SSL_TICKET_C\r
2967 \r
2968 /**\r
2969  * \def MBEDTLS_SSL_CLI_C\r
2970  *\r
2971  * Enable the SSL/TLS client code.\r
2972  *\r
2973  * Module:  library/ssl_cli.c\r
2974  * Caller:\r
2975  *\r
2976  * Requires: MBEDTLS_SSL_TLS_C\r
2977  *\r
2978  * This module is required for SSL/TLS client support.\r
2979  */\r
2980 #define MBEDTLS_SSL_CLI_C\r
2981 \r
2982 /**\r
2983  * \def MBEDTLS_SSL_SRV_C\r
2984  *\r
2985  * Enable the SSL/TLS server code.\r
2986  *\r
2987  * Module:  library/ssl_srv.c\r
2988  * Caller:\r
2989  *\r
2990  * Requires: MBEDTLS_SSL_TLS_C\r
2991  *\r
2992  * This module is required for SSL/TLS server support.\r
2993  */\r
2994 #define MBEDTLS_SSL_SRV_C\r
2995 \r
2996 /**\r
2997  * \def MBEDTLS_SSL_TLS_C\r
2998  *\r
2999  * Enable the generic SSL/TLS code.\r
3000  *\r
3001  * Module:  library/ssl_tls.c\r
3002  * Caller:  library/ssl_cli.c\r
3003  *          library/ssl_srv.c\r
3004  *\r
3005  * Requires: MBEDTLS_CIPHER_C, MBEDTLS_MD_C\r
3006  *           and at least one of the MBEDTLS_SSL_PROTO_XXX defines\r
3007  *\r
3008  * This module is required for SSL/TLS.\r
3009  */\r
3010 #define MBEDTLS_SSL_TLS_C\r
3011 \r
3012 /**\r
3013  * \def MBEDTLS_THREADING_C\r
3014  *\r
3015  * Enable the threading abstraction layer.\r
3016  * By default mbed TLS assumes it is used in a non-threaded environment or that\r
3017  * contexts are not shared between threads. If you do intend to use contexts\r
3018  * between threads, you will need to enable this layer to prevent race\r
3019  * conditions. See also our Knowledge Base article about threading:\r
3020  * https://tls.mbed.org/kb/development/thread-safety-and-multi-threading\r
3021  *\r
3022  * Module:  library/threading.c\r
3023  *\r
3024  * This allows different threading implementations (self-implemented or\r
3025  * provided).\r
3026  *\r
3027  * You will have to enable either MBEDTLS_THREADING_ALT or\r
3028  * MBEDTLS_THREADING_PTHREAD.\r
3029  *\r
3030  * Enable this layer to allow use of mutexes within mbed TLS\r
3031  */\r
3032 //#define MBEDTLS_THREADING_C\r
3033 \r
3034 /**\r
3035  * \def MBEDTLS_TIMING_C\r
3036  *\r
3037  * Enable the semi-portable timing interface.\r
3038  *\r
3039  * \note The provided implementation only works on POSIX/Unix (including Linux,\r
3040  * BSD and OS X) and Windows. On other platforms, you can either disable that\r
3041  * module and provide your own implementations of the callbacks needed by\r
3042  * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide\r
3043  * your own implementation of the whole module by setting\r
3044  * \c MBEDTLS_TIMING_ALT in the current file.\r
3045  *\r
3046  * \note See also our Knowledge Base article about porting to a new\r
3047  * environment:\r
3048  * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS\r
3049  *\r
3050  * Module:  library/timing.c\r
3051  * Caller:  library/havege.c\r
3052  *\r
3053  * This module is used by the HAVEGE random number generator.\r
3054  */\r
3055 #define MBEDTLS_TIMING_C\r
3056 \r
3057 /**\r
3058  * \def MBEDTLS_VERSION_C\r
3059  *\r
3060  * Enable run-time version information.\r
3061  *\r
3062  * Module:  library/version.c\r
3063  *\r
3064  * This module provides run-time version information.\r
3065  */\r
3066 #define MBEDTLS_VERSION_C\r
3067 \r
3068 /**\r
3069  * \def MBEDTLS_X509_USE_C\r
3070  *\r
3071  * Enable X.509 core for using certificates.\r
3072  *\r
3073  * Module:  library/x509.c\r
3074  * Caller:  library/x509_crl.c\r
3075  *          library/x509_crt.c\r
3076  *          library/x509_csr.c\r
3077  *\r
3078  * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_BIGNUM_C, MBEDTLS_OID_C,\r
3079  *           MBEDTLS_PK_PARSE_C\r
3080  *\r
3081  * This module is required for the X.509 parsing modules.\r
3082  */\r
3083 #define MBEDTLS_X509_USE_C\r
3084 \r
3085 /**\r
3086  * \def MBEDTLS_X509_CRT_PARSE_C\r
3087  *\r
3088  * Enable X.509 certificate parsing.\r
3089  *\r
3090  * Module:  library/x509_crt.c\r
3091  * Caller:  library/ssl_cli.c\r
3092  *          library/ssl_srv.c\r
3093  *          library/ssl_tls.c\r
3094  *\r
3095  * Requires: MBEDTLS_X509_USE_C\r
3096  *\r
3097  * This module is required for X.509 certificate parsing.\r
3098  */\r
3099 #define MBEDTLS_X509_CRT_PARSE_C\r
3100 \r
3101 /**\r
3102  * \def MBEDTLS_X509_CRL_PARSE_C\r
3103  *\r
3104  * Enable X.509 CRL parsing.\r
3105  *\r
3106  * Module:  library/x509_crl.c\r
3107  * Caller:  library/x509_crt.c\r
3108  *\r
3109  * Requires: MBEDTLS_X509_USE_C\r
3110  *\r
3111  * This module is required for X.509 CRL parsing.\r
3112  */\r
3113 #define MBEDTLS_X509_CRL_PARSE_C\r
3114 \r
3115 /**\r
3116  * \def MBEDTLS_X509_CSR_PARSE_C\r
3117  *\r
3118  * Enable X.509 Certificate Signing Request (CSR) parsing.\r
3119  *\r
3120  * Module:  library/x509_csr.c\r
3121  * Caller:  library/x509_crt_write.c\r
3122  *\r
3123  * Requires: MBEDTLS_X509_USE_C\r
3124  *\r
3125  * This module is used for reading X.509 certificate request.\r
3126  */\r
3127 #define MBEDTLS_X509_CSR_PARSE_C\r
3128 \r
3129 /**\r
3130  * \def MBEDTLS_X509_CREATE_C\r
3131  *\r
3132  * Enable X.509 core for creating certificates.\r
3133  *\r
3134  * Module:  library/x509_create.c\r
3135  *\r
3136  * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_WRITE_C\r
3137  *\r
3138  * This module is the basis for creating X.509 certificates and CSRs.\r
3139  */\r
3140 #define MBEDTLS_X509_CREATE_C\r
3141 \r
3142 /**\r
3143  * \def MBEDTLS_X509_CRT_WRITE_C\r
3144  *\r
3145  * Enable creating X.509 certificates.\r
3146  *\r
3147  * Module:  library/x509_crt_write.c\r
3148  *\r
3149  * Requires: MBEDTLS_X509_CREATE_C\r
3150  *\r
3151  * This module is required for X.509 certificate creation.\r
3152  */\r
3153 #define MBEDTLS_X509_CRT_WRITE_C\r
3154 \r
3155 /**\r
3156  * \def MBEDTLS_X509_CSR_WRITE_C\r
3157  *\r
3158  * Enable creating X.509 Certificate Signing Requests (CSR).\r
3159  *\r
3160  * Module:  library/x509_csr_write.c\r
3161  *\r
3162  * Requires: MBEDTLS_X509_CREATE_C\r
3163  *\r
3164  * This module is required for X.509 certificate request writing.\r
3165  */\r
3166 #define MBEDTLS_X509_CSR_WRITE_C\r
3167 \r
3168 /**\r
3169  * \def MBEDTLS_XTEA_C\r
3170  *\r
3171  * Enable the XTEA block cipher.\r
3172  *\r
3173  * Module:  library/xtea.c\r
3174  * Caller:\r
3175  */\r
3176 #define MBEDTLS_XTEA_C\r
3177 \r
3178 /* \} name SECTION: mbed TLS modules */\r
3179 \r
3180 /**\r
3181  * \name SECTION: Module configuration options\r
3182  *\r
3183  * This section allows for the setting of module specific sizes and\r
3184  * configuration options. The default values are already present in the\r
3185  * relevant header files and should suffice for the regular use cases.\r
3186  *\r
3187  * Our advice is to enable options and change their values here\r
3188  * only if you have a good reason and know the consequences.\r
3189  *\r
3190  * Please check the respective header file for documentation on these\r
3191  * parameters (to prevent duplicate documentation).\r
3192  * \{\r
3193  */\r
3194 \r
3195 /* MPI / BIGNUM options */\r
3196 //#define MBEDTLS_MPI_WINDOW_SIZE            6 /**< Maximum windows size used. */\r
3197 //#define MBEDTLS_MPI_MAX_SIZE            1024 /**< Maximum number of bytes for usable MPIs. */\r
3198 \r
3199 /* CTR_DRBG options */\r
3200 //#define MBEDTLS_CTR_DRBG_ENTROPY_LEN               48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */\r
3201 //#define MBEDTLS_CTR_DRBG_RESEED_INTERVAL        10000 /**< Interval before reseed is performed by default */\r
3202 //#define MBEDTLS_CTR_DRBG_MAX_INPUT                256 /**< Maximum number of additional input bytes */\r
3203 //#define MBEDTLS_CTR_DRBG_MAX_REQUEST             1024 /**< Maximum number of requested bytes per call */\r
3204 //#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT           384 /**< Maximum size of (re)seed buffer */\r
3205 //#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY              /**< Use 128-bit key for CTR_DRBG - may reduce security (see ctr_drbg.h) */\r
3206 \r
3207 /* HMAC_DRBG options */\r
3208 //#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL   10000 /**< Interval before reseed is performed by default */\r
3209 //#define MBEDTLS_HMAC_DRBG_MAX_INPUT           256 /**< Maximum number of additional input bytes */\r
3210 //#define MBEDTLS_HMAC_DRBG_MAX_REQUEST        1024 /**< Maximum number of requested bytes per call */\r
3211 //#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT      384 /**< Maximum size of (re)seed buffer */\r
3212 \r
3213 /* ECP options */\r
3214 //#define MBEDTLS_ECP_MAX_BITS             521 /**< Maximum bit size of groups */\r
3215 //#define MBEDTLS_ECP_WINDOW_SIZE            6 /**< Maximum window size used */\r
3216 //#define MBEDTLS_ECP_FIXED_POINT_OPTIM      1 /**< Enable fixed-point speed-up */\r
3217 \r
3218 /* Entropy options */\r
3219 //#define MBEDTLS_ENTROPY_MAX_SOURCES                20 /**< Maximum number of sources supported */\r
3220 //#define MBEDTLS_ENTROPY_MAX_GATHER                128 /**< Maximum amount requested from entropy sources */\r
3221 //#define MBEDTLS_ENTROPY_MIN_HARDWARE               32 /**< Default minimum number of bytes required for the hardware entropy source mbedtls_hardware_poll() before entropy is released */\r
3222 \r
3223 /* Memory buffer allocator options */\r
3224 //#define MBEDTLS_MEMORY_ALIGN_MULTIPLE      4 /**< Align on multiples of this value */\r
3225 \r
3226 /* Platform options */\r
3227 //#define MBEDTLS_PLATFORM_STD_MEM_HDR   <stdlib.h> /**< Header to include if MBEDTLS_PLATFORM_NO_STD_FUNCTIONS is defined. Don't define if no header is needed. */\r
3228 //#define MBEDTLS_PLATFORM_STD_CALLOC        calloc /**< Default allocator to use, can be undefined */\r
3229 //#define MBEDTLS_PLATFORM_STD_FREE            free /**< Default free to use, can be undefined */\r
3230 //#define MBEDTLS_PLATFORM_STD_EXIT            exit /**< Default exit to use, can be undefined */\r
3231 //#define MBEDTLS_PLATFORM_STD_TIME            time /**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */\r
3232 //#define MBEDTLS_PLATFORM_STD_FPRINTF      fprintf /**< Default fprintf to use, can be undefined */\r
3233 //#define MBEDTLS_PLATFORM_STD_PRINTF        printf /**< Default printf to use, can be undefined */\r
3234 /* Note: your snprintf must correctly zero-terminate the buffer! */\r
3235 //#define MBEDTLS_PLATFORM_STD_SNPRINTF    snprintf /**< Default snprintf to use, can be undefined */\r
3236 //#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS       0 /**< Default exit value to use, can be undefined */\r
3237 //#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE       1 /**< Default exit value to use, can be undefined */\r
3238 //#define MBEDTLS_PLATFORM_STD_NV_SEED_READ   mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */\r
3239 //#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE  mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */\r
3240 //#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE  "seedfile" /**< Seed file to read/write with default implementation */\r
3241 \r
3242 /* To Use Function Macros MBEDTLS_PLATFORM_C must be enabled */\r
3243 /* MBEDTLS_PLATFORM_XXX_MACRO and MBEDTLS_PLATFORM_XXX_ALT cannot both be defined */\r
3244 //#define MBEDTLS_PLATFORM_CALLOC_MACRO        calloc /**< Default allocator macro to use, can be undefined */\r
3245 //#define MBEDTLS_PLATFORM_FREE_MACRO            free /**< Default free macro to use, can be undefined */\r
3246 //#define MBEDTLS_PLATFORM_EXIT_MACRO            exit /**< Default exit macro to use, can be undefined */\r
3247 //#define MBEDTLS_PLATFORM_TIME_MACRO            time /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */\r
3248 //#define MBEDTLS_PLATFORM_TIME_TYPE_MACRO       time_t /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */\r
3249 //#define MBEDTLS_PLATFORM_FPRINTF_MACRO      fprintf /**< Default fprintf macro to use, can be undefined */\r
3250 //#define MBEDTLS_PLATFORM_PRINTF_MACRO        printf /**< Default printf macro to use, can be undefined */\r
3251 /* Note: your snprintf must correctly zero-terminate the buffer! */\r
3252 //#define MBEDTLS_PLATFORM_SNPRINTF_MACRO    snprintf /**< Default snprintf macro to use, can be undefined */\r
3253 //#define MBEDTLS_PLATFORM_VSNPRINTF_MACRO    vsnprintf /**< Default vsnprintf macro to use, can be undefined */\r
3254 //#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO   mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */\r
3255 //#define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO  mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */\r
3256 \r
3257 /**\r
3258  * \brief       This macro is invoked by the library when an invalid parameter\r
3259  *              is detected that is only checked with MBEDTLS_CHECK_PARAMS\r
3260  *              (see the documentation of that option for context).\r
3261  *\r
3262  *              When you leave this undefined here, a default definition is\r
3263  *              provided that invokes the function mbedtls_param_failed(),\r
3264  *              which is declared in platform_util.h for the benefit of the\r
3265  *              library, but that you need to define in your application.\r
3266  *\r
3267  *              When you define this here, this replaces the default\r
3268  *              definition in platform_util.h (which no longer declares the\r
3269  *              function mbedtls_param_failed()) and it is your responsibility\r
3270  *              to make sure this macro expands to something suitable (in\r
3271  *              particular, that all the necessary declarations are visible\r
3272  *              from within the library - you can ensure that by providing\r
3273  *              them in this file next to the macro definition).\r
3274  *\r
3275  *              Note that you may define this macro to expand to nothing, in\r
3276  *              which case you don't have to worry about declarations or\r
3277  *              definitions. However, you will then be notified about invalid\r
3278  *              parameters only in non-void functions, and void function will\r
3279  *              just silently return early on invalid parameters, which\r
3280  *              partially negates the benefits of enabling\r
3281  *              #MBEDTLS_CHECK_PARAMS in the first place, so is discouraged.\r
3282  *\r
3283  * \param cond  The expression that should evaluate to true, but doesn't.\r
3284  */\r
3285 //#define MBEDTLS_PARAM_FAILED( cond )               assert( cond )\r
3286 \r
3287 /* SSL Cache options */\r
3288 //#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT       86400 /**< 1 day  */\r
3289 //#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES      50 /**< Maximum entries in cache */\r
3290 \r
3291 /* SSL options */\r
3292 \r
3293 /** \def MBEDTLS_SSL_MAX_CONTENT_LEN\r
3294  *\r
3295  * Maximum length (in bytes) of incoming and outgoing plaintext fragments.\r
3296  *\r
3297  * This determines the size of both the incoming and outgoing TLS I/O buffers\r
3298  * in such a way that both are capable of holding the specified amount of\r
3299  * plaintext data, regardless of the protection mechanism used.\r
3300  *\r
3301  * To configure incoming and outgoing I/O buffers separately, use\r
3302  * #MBEDTLS_SSL_IN_CONTENT_LEN and #MBEDTLS_SSL_OUT_CONTENT_LEN,\r
3303  * which overwrite the value set by this option.\r
3304  *\r
3305  * \note When using a value less than the default of 16KB on the client, it is\r
3306  *       recommended to use the Maximum Fragment Length (MFL) extension to\r
3307  *       inform the server about this limitation. On the server, there\r
3308  *       is no supported, standardized way of informing the client about\r
3309  *       restriction on the maximum size of incoming messages, and unless\r
3310  *       the limitation has been communicated by other means, it is recommended\r
3311  *       to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN\r
3312  *       while keeping the default value of 16KB for the incoming buffer.\r
3313  *\r
3314  * Uncomment to set the maximum plaintext size of both\r
3315  * incoming and outgoing I/O buffers.\r
3316  */\r
3317 //#define MBEDTLS_SSL_MAX_CONTENT_LEN             16384\r
3318 \r
3319 /** \def MBEDTLS_SSL_IN_CONTENT_LEN\r
3320  *\r
3321  * Maximum length (in bytes) of incoming plaintext fragments.\r
3322  *\r
3323  * This determines the size of the incoming TLS I/O buffer in such a way\r
3324  * that it is capable of holding the specified amount of plaintext data,\r
3325  * regardless of the protection mechanism used.\r
3326  *\r
3327  * If this option is undefined, it inherits its value from\r
3328  * #MBEDTLS_SSL_MAX_CONTENT_LEN.\r
3329  *\r
3330  * \note When using a value less than the default of 16KB on the client, it is\r
3331  *       recommended to use the Maximum Fragment Length (MFL) extension to\r
3332  *       inform the server about this limitation. On the server, there\r
3333  *       is no supported, standardized way of informing the client about\r
3334  *       restriction on the maximum size of incoming messages, and unless\r
3335  *       the limitation has been communicated by other means, it is recommended\r
3336  *       to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN\r
3337  *       while keeping the default value of 16KB for the incoming buffer.\r
3338  *\r
3339  * Uncomment to set the maximum plaintext size of the incoming I/O buffer\r
3340  * independently of the outgoing I/O buffer.\r
3341  */\r
3342 //#define MBEDTLS_SSL_IN_CONTENT_LEN              16384\r
3343 \r
3344 /** \def MBEDTLS_SSL_CID_IN_LEN_MAX\r
3345  *\r
3346  * The maximum length of CIDs used for incoming DTLS messages.\r
3347  *\r
3348  */\r
3349 //#define MBEDTLS_SSL_CID_IN_LEN_MAX 32\r
3350 \r
3351 /** \def MBEDTLS_SSL_CID_OUT_LEN_MAX\r
3352  *\r
3353  * The maximum length of CIDs used for outgoing DTLS messages.\r
3354  *\r
3355  */\r
3356 //#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32\r
3357 \r
3358 /** \def MBEDTLS_SSL_CID_PADDING_GRANULARITY\r
3359  *\r
3360  * This option controls the use of record plaintext padding\r
3361  * when using the Connection ID extension in DTLS 1.2.\r
3362  *\r
3363  * The padding will always be chosen so that the length of the\r
3364  * padded plaintext is a multiple of the value of this option.\r
3365  *\r
3366  * Note: A value of \c 1 means that no padding will be used\r
3367  *       for outgoing records.\r
3368  *\r
3369  * Note: On systems lacking division instructions,\r
3370  *       a power of two should be preferred.\r
3371  *\r
3372  */\r
3373 //#define MBEDTLS_SSL_CID_PADDING_GRANULARITY 16\r
3374 \r
3375 /** \def MBEDTLS_SSL_OUT_CONTENT_LEN\r
3376  *\r
3377  * Maximum length (in bytes) of outgoing plaintext fragments.\r
3378  *\r
3379  * This determines the size of the outgoing TLS I/O buffer in such a way\r
3380  * that it is capable of holding the specified amount of plaintext data,\r
3381  * regardless of the protection mechanism used.\r
3382  *\r
3383  * If this option undefined, it inherits its value from\r
3384  * #MBEDTLS_SSL_MAX_CONTENT_LEN.\r
3385  *\r
3386  * It is possible to save RAM by setting a smaller outward buffer, while keeping\r
3387  * the default inward 16384 byte buffer to conform to the TLS specification.\r
3388  *\r
3389  * The minimum required outward buffer size is determined by the handshake\r
3390  * protocol's usage. Handshaking will fail if the outward buffer is too small.\r
3391  * The specific size requirement depends on the configured ciphers and any\r
3392  * certificate data which is sent during the handshake.\r
3393  *\r
3394  * Uncomment to set the maximum plaintext size of the outgoing I/O buffer\r
3395  * independently of the incoming I/O buffer.\r
3396  */\r
3397 //#define MBEDTLS_SSL_OUT_CONTENT_LEN             16384\r
3398 \r
3399 /** \def MBEDTLS_SSL_DTLS_MAX_BUFFERING\r
3400  *\r
3401  * Maximum number of heap-allocated bytes for the purpose of\r
3402  * DTLS handshake message reassembly and future message buffering.\r
3403  *\r
3404  * This should be at least 9/8 * MBEDTLSSL_IN_CONTENT_LEN\r
3405  * to account for a reassembled handshake message of maximum size,\r
3406  * together with its reassembly bitmap.\r
3407  *\r
3408  * A value of 2 * MBEDTLS_SSL_IN_CONTENT_LEN (32768 by default)\r
3409  * should be sufficient for all practical situations as it allows\r
3410  * to reassembly a large handshake message (such as a certificate)\r
3411  * while buffering multiple smaller handshake messages.\r
3412  *\r
3413  */\r
3414 //#define MBEDTLS_SSL_DTLS_MAX_BUFFERING             32768\r
3415 \r
3416 //#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME     86400 /**< Lifetime of session tickets (if enabled) */\r
3417 //#define MBEDTLS_PSK_MAX_LEN               32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */\r
3418 //#define MBEDTLS_SSL_COOKIE_TIMEOUT        60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */\r
3419 \r
3420 /**\r
3421  * Complete list of ciphersuites to use, in order of preference.\r
3422  *\r
3423  * \warning No dependency checking is done on that field! This option can only\r
3424  * be used to restrict the set of available ciphersuites. It is your\r
3425  * responsibility to make sure the needed modules are active.\r
3426  *\r
3427  * Use this to save a few hundred bytes of ROM (default ordering of all\r
3428  * available ciphersuites) and a few to a few hundred bytes of RAM.\r
3429  *\r
3430  * The value below is only an example, not the default.\r
3431  */\r
3432 //#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\r
3433 \r
3434 /* X509 options */\r
3435 //#define MBEDTLS_X509_MAX_INTERMEDIATE_CA   8   /**< Maximum number of intermediate CAs in a verification chain. */\r
3436 //#define MBEDTLS_X509_MAX_FILE_PATH_LEN     512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */\r
3437 \r
3438 /**\r
3439  * Allow SHA-1 in the default TLS configuration for certificate signing.\r
3440  * Without this build-time option, SHA-1 support must be activated explicitly\r
3441  * through mbedtls_ssl_conf_cert_profile. Turning on this option is not\r
3442  * recommended because of it is possible to generate SHA-1 collisions, however\r
3443  * this may be safe for legacy infrastructure where additional controls apply.\r
3444  *\r
3445  * \warning   SHA-1 is considered a weak message digest and its use constitutes\r
3446  *            a security risk. If possible, we recommend avoiding dependencies\r
3447  *            on it, and considering stronger message digests instead.\r
3448  *\r
3449  */\r
3450 // #define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES\r
3451 \r
3452 /**\r
3453  * Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake\r
3454  * signature and ciphersuite selection. Without this build-time option, SHA-1\r
3455  * support must be activated explicitly through mbedtls_ssl_conf_sig_hashes.\r
3456  * The use of SHA-1 in TLS <= 1.1 and in HMAC-SHA-1 is always allowed by\r
3457  * default. At the time of writing, there is no practical attack on the use\r
3458  * of SHA-1 in handshake signatures, hence this option is turned on by default\r
3459  * to preserve compatibility with existing peers, but the general\r
3460  * warning applies nonetheless:\r
3461  *\r
3462  * \warning   SHA-1 is considered a weak message digest and its use constitutes\r
3463  *            a security risk. If possible, we recommend avoiding dependencies\r
3464  *            on it, and considering stronger message digests instead.\r
3465  *\r
3466  */\r
3467 #define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE\r
3468 \r
3469 /**\r
3470  * Uncomment the macro to let mbed TLS use your alternate implementation of\r
3471  * mbedtls_platform_zeroize(). This replaces the default implementation in\r
3472  * platform_util.c.\r
3473  *\r
3474  * mbedtls_platform_zeroize() is a widely used function across the library to\r
3475  * zero a block of memory. The implementation is expected to be secure in the\r
3476  * sense that it has been written to prevent the compiler from removing calls\r
3477  * to mbedtls_platform_zeroize() as part of redundant code elimination\r
3478  * optimizations. However, it is difficult to guarantee that calls to\r
3479  * mbedtls_platform_zeroize() will not be optimized by the compiler as older\r
3480  * versions of the C language standards do not provide a secure implementation\r
3481  * of memset(). Therefore, MBEDTLS_PLATFORM_ZEROIZE_ALT enables users to\r
3482  * configure their own implementation of mbedtls_platform_zeroize(), for\r
3483  * example by using directives specific to their compiler, features from newer\r
3484  * C standards (e.g using memset_s() in C11) or calling a secure memset() from\r
3485  * their system (e.g explicit_bzero() in BSD).\r
3486  */\r
3487 //#define MBEDTLS_PLATFORM_ZEROIZE_ALT\r
3488 \r
3489 /**\r
3490  * Uncomment the macro to let Mbed TLS use your alternate implementation of\r
3491  * mbedtls_platform_gmtime_r(). This replaces the default implementation in\r
3492  * platform_util.c.\r
3493  *\r
3494  * gmtime() is not a thread-safe function as defined in the C standard. The\r
3495  * library will try to use safer implementations of this function, such as\r
3496  * gmtime_r() when available. However, if Mbed TLS cannot identify the target\r
3497  * system, the implementation of mbedtls_platform_gmtime_r() will default to\r
3498  * using the standard gmtime(). In this case, calls from the library to\r
3499  * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex\r
3500  * if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the\r
3501  * library are also guarded with this mutex to avoid race conditions. However,\r
3502  * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will\r
3503  * unconditionally use the implementation for mbedtls_platform_gmtime_r()\r
3504  * supplied at compile time.\r
3505  */\r
3506 //#define MBEDTLS_PLATFORM_GMTIME_R_ALT\r
3507 \r
3508 /* \} name SECTION: Customisation configuration options */\r
3509 \r
3510 /* Target and application specific configurations\r
3511  *\r
3512  * Allow user to override any previous default.\r
3513  *\r
3514  */\r
3515 #if defined(MBEDTLS_USER_CONFIG_FILE)\r
3516 #include MBEDTLS_USER_CONFIG_FILE\r
3517 #endif\r
3518 \r
3519 #include "check_config.h"\r
3520 \r
3521 #endif /* MBEDTLS_CONFIG_H */\r