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