blob: 4f389e081d6af68780e13ac4fae499a137ba0e05 [file] [log] [blame]
Paul Bakker5121ce52009-01-03 21:22:43 +00001/**
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +02002 * \file mbedtls_config.h
Paul Bakker5121ce52009-01-03 21:22:43 +00003 *
Paul Bakker37ca75d2011-01-06 12:28:03 +00004 * \brief Configuration options (set of defines)
5 *
Simon Butcher5b331b92016-01-03 16:14:14 +00006 * This set of compile-time options may be used to enable
7 * or disable features selectively, and reduce the global
8 * memory footprint.
Darryl Greena40a1012018-01-05 15:33:17 +00009 */
10/*
Bence Szépkúti1e148272020-08-07 13:07:28 +020011 * Copyright The Mbed TLS Contributors
Manuel Pégourié-Gonnard37ff1402015-09-04 14:21:07 +020012 * 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.
Manuel Pégourié-Gonnarde2b0efe2015-08-11 10:38:37 +020025 */
26
Bence Szépkúti2bb74562021-06-21 16:19:00 +020027/**
Tom Cosgrove1e211442022-05-26 11:51:00 +010028 * This is an optional version symbol that enables compatibility handling of
Bence Szépkúti2bb74562021-06-21 16:19:00 +020029 * config files.
30 *
Bence Szépkúti1b2a8832021-06-28 10:26:11 +010031 * It is equal to the #MBEDTLS_VERSION_NUMBER of the Mbed TLS version that
Bence Szépkúti2bb74562021-06-21 16:19:00 +020032 * introduced the config format we want to be compatible with.
33 */
Bence Szépkúti1cafe5c2021-06-22 09:30:08 +020034//#define MBEDTLS_CONFIG_VERSION 0x03000000
Bence Szépkútiba7248a2021-05-31 16:53:56 +020035
Paul Bakkerf3b86c12011-01-27 15:24:17 +000036/**
Paul Bakker0a62cd12011-01-21 11:00:08 +000037 * \name SECTION: System support
38 *
39 * This section sets system specific settings.
40 * \{
41 */
42
Paul Bakkerf3b86c12011-01-27 15:24:17 +000043/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020044 * \def MBEDTLS_HAVE_ASM
Paul Bakkerf3b86c12011-01-27 15:24:17 +000045 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +020046 * The compiler has support for asm().
Paul Bakker68041ec2009-04-19 21:17:55 +000047 *
48 * Requires support for asm() in compiler.
49 *
50 * Used in:
Dave Rodgmancb0f2c42022-12-23 13:15:37 +000051 * library/aesni.h
Manuel Pégourié-Gonnard26b54fa2018-02-27 12:20:20 +010052 * library/aria.c
Chris Jones4c5819c2021-03-03 17:45:34 +000053 * library/bn_mul.h
Dave Rodgmancb0f2c42022-12-23 13:15:37 +000054 * library/constant_time.c
55 * library/padlock.h
Paul Bakker68041ec2009-04-19 21:17:55 +000056 *
Manuel Pégourié-Gonnard26b54fa2018-02-27 12:20:20 +010057 * Required by:
Tom Cosgrovef586aa22023-03-20 14:45:27 +000058 * MBEDTLS_AESCE_C
Gilles Peskine0bfccfa2023-03-16 17:49:44 +010059 * MBEDTLS_AESNI_C (on some platforms)
Manuel Pégourié-Gonnard26b54fa2018-02-27 12:20:20 +010060 * MBEDTLS_PADLOCK_C
61 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +020062 * Comment to disable the use of assembly code.
Paul Bakker5121ce52009-01-03 21:22:43 +000063 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020064#define MBEDTLS_HAVE_ASM
Paul Bakker5121ce52009-01-03 21:22:43 +000065
Paul Bakkerf3b86c12011-01-27 15:24:17 +000066/**
Gilles Peskineed942f82017-06-08 15:19:20 +020067 * \def MBEDTLS_NO_UDBL_DIVISION
68 *
69 * The platform lacks support for double-width integer division (64-bit
70 * division on a 32-bit platform, 128-bit division on a 64-bit platform).
71 *
72 * Used in:
73 * include/mbedtls/bignum.h
74 * library/bignum.c
75 *
76 * The bignum code uses double-width division to speed up some operations.
77 * Double-width division is often implemented in software that needs to
78 * be linked with the program. The presence of a double-width integer
79 * type is usually detected automatically through preprocessor macros,
80 * but the automatic detection cannot know whether the code needs to
81 * and can be linked with an implementation of division for that type.
82 * By default division is assumed to be usable if the type is present.
83 * Uncomment this option to prevent the use of double-width division.
84 *
85 * Note that division for the native integer type is always required.
86 * Furthermore, a 64-bit type is always required even on a 32-bit
Andres Amaya Garcia2801d002017-07-21 10:56:22 +010087 * platform, but it need not support multiplication or division. In some
88 * cases it is also desirable to disable some double-width operations. For
89 * example, if double-width division is implemented in software, disabling
90 * it can reduce code size in some embedded targets.
Gilles Peskineed942f82017-06-08 15:19:20 +020091 */
92//#define MBEDTLS_NO_UDBL_DIVISION
93
94/**
Manuel Pégourié-Gonnard2adb3752018-06-07 10:51:44 +020095 * \def MBEDTLS_NO_64BIT_MULTIPLICATION
96 *
97 * The platform lacks support for 32x32 -> 64-bit multiplication.
98 *
99 * Used in:
100 * library/poly1305.c
101 *
102 * Some parts of the library may use multiplication of two unsigned 32-bit
103 * operands with a 64-bit result in order to speed up computations. On some
104 * platforms, this is not available in hardware and has to be implemented in
105 * software, usually in a library provided by the toolchain.
106 *
107 * Sometimes it is not desirable to have to link to that library. This option
108 * removes the dependency of that library on platforms that lack a hardware
109 * 64-bit multiplier by embedding a software implementation in Mbed TLS.
110 *
111 * Note that depending on the compiler, this may decrease performance compared
112 * to using the library function provided by the toolchain.
113 */
114//#define MBEDTLS_NO_64BIT_MULTIPLICATION
115
116/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200117 * \def MBEDTLS_HAVE_SSE2
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000118 *
Paul Bakkere23c3152012-10-01 14:42:47 +0000119 * CPU supports SSE2 instruction set.
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000120 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000121 * Uncomment if the CPU supports SSE2 (IA-32 specific).
Paul Bakker5121ce52009-01-03 21:22:43 +0000122 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200123//#define MBEDTLS_HAVE_SSE2
Paul Bakkerfa9b1002013-07-03 15:31:03 +0200124
125/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200126 * \def MBEDTLS_HAVE_TIME
Paul Bakkerfa9b1002013-07-03 15:31:03 +0200127 *
Manuel Pégourié-Gonnard60c793b2015-06-18 20:52:58 +0200128 * System has time.h and time().
129 * The time does not need to be correct, only time differences are used,
130 * by contrast with MBEDTLS_HAVE_TIME_DATE
Paul Bakkerfa9b1002013-07-03 15:31:03 +0200131 *
Andres Amaya Garcia1e4ec662016-07-20 10:16:25 +0100132 * Defining MBEDTLS_HAVE_TIME allows you to specify MBEDTLS_PLATFORM_TIME_ALT,
133 * MBEDTLS_PLATFORM_TIME_MACRO, MBEDTLS_PLATFORM_TIME_TYPE_MACRO and
134 * MBEDTLS_PLATFORM_STD_TIME.
135 *
Andrzej Kurek57353692022-04-07 08:08:21 -0400136 * Comment if your system does not support time functions.
137 *
138 * \note If MBEDTLS_TIMING_C is set - to enable the semi-portable timing
139 * interface - timing.c will include time.h on suitable platforms
140 * regardless of the setting of MBEDTLS_HAVE_TIME, unless
141 * MBEDTLS_TIMING_ALT is used. See timing.c for more information.
Paul Bakkerfa9b1002013-07-03 15:31:03 +0200142 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200143#define MBEDTLS_HAVE_TIME
Manuel Pégourié-Gonnard10934de2013-12-13 12:54:09 +0100144
145/**
Manuel Pégourié-Gonnard60c793b2015-06-18 20:52:58 +0200146 * \def MBEDTLS_HAVE_TIME_DATE
147 *
Hanno Becker4e67cca2018-09-05 16:18:38 +0100148 * System has time.h, time(), and an implementation for
149 * mbedtls_platform_gmtime_r() (see below).
Antonin Décimo36e89b52019-01-23 15:24:37 +0100150 * The time needs to be correct (not necessarily very accurate, but at least
Manuel Pégourié-Gonnard60c793b2015-06-18 20:52:58 +0200151 * the date should be correct). This is used to verify the validity period of
152 * X.509 certificates.
153 *
154 * Comment if your system does not have a correct clock.
Andres Amaya Garcia97f3ecb2018-08-07 20:39:27 +0100155 *
Hanno Becker6a739782018-09-05 15:06:19 +0100156 * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that
Hanno Beckerc52ef402018-09-05 16:28:59 +0100157 * behaves similarly to the gmtime_r() function from the C standard. Refer to
158 * the documentation for mbedtls_platform_gmtime_r() for more information.
Andres Amaya Garciac99b12b2018-08-21 19:32:44 +0100159 *
160 * \note It is possible to configure an implementation for
Hanno Becker6a739782018-09-05 15:06:19 +0100161 * mbedtls_platform_gmtime_r() at compile-time by using the macro
162 * MBEDTLS_PLATFORM_GMTIME_R_ALT.
Manuel Pégourié-Gonnard60c793b2015-06-18 20:52:58 +0200163 */
164#define MBEDTLS_HAVE_TIME_DATE
165
166/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200167 * \def MBEDTLS_PLATFORM_MEMORY
Paul Bakkerdefc0ca2014-02-04 17:30:24 +0100168 *
169 * Enable the memory allocation layer.
170 *
Manuel Pégourié-Gonnardb9ef1182015-05-26 16:15:20 +0200171 * By default mbed TLS uses the system-provided calloc() and free().
Paul Bakkerdefc0ca2014-02-04 17:30:24 +0100172 * This allows different allocators (self-implemented or provided) to be
173 * provided to the platform abstraction layer.
174 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200175 * Enabling MBEDTLS_PLATFORM_MEMORY without the
Manuel Pégourié-Gonnardb9ef1182015-05-26 16:15:20 +0200176 * MBEDTLS_PLATFORM_{FREE,CALLOC}_MACROs will provide
177 * "mbedtls_platform_set_calloc_free()" allowing you to set an alternative calloc() and
Rich Evans16f8cd82015-02-06 16:14:34 +0000178 * free() function pointer at runtime.
179 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200180 * Enabling MBEDTLS_PLATFORM_MEMORY and specifying
Manuel Pégourié-Gonnardb9ef1182015-05-26 16:15:20 +0200181 * MBEDTLS_PLATFORM_{CALLOC,FREE}_MACROs will allow you to specify the
Rich Evans16f8cd82015-02-06 16:14:34 +0000182 * alternate function at compile time.
Paul Bakkerdefc0ca2014-02-04 17:30:24 +0100183 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200184 * Requires: MBEDTLS_PLATFORM_C
Paul Bakkerdefc0ca2014-02-04 17:30:24 +0100185 *
186 * Enable this layer to allow use of alternative memory allocators.
187 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200188//#define MBEDTLS_PLATFORM_MEMORY
Paul Bakkerdefc0ca2014-02-04 17:30:24 +0100189
190/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200191 * \def MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
Paul Bakker088c5c52014-04-25 11:11:10 +0200192 *
Manuel Pégourié-Gonnardb9ef1182015-05-26 16:15:20 +0200193 * Do not assign standard functions in the platform layer (e.g. calloc() to
194 * MBEDTLS_PLATFORM_STD_CALLOC and printf() to MBEDTLS_PLATFORM_STD_PRINTF)
Paul Bakker088c5c52014-04-25 11:11:10 +0200195 *
196 * This makes sure there are no linking errors on platforms that do not support
197 * these functions. You will HAVE to provide alternatives, either at runtime
198 * via the platform_set_xxx() functions or at compile time by setting
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200199 * the MBEDTLS_PLATFORM_STD_XXX defines, or enabling a
200 * MBEDTLS_PLATFORM_XXX_MACRO.
Paul Bakker088c5c52014-04-25 11:11:10 +0200201 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200202 * Requires: MBEDTLS_PLATFORM_C
Paul Bakker088c5c52014-04-25 11:11:10 +0200203 *
204 * Uncomment to prevent default assignment of standard functions in the
205 * platform layer.
206 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200207//#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
Paul Bakker088c5c52014-04-25 11:11:10 +0200208
209/**
Janos Follathc351d182016-03-21 08:43:59 +0000210 * \def MBEDTLS_PLATFORM_EXIT_ALT
Paul Bakker747a83a2014-02-01 22:50:07 +0100211 *
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100212 * MBEDTLS_PLATFORM_XXX_ALT: Uncomment a macro to let mbed TLS support the
213 * function in the platform abstraction layer.
Paul Bakker747a83a2014-02-01 22:50:07 +0100214 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200215 * Example: In case you uncomment MBEDTLS_PLATFORM_PRINTF_ALT, mbed TLS will
216 * provide a function "mbedtls_platform_set_printf()" that allows you to set an
Paul Bakker747a83a2014-02-01 22:50:07 +0100217 * alternative printf function pointer.
218 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200219 * All these define require MBEDTLS_PLATFORM_C to be defined!
Paul Bakker747a83a2014-02-01 22:50:07 +0100220 *
Manuel Pégourié-Gonnard9db28872015-06-26 10:52:01 +0200221 * \note MBEDTLS_PLATFORM_SNPRINTF_ALT is required on Windows;
222 * it will be enabled automatically by check_config.h
223 *
Manuel Pégourié-Gonnard6c0c8e02015-06-22 10:23:34 +0200224 * \warning MBEDTLS_PLATFORM_XXX_ALT cannot be defined at the same time as
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200225 * MBEDTLS_PLATFORM_XXX_MACRO!
Rich Evans16f8cd82015-02-06 16:14:34 +0000226 *
Andres Amaya Garcia1e4ec662016-07-20 10:16:25 +0100227 * Requires: MBEDTLS_PLATFORM_TIME_ALT requires MBEDTLS_HAVE_TIME
228 *
Paul Bakker747a83a2014-02-01 22:50:07 +0100229 * Uncomment a macro to enable alternate implementation of specific base
230 * platform function
231 */
Gilles Peskine6497b5a2022-06-30 17:01:40 +0200232//#define MBEDTLS_PLATFORM_SETBUF_ALT
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200233//#define MBEDTLS_PLATFORM_EXIT_ALT
SimonBd5800b72016-04-26 07:43:27 +0100234//#define MBEDTLS_PLATFORM_TIME_ALT
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200235//#define MBEDTLS_PLATFORM_FPRINTF_ALT
236//#define MBEDTLS_PLATFORM_PRINTF_ALT
237//#define MBEDTLS_PLATFORM_SNPRINTF_ALT
k-stachowiak723f8672018-07-16 14:27:07 +0200238//#define MBEDTLS_PLATFORM_VSNPRINTF_ALT
Paul Bakkercf0a9f92016-06-01 11:25:44 +0100239//#define MBEDTLS_PLATFORM_NV_SEED_ALT
Andres Amaya Garcia59c20262017-07-18 10:23:04 +0100240//#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
Jerry Yu38257492022-12-15 17:54:47 +0800241//#define MBEDTLS_PLATFORM_MS_TIME_ALT
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100242
243/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200244 * \def MBEDTLS_DEPRECATED_WARNING
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100245 *
Andres Amaya Garcia09634242018-11-29 09:55:41 +0000246 * Mark deprecated functions and features so that they generate a warning if
247 * used. Functionality deprecated in one version will usually be removed in the
248 * next version. You can enable this to help you prepare the transition to a
249 * new major version by making sure your code is not using this functionality.
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100250 *
251 * This only works with GCC and Clang. With other compilers, you may want to
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200252 * use MBEDTLS_DEPRECATED_REMOVED
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100253 *
Andres Amaya Garcia09634242018-11-29 09:55:41 +0000254 * Uncomment to get warnings on using deprecated functions and features.
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100255 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200256//#define MBEDTLS_DEPRECATED_WARNING
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100257
258/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200259 * \def MBEDTLS_DEPRECATED_REMOVED
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100260 *
Andres Amaya Garcia09634242018-11-29 09:55:41 +0000261 * Remove deprecated functions and features so that they generate an error if
262 * used. Functionality deprecated in one version will usually be removed in the
263 * next version. You can enable this to help you prepare the transition to a
264 * new major version by making sure your code is not using this functionality.
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100265 *
Andres Amaya Garcia09634242018-11-29 09:55:41 +0000266 * Uncomment to get errors on using deprecated functions and features.
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100267 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200268//#define MBEDTLS_DEPRECATED_REMOVED
Manuel Pégourié-Gonnardc70581c2015-03-23 13:58:27 +0100269
Andrzej Kurek38d4fdd2021-12-28 16:22:52 +0100270/** \} name SECTION: System support */
Paul Bakker0a62cd12011-01-21 11:00:08 +0000271
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000272/**
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +0000273 * \name SECTION: mbed TLS feature support
Paul Bakker0a62cd12011-01-21 11:00:08 +0000274 *
275 * This section sets support for features that are or are not needed
276 * within the modules that are enabled.
277 * \{
278 */
Paul Bakker5121ce52009-01-03 21:22:43 +0000279
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000280/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200281 * \def MBEDTLS_TIMING_ALT
Paul Bakkerf2561b32014-02-06 15:11:55 +0100282 *
TRodziewiczd8540832021-06-10 15:16:50 +0200283 * Uncomment to provide your own alternate implementation for
Manuel Pégourié-Gonnarda63bc942015-05-14 18:22:47 +0200284 * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay()
Paul Bakkerf2561b32014-02-06 15:11:55 +0100285 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200286 * Only works if you have MBEDTLS_TIMING_C enabled.
Paul Bakkerf2561b32014-02-06 15:11:55 +0100287 *
288 * You will need to provide a header "timing_alt.h" and an implementation at
289 * compile time.
290 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200291//#define MBEDTLS_TIMING_ALT
Paul Bakkerf2561b32014-02-06 15:11:55 +0100292
293/**
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100294 * \def MBEDTLS_AES_ALT
Paul Bakker90995b52013-06-24 19:20:35 +0200295 *
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100296 * MBEDTLS__MODULE_NAME__ALT: Uncomment a macro to let mbed TLS use your
Janos Follathb0697532016-08-18 12:38:46 +0100297 * alternate core implementation of a symmetric crypto, an arithmetic or hash
298 * module (e.g. platform specific assembly optimized implementations). Keep
299 * in mind that the function prototypes should remain the same.
Paul Bakker90995b52013-06-24 19:20:35 +0200300 *
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200301 * This replaces the whole module. If you only want to replace one of the
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200302 * functions, use one of the MBEDTLS__FUNCTION_NAME__ALT flags.
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200303 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200304 * Example: In case you uncomment MBEDTLS_AES_ALT, mbed TLS will no longer
Janos Follathee782bc2016-11-07 15:41:26 +0000305 * provide the "struct mbedtls_aes_context" definition and omit the base
306 * function declarations and implementations. "aes_alt.h" will be included from
Paul Bakker90995b52013-06-24 19:20:35 +0200307 * "aes.h" to include the new function definitions.
308 *
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200309 * Uncomment a macro to enable alternate implementation of the corresponding
310 * module.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100311 *
TRodziewicz10e8cf52021-05-31 17:58:57 +0200312 * \warning MD5, DES and SHA-1 are considered weak and their
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100313 * use constitutes a security risk. If possible, we recommend
314 * avoiding dependencies on them, and considering stronger message
315 * digests and ciphers instead.
316 *
Paul Bakker90995b52013-06-24 19:20:35 +0200317 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200318//#define MBEDTLS_AES_ALT
Markku-Juhani O. Saarinen0fb47fe2017-12-01 15:41:38 +0000319//#define MBEDTLS_ARIA_ALT
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200320//#define MBEDTLS_CAMELLIA_ALT
Steven Cooreman222e2ff2017-04-04 11:37:15 +0200321//#define MBEDTLS_CCM_ALT
Daniel King34b822c2016-05-15 17:28:08 -0300322//#define MBEDTLS_CHACHA20_ALT
Manuel Pégourié-Gonnarde533b222018-06-04 12:23:19 +0200323//#define MBEDTLS_CHACHAPOLY_ALT
Steven Cooreman63342772017-04-04 11:47:16 +0200324//#define MBEDTLS_CMAC_ALT
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200325//#define MBEDTLS_DES_ALT
nirekh01d569ecf2018-01-09 16:43:21 +0000326//#define MBEDTLS_DHM_ALT
Hanno Becker616d1ca2018-01-24 10:25:05 +0000327//#define MBEDTLS_ECJPAKE_ALT
Jaeden Amero15263302017-09-21 12:53:48 +0100328//#define MBEDTLS_GCM_ALT
Ron Eldor466a57f2018-05-03 16:54:28 +0300329//#define MBEDTLS_NIST_KW_ALT
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200330//#define MBEDTLS_MD5_ALT
Daniel Kingadc32c02016-05-16 18:25:45 -0300331//#define MBEDTLS_POLY1305_ALT
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200332//#define MBEDTLS_RIPEMD160_ALT
Hanno Becker88683b22018-01-04 18:26:54 +0000333//#define MBEDTLS_RSA_ALT
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200334//#define MBEDTLS_SHA1_ALT
335//#define MBEDTLS_SHA256_ALT
336//#define MBEDTLS_SHA512_ALT
Markku-Juhani O. Saarinen0fb47fe2017-12-01 15:41:38 +0000337
Janos Follathb0697532016-08-18 12:38:46 +0100338/*
Shaun Case8b0ecbc2021-12-20 21:14:10 -0800339 * When replacing the elliptic curve module, please consider, that it is
Janos Follathb0697532016-08-18 12:38:46 +0100340 * implemented with two .c files:
341 * - ecp.c
342 * - ecp_curves.c
Janos Follathee782bc2016-11-07 15:41:26 +0000343 * You can replace them very much like all the other MBEDTLS__MODULE_NAME__ALT
344 * macros as described above. The only difference is that you have to make sure
345 * that you provide functionality for both .c files.
Janos Follathb0697532016-08-18 12:38:46 +0100346 */
347//#define MBEDTLS_ECP_ALT
Paul Bakker90995b52013-06-24 19:20:35 +0200348
349/**
TRodziewicz75628d52021-06-18 12:56:27 +0200350 * \def MBEDTLS_SHA256_PROCESS_ALT
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200351 *
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100352 * MBEDTLS__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use you
353 * alternate core implementation of symmetric crypto or hash function. Keep in
354 * mind that function prototypes should remain the same.
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200355 *
356 * This replaces only one function. The header file from mbed TLS is still
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200357 * used, in contrast to the MBEDTLS__MODULE_NAME__ALT flags.
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200358 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200359 * Example: In case you uncomment MBEDTLS_SHA256_PROCESS_ALT, mbed TLS will
360 * no longer provide the mbedtls_sha1_process() function, but it will still provide
361 * the other function (using your mbedtls_sha1_process() function) and the definition
362 * of mbedtls_sha1_context, so your implementation of mbedtls_sha1_process must be compatible
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200363 * with this definition.
364 *
Tobias Nießen1e8ca122021-05-10 19:53:15 +0200365 * \note If you use the AES_xxx_ALT macros, then it is recommended to also set
Hanno Beckera5723f42017-06-26 12:46:19 +0100366 * MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES
367 * tables.
Manuel Pégourié-Gonnard31993f22015-05-12 15:41:08 +0200368 *
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200369 * Uncomment a macro to enable alternate implementation of the corresponding
370 * function.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100371 *
TRodziewicz10e8cf52021-05-31 17:58:57 +0200372 * \warning MD5, DES and SHA-1 are considered weak and their use
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100373 * constitutes a security risk. If possible, we recommend avoiding
374 * dependencies on them, and considering stronger message digests
375 * and ciphers instead.
376 *
Janos Follath1231d212019-01-07 15:01:32 +0000377 * \warning If both MBEDTLS_ECDSA_SIGN_ALT and MBEDTLS_ECDSA_DETERMINISTIC are
378 * enabled, then the deterministic ECDH signature functions pass the
379 * the static HMAC-DRBG as RNG to mbedtls_ecdsa_sign(). Therefore
380 * alternative implementations should use the RNG only for generating
381 * the ephemeral key and nothing else. If this is not possible, then
382 * MBEDTLS_ECDSA_DETERMINISTIC should be disabled and an alternative
TRodziewiczc1c479f2021-05-06 00:53:22 +0200383 * implementation should be provided for mbedtls_ecdsa_sign_det_ext().
Janos Follath1231d212019-01-07 15:01:32 +0000384 *
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200385 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200386//#define MBEDTLS_MD5_PROCESS_ALT
387//#define MBEDTLS_RIPEMD160_PROCESS_ALT
388//#define MBEDTLS_SHA1_PROCESS_ALT
389//#define MBEDTLS_SHA256_PROCESS_ALT
390//#define MBEDTLS_SHA512_PROCESS_ALT
Manuel Pégourié-Gonnard70a50102015-05-12 15:02:45 +0200391//#define MBEDTLS_DES_SETKEY_ALT
392//#define MBEDTLS_DES_CRYPT_ECB_ALT
393//#define MBEDTLS_DES3_CRYPT_ECB_ALT
Manuel Pégourié-Gonnard31993f22015-05-12 15:41:08 +0200394//#define MBEDTLS_AES_SETKEY_ENC_ALT
395//#define MBEDTLS_AES_SETKEY_DEC_ALT
396//#define MBEDTLS_AES_ENCRYPT_ALT
397//#define MBEDTLS_AES_DECRYPT_ALT
Ron Eldora84c1cb2017-10-10 19:04:27 +0300398//#define MBEDTLS_ECDH_GEN_PUBLIC_ALT
Ron Eldor3226d362017-10-12 14:17:48 +0300399//#define MBEDTLS_ECDH_COMPUTE_SHARED_ALT
Ron Eldor314adb62017-10-10 18:28:25 +0300400//#define MBEDTLS_ECDSA_VERIFY_ALT
401//#define MBEDTLS_ECDSA_SIGN_ALT
402//#define MBEDTLS_ECDSA_GENKEY_ALT
Manuel Pégourié-Gonnard427b6722015-03-31 18:32:50 +0200403
404/**
Janos Follathc44ab972016-11-18 16:38:23 +0000405 * \def MBEDTLS_ECP_INTERNAL_ALT
406 *
407 * Expose a part of the internal interface of the Elliptic Curve Point module.
Janos Follathb0697532016-08-18 12:38:46 +0100408 *
409 * MBEDTLS_ECP__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use your
Janos Follath372697b2016-10-28 16:53:11 +0100410 * alternative core implementation of elliptic curve arithmetic. Keep in mind
411 * that function prototypes should remain the same.
Janos Follathb0697532016-08-18 12:38:46 +0100412 *
413 * This partially replaces one function. The header file from mbed TLS is still
414 * used, in contrast to the MBEDTLS_ECP_ALT flag. The original implementation
415 * is still present and it is used for group structures not supported by the
416 * alternative.
417 *
Steven Cooreman97b49842021-01-08 16:32:20 +0100418 * The original implementation can in addition be removed by setting the
Steven Cooreman6226a122021-01-21 13:58:31 +0100419 * MBEDTLS_ECP_NO_FALLBACK option, in which case any function for which the
Steven Cooreman97b49842021-01-08 16:32:20 +0100420 * corresponding MBEDTLS_ECP__FUNCTION_NAME__ALT macro is defined will not be
421 * able to fallback to curves not supported by the alternative implementation.
422 *
Janos Follathc44ab972016-11-18 16:38:23 +0000423 * Any of these options become available by defining MBEDTLS_ECP_INTERNAL_ALT
424 * and implementing the following functions:
425 * unsigned char mbedtls_internal_ecp_grp_capable(
426 * const mbedtls_ecp_group *grp )
427 * int mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp )
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500428 * void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp )
Janos Follathc44ab972016-11-18 16:38:23 +0000429 * The mbedtls_internal_ecp_grp_capable function should return 1 if the
430 * replacement functions implement arithmetic for the given group and 0
431 * otherwise.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500432 * The functions mbedtls_internal_ecp_init and mbedtls_internal_ecp_free are
Janos Follathc44ab972016-11-18 16:38:23 +0000433 * called before and after each point operation and provide an opportunity to
434 * implement optimized set up and tear down instructions.
Janos Follathb0697532016-08-18 12:38:46 +0100435 *
Steven Cooreman6226a122021-01-21 13:58:31 +0100436 * Example: In case you set MBEDTLS_ECP_INTERNAL_ALT and
437 * MBEDTLS_ECP_DOUBLE_JAC_ALT, mbed TLS will still provide the ecp_double_jac()
438 * function, but will use your mbedtls_internal_ecp_double_jac() if the group
439 * for the operation is supported by your implementation (i.e. your
440 * mbedtls_internal_ecp_grp_capable() function returns 1 for this group). If the
441 * group is not supported by your implementation, then the original mbed TLS
442 * implementation of ecp_double_jac() is used instead, unless this fallback
443 * behaviour is disabled by setting MBEDTLS_ECP_NO_FALLBACK (in which case
444 * ecp_double_jac() will return MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE).
445 *
446 * The function prototypes and the definition of mbedtls_ecp_group and
447 * mbedtls_ecp_point will not change based on MBEDTLS_ECP_INTERNAL_ALT, so your
448 * implementation of mbedtls_internal_ecp__function_name__ must be compatible
449 * with their definitions.
Janos Follathb0697532016-08-18 12:38:46 +0100450 *
451 * Uncomment a macro to enable alternate implementation of the corresponding
452 * function.
453 */
454/* Required for all the functions in this section */
Janos Follathc44ab972016-11-18 16:38:23 +0000455//#define MBEDTLS_ECP_INTERNAL_ALT
Steven Cooreman97b49842021-01-08 16:32:20 +0100456/* Turn off software fallback for curves not supported in hardware */
457//#define MBEDTLS_ECP_NO_FALLBACK
Janos Follathb0697532016-08-18 12:38:46 +0100458/* Support for Weierstrass curves with Jacobi representation */
459//#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT
460//#define MBEDTLS_ECP_ADD_MIXED_ALT
461//#define MBEDTLS_ECP_DOUBLE_JAC_ALT
462//#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
463//#define MBEDTLS_ECP_NORMALIZE_JAC_ALT
464/* Support for curves with Montgomery arithmetic */
465//#define MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT
466//#define MBEDTLS_ECP_RANDOMIZE_MXZ_ALT
467//#define MBEDTLS_ECP_NORMALIZE_MXZ_ALT
468
469/**
Manuel Pégourié-Gonnard8ba88f02015-06-22 12:14:20 +0200470 * \def MBEDTLS_ENTROPY_HARDWARE_ALT
Manuel Pégourié-Gonnard3f77dfb2015-06-19 10:06:21 +0200471 *
472 * Uncomment this macro to let mbed TLS use your own implementation of a
473 * hardware entropy collector.
474 *
475 * Your function must be called \c mbedtls_hardware_poll(), have the same
Chris Jones3848e312021-03-11 16:17:59 +0000476 * prototype as declared in library/entropy_poll.h, and accept NULL as first
477 * argument.
Manuel Pégourié-Gonnard3f77dfb2015-06-19 10:06:21 +0200478 *
479 * Uncomment to use your own hardware entropy collector.
480 */
481//#define MBEDTLS_ENTROPY_HARDWARE_ALT
482
483/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200484 * \def MBEDTLS_AES_ROM_TABLES
Paul Bakker15566e42011-04-24 21:19:15 +0000485 *
Hanno Becker177d3cf2017-06-07 15:52:48 +0100486 * Use precomputed AES tables stored in ROM.
Paul Bakker15566e42011-04-24 21:19:15 +0000487 *
Hanno Becker177d3cf2017-06-07 15:52:48 +0100488 * Uncomment this macro to use precomputed AES tables stored in ROM.
489 * Comment this macro to generate AES tables in RAM at runtime.
490 *
Hanno Becker4c1dc3c2018-03-27 16:52:03 +0100491 * Tradeoff: Using precomputed ROM tables reduces RAM usage by ~8kb
492 * (or ~2kb if \c MBEDTLS_AES_FEWER_TABLES is used) and reduces the
Hanno Becker6a92ce62018-03-28 11:42:05 +0100493 * initialization time before the first AES operation can be performed.
494 * It comes at the cost of additional ~8kb ROM use (resp. ~2kb if \c
495 * MBEDTLS_AES_FEWER_TABLES below is used), and potentially degraded
496 * performance if ROM access is slower than RAM access.
Hanno Becker177d3cf2017-06-07 15:52:48 +0100497 *
498 * This option is independent of \c MBEDTLS_AES_FEWER_TABLES.
Paul Bakker15566e42011-04-24 21:19:15 +0000499 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200500//#define MBEDTLS_AES_ROM_TABLES
Paul Bakker15566e42011-04-24 21:19:15 +0000501
502/**
Hanno Becker177d3cf2017-06-07 15:52:48 +0100503 * \def MBEDTLS_AES_FEWER_TABLES
Jussi Kivilinna2fd1bb82015-11-12 16:38:31 +0200504 *
Hanno Becker177d3cf2017-06-07 15:52:48 +0100505 * Use less ROM/RAM for AES tables.
Jussi Kivilinna2fd1bb82015-11-12 16:38:31 +0200506 *
Hanno Becker177d3cf2017-06-07 15:52:48 +0100507 * Uncommenting this macro omits 75% of the AES tables from
508 * ROM / RAM (depending on the value of \c MBEDTLS_AES_ROM_TABLES)
509 * by computing their values on the fly during operations
510 * (the tables are entry-wise rotations of one another).
511 *
512 * Tradeoff: Uncommenting this reduces the RAM / ROM footprint
Hanno Becker08a5c182017-06-19 16:33:58 +0100513 * by ~6kb but at the cost of more arithmetic operations during
Hanno Becker177d3cf2017-06-07 15:52:48 +0100514 * runtime. Specifically, one has to compare 4 accesses within
515 * different tables to 4 accesses with additional arithmetic
516 * operations within the same table. The performance gain/loss
517 * depends on the system and memory details.
518 *
519 * This option is independent of \c MBEDTLS_AES_ROM_TABLES.
Jussi Kivilinna2fd1bb82015-11-12 16:38:31 +0200520 */
Hanno Becker177d3cf2017-06-07 15:52:48 +0100521//#define MBEDTLS_AES_FEWER_TABLES
Jussi Kivilinna2fd1bb82015-11-12 16:38:31 +0200522
523/**
Arto Kinnunen732ca322023-04-14 14:26:10 +0800524 * \def MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
525 *
526 * Use only 128-bit keys in AES operations to save ROM.
527 *
Yanray Wangd2ae4322023-05-10 10:45:38 +0800528 * Uncomment this macro to remove support for AES operations that use 192-
Arto Kinnunen732ca322023-04-14 14:26:10 +0800529 * or 256-bit keys.
530 *
Yanray Wangd2ae4322023-05-10 10:45:38 +0800531 * Uncommenting this macro reduces the size of AES code by ~300 bytes
532 * on v8-M/Thumb2.
Arto Kinnunen732ca322023-04-14 14:26:10 +0800533 *
Arto Kinnunen732ca322023-04-14 14:26:10 +0800534 * Module: library/aes.c
535 *
536 * Requires: MBEDTLS_AES_C
Arto Kinnunen732ca322023-04-14 14:26:10 +0800537 */
538//#define MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
539
540/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200541 * \def MBEDTLS_CAMELLIA_SMALL_MEMORY
Manuel Pégourié-Gonnard62edcc82015-04-03 16:28:19 +0200542 *
543 * Use less ROM for the Camellia implementation (saves about 768 bytes).
544 *
545 * Uncomment this macro to use less memory for Camellia.
546 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200547//#define MBEDTLS_CAMELLIA_SMALL_MEMORY
Manuel Pégourié-Gonnard62edcc82015-04-03 16:28:19 +0200548
549/**
Gilles Peskine9a7d4c22021-09-23 18:07:36 +0200550 * \def MBEDTLS_CHECK_RETURN_WARNING
551 *
552 * If this macro is defined, emit a compile-time warning if application code
553 * calls a function without checking its return value, but the return value
554 * should generally be checked in portable applications.
555 *
556 * This is only supported on platforms where #MBEDTLS_CHECK_RETURN is
557 * implemented. Otherwise this option has no effect.
558 *
559 * Uncomment to get warnings on using fallible functions without checking
560 * their return value.
561 *
562 * \note This feature is a work in progress.
563 * Warnings will be added to more functions in the future.
564 *
565 * \note A few functions are considered critical, and ignoring the return
566 * value of these functions will trigger a warning even if this
567 * macro is not defined. To completely disable return value check
568 * warnings, define #MBEDTLS_CHECK_RETURN with an empty expansion.
569 */
570//#define MBEDTLS_CHECK_RETURN_WARNING
571
572/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200573 * \def MBEDTLS_CIPHER_MODE_CBC
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200574 *
575 * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
576 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200577#define MBEDTLS_CIPHER_MODE_CBC
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200578
579/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200580 * \def MBEDTLS_CIPHER_MODE_CFB
Paul Bakkerb6ecaf52011-04-19 14:29:23 +0000581 *
582 * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
583 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200584#define MBEDTLS_CIPHER_MODE_CFB
Paul Bakkerb6ecaf52011-04-19 14:29:23 +0000585
586/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200587 * \def MBEDTLS_CIPHER_MODE_CTR
Paul Bakkerb6ecaf52011-04-19 14:29:23 +0000588 *
589 * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
590 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200591#define MBEDTLS_CIPHER_MODE_CTR
Paul Bakkerb6ecaf52011-04-19 14:29:23 +0000592
593/**
Jaeden Ameroff2f4932018-06-14 11:38:50 +0100594 * \def MBEDTLS_CIPHER_MODE_OFB
595 *
596 * Enable Output Feedback mode (OFB) for symmetric ciphers.
597 */
598#define MBEDTLS_CIPHER_MODE_OFB
599
600/**
601 * \def MBEDTLS_CIPHER_MODE_XTS
602 *
603 * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES.
604 */
605#define MBEDTLS_CIPHER_MODE_XTS
606
607/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200608 * \def MBEDTLS_CIPHER_NULL_CIPHER
Paul Bakkerfab5c822012-02-06 16:45:10 +0000609 *
610 * Enable NULL cipher.
611 * Warning: Only do so when you know what you are doing. This allows for
612 * encryption or channels without any security!
613 *
Ronald Croncee42702021-04-26 11:34:44 +0200614 * To enable the following ciphersuites:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200615 * MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA
616 * MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA
617 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA
618 * MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA
619 * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384
620 * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256
621 * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA
622 * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384
623 * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256
624 * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA
625 * MBEDTLS_TLS_RSA_WITH_NULL_SHA256
626 * MBEDTLS_TLS_RSA_WITH_NULL_SHA
627 * MBEDTLS_TLS_RSA_WITH_NULL_MD5
628 * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384
629 * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256
630 * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA
631 * MBEDTLS_TLS_PSK_WITH_NULL_SHA384
632 * MBEDTLS_TLS_PSK_WITH_NULL_SHA256
633 * MBEDTLS_TLS_PSK_WITH_NULL_SHA
Paul Bakkerfab5c822012-02-06 16:45:10 +0000634 *
635 * Uncomment this macro to enable the NULL cipher and ciphersuites
Paul Bakkerfab5c822012-02-06 16:45:10 +0000636 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200637//#define MBEDTLS_CIPHER_NULL_CIPHER
Paul Bakkerfab5c822012-02-06 16:45:10 +0000638
639/**
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100640 * \def MBEDTLS_CIPHER_PADDING_PKCS7
Paul Bakker48e93c82013-08-14 12:21:18 +0200641 *
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100642 * MBEDTLS_CIPHER_PADDING_XXX: Uncomment or comment macros to add support for
643 * specific padding modes in the cipher layer with cipher modes that support
644 * padding (e.g. CBC)
Paul Bakker48e93c82013-08-14 12:21:18 +0200645 *
646 * If you disable all padding modes, only full blocks can be used with CBC.
647 *
648 * Enable padding modes in the cipher layer.
649 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200650#define MBEDTLS_CIPHER_PADDING_PKCS7
651#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS
652#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN
653#define MBEDTLS_CIPHER_PADDING_ZEROS
Paul Bakker48e93c82013-08-14 12:21:18 +0200654
Gilles Peskine1540e5b2019-10-03 14:21:14 +0200655/** \def MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
656 *
657 * Uncomment this macro to use a 128-bit key in the CTR_DRBG module.
Yanray Wang55ef22c2023-06-15 09:57:06 +0800658 * Without this, CTR_DRBG uses a 256-bit key
659 * unless \c MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH is set.
Gilles Peskine1540e5b2019-10-03 14:21:14 +0200660 */
661//#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
662
Paul Bakker48e93c82013-08-14 12:21:18 +0200663/**
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100664 * \def MBEDTLS_ECP_DP_SECP192R1_ENABLED
Paul Bakker5dc6b5f2013-06-29 23:26:34 +0200665 *
Manuel Pégourié-Gonnard76da60c2016-01-04 13:51:01 +0100666 * MBEDTLS_ECP_XXXX_ENABLED: Enables specific curves within the Elliptic Curve
667 * module. By default all supported curves are enabled.
Paul Bakker5dc6b5f2013-06-29 23:26:34 +0200668 *
669 * Comment macros to disable the curve and functions for it
670 */
Gilles Peskine799e5762018-09-14 17:34:00 +0200671/* Short Weierstrass curves (supporting ECP, ECDH, ECDSA) */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200672#define MBEDTLS_ECP_DP_SECP192R1_ENABLED
673#define MBEDTLS_ECP_DP_SECP224R1_ENABLED
674#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
675#define MBEDTLS_ECP_DP_SECP384R1_ENABLED
676#define MBEDTLS_ECP_DP_SECP521R1_ENABLED
677#define MBEDTLS_ECP_DP_SECP192K1_ENABLED
678#define MBEDTLS_ECP_DP_SECP224K1_ENABLED
679#define MBEDTLS_ECP_DP_SECP256K1_ENABLED
680#define MBEDTLS_ECP_DP_BP256R1_ENABLED
681#define MBEDTLS_ECP_DP_BP384R1_ENABLED
682#define MBEDTLS_ECP_DP_BP512R1_ENABLED
Gilles Peskine799e5762018-09-14 17:34:00 +0200683/* Montgomery curves (supporting ECP) */
Manuel Pégourié-Gonnard07894332015-06-23 00:18:41 +0200684#define MBEDTLS_ECP_DP_CURVE25519_ENABLED
Nicholas Wilson08f3ef12015-11-10 13:10:01 +0000685#define MBEDTLS_ECP_DP_CURVE448_ENABLED
Paul Bakker5dc6b5f2013-06-29 23:26:34 +0200686
687/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200688 * \def MBEDTLS_ECP_NIST_OPTIM
Manuel Pégourié-Gonnardc04c5302013-10-23 16:11:52 +0200689 *
690 * Enable specific 'modulo p' routines for each NIST prime.
691 * Depending on the prime and architecture, makes operations 4 to 8 times
692 * faster on the corresponding curve.
693 *
694 * Comment this macro to disable NIST curves optimisation.
695 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200696#define MBEDTLS_ECP_NIST_OPTIM
Manuel Pégourié-Gonnardc04c5302013-10-23 16:11:52 +0200697
698/**
Manuel Pégourié-Gonnard4b9c51e2017-04-20 15:50:26 +0200699 * \def MBEDTLS_ECP_RESTARTABLE
Manuel Pégourié-Gonnardc3a3bc72017-03-22 11:17:51 +0100700 *
701 * Enable "non-blocking" ECC operations that can return early and be resumed.
702 *
Manuel Pégourié-Gonnardf0bbd7e2018-10-15 13:22:41 +0200703 * This allows various functions to pause by returning
704 * #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL module,
705 * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) and then be called later again in
706 * order to further progress and eventually complete their operation. This is
707 * controlled through mbedtls_ecp_set_max_ops() which limits the maximum
708 * number of ECC operations a function may perform before pausing; see
709 * mbedtls_ecp_set_max_ops() for more information.
Manuel Pégourié-Gonnardc3a3bc72017-03-22 11:17:51 +0100710 *
Manuel Pégourié-Gonnard8b7b96b2017-08-23 10:02:51 +0200711 * This is useful in non-threaded environments if you want to avoid blocking
Manuel Pégourié-Gonnardf0bbd7e2018-10-15 13:22:41 +0200712 * for too long on ECC (and, hence, X.509 or SSL/TLS) operations.
Manuel Pégourié-Gonnardc3a3bc72017-03-22 11:17:51 +0100713 *
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +0100714 * This option:
715 * - Adds xxx_restartable() variants of existing operations in the
716 * following modules, with corresponding restart context types:
Manuel Pégourié-Gonnardb2812cc2022-12-09 09:53:55 +0100717 * - ECP (for Short Weierstrass curves only): scalar multiplication (mul),
718 * linear combination (muladd);
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +0100719 * - ECDSA: signature generation & verification;
720 * - PK: signature generation & verification;
721 * - X509: certificate chain verification.
722 * - Adds mbedtls_ecdh_enable_restart() in the ECDH module.
723 * - Changes the behaviour of TLS 1.2 clients (not servers) when using the
724 * ECDHE-ECDSA key exchange (not other key exchanges) to make all ECC
725 * computations restartable:
Tom Cosgrove5c8505f2023-03-07 11:39:52 +0000726 * - ECDH operations from the key exchange, only for Short Weierstrass
Manuel Pégourié-Gonnardb2812cc2022-12-09 09:53:55 +0100727 * curves, only when MBEDTLS_USE_PSA_CRYPTO is not enabled.
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +0100728 * - verification of the server's key exchange signature;
729 * - verification of the server's certificate chain;
Manuel Pégourié-Gonnardb2812cc2022-12-09 09:53:55 +0100730 * - generation of the client's signature if client authentication is used,
731 * with an ECC key/certificate.
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +0100732 *
733 * \note In the cases above, the usual SSL/TLS functions, such as
734 * mbedtls_ssl_handshake(), can now return
735 * MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS.
Ron Eldor5ed8c1e2018-11-05 14:04:26 +0200736 *
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +0100737 * \note When this option and MBEDTLS_USE_PSA_CRYPTO are both enabled,
738 * restartable operations in PK, X.509 and TLS (see above) are not
739 * using PSA. On the other hand, ECDH computations in TLS are using
Manuel Pégourié-Gonnardb2812cc2022-12-09 09:53:55 +0100740 * PSA, and are not restartable. These are temporary limitations that
741 * should be lifted in the future.
Ron Eldor5ed8c1e2018-11-05 14:04:26 +0200742 *
Ron Eldor19779c42018-11-05 16:58:13 +0200743 * \note This option only works with the default software implementation of
744 * elliptic curve functionality. It is incompatible with
Thomas Daubney537e6432021-06-03 15:46:33 +0100745 * MBEDTLS_ECP_ALT, MBEDTLS_ECDH_XXX_ALT, MBEDTLS_ECDSA_XXX_ALT.
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +0100746 *
Manuel Pégourié-Gonnardad45c4d2022-12-06 13:20:06 +0100747 * Requires: MBEDTLS_ECP_C
748 *
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +0100749 * Uncomment this macro to enable restartable ECC computations.
Manuel Pégourié-Gonnardc3a3bc72017-03-22 11:17:51 +0100750 */
Manuel Pégourié-Gonnardc9e16a92017-08-15 14:30:59 +0200751//#define MBEDTLS_ECP_RESTARTABLE
Manuel Pégourié-Gonnardc3a3bc72017-03-22 11:17:51 +0100752
753/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200754 * \def MBEDTLS_ECDSA_DETERMINISTIC
Manuel Pégourié-Gonnard461d4162014-01-06 10:16:28 +0100755 *
756 * Enable deterministic ECDSA (RFC 6979).
757 * Standard ECDSA is "fragile" in the sense that lack of entropy when signing
758 * may result in a compromise of the long-term signing key. This is avoided by
759 * the deterministic variant.
760 *
John Durkop36a82e52020-10-26 09:39:05 -0700761 * Requires: MBEDTLS_HMAC_DRBG_C, MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard5b1a5732014-01-07 16:46:17 +0100762 *
Manuel Pégourié-Gonnard461d4162014-01-06 10:16:28 +0100763 * Comment this macro to disable deterministic ECDSA.
764 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200765#define MBEDTLS_ECDSA_DETERMINISTIC
Manuel Pégourié-Gonnard461d4162014-01-06 10:16:28 +0100766
767/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200768 * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200769 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200770 * Enable the PSK based ciphersuite modes in SSL / TLS.
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200771 *
Paul Bakkere07f41d2013-04-19 09:08:57 +0200772 * This enables the following ciphersuites (if other requisites are
773 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200774 * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
775 * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
776 * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
777 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
778 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
779 * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
780 * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
781 * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
782 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
783 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200784 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200785#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200786
787/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200788 * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200789 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200790 * Enable the DHE-PSK based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200791 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200792 * Requires: MBEDTLS_DHM_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200793 *
794 * This enables the following ciphersuites (if other requisites are
795 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200796 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
797 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
798 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
799 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
800 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
801 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
802 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
803 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
804 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
805 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
Hanno Beckera2f6b722017-09-28 10:33:29 +0100806 *
Hanno Beckerf9734b32017-10-03 12:09:22 +0100807 * \warning Using DHE constitutes a security risk as it
808 * is not possible to validate custom DH parameters.
809 * If possible, it is recommended users should consider
810 * preferring other methods of key exchange.
811 * See dhm.h for more details.
Hanno Beckera2f6b722017-09-28 10:33:29 +0100812 *
Paul Bakkere07f41d2013-04-19 09:08:57 +0200813 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200814#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200815
816/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200817 * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200818 *
819 * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
820 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200821 * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200822 *
823 * This enables the following ciphersuites (if other requisites are
824 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200825 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
826 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
827 * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
828 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
829 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
830 * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200831 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200832#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200833
834/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200835 * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200836 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200837 * Enable the RSA-PSK based ciphersuite modes in SSL / TLS.
Manuel Pégourié-Gonnard0fae60b2013-10-14 17:39:48 +0200838 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200839 * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
840 * MBEDTLS_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200841 *
842 * This enables the following ciphersuites (if other requisites are
843 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200844 * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
845 * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
846 * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA
847 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
848 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
849 * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
850 * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
851 * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA
852 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
853 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakkere07f41d2013-04-19 09:08:57 +0200854 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200855#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200856
857/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200858 * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200859 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200860 * Enable the RSA-only based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200861 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200862 * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
863 * MBEDTLS_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200864 *
865 * This enables the following ciphersuites (if other requisites are
866 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200867 * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384
868 * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
869 * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA
870 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
871 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
872 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
873 * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256
874 * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256
875 * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA
876 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
877 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
878 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
Paul Bakkere07f41d2013-04-19 09:08:57 +0200879 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200880#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200881
882/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200883 * \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200884 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200885 * Enable the DHE-RSA based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200886 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200887 * Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
888 * MBEDTLS_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200889 *
890 * This enables the following ciphersuites (if other requisites are
891 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200892 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
893 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
894 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
895 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
896 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
897 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
898 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
899 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
900 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
901 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
902 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
903 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
Hanno Beckera2f6b722017-09-28 10:33:29 +0100904 *
Hanno Beckerf9734b32017-10-03 12:09:22 +0100905 * \warning Using DHE constitutes a security risk as it
906 * is not possible to validate custom DH parameters.
907 * If possible, it is recommended users should consider
908 * preferring other methods of key exchange.
909 * See dhm.h for more details.
Hanno Beckera2f6b722017-09-28 10:33:29 +0100910 *
Paul Bakkere07f41d2013-04-19 09:08:57 +0200911 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200912#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200913
914/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200915 * \def MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200916 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200917 * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200918 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200919 * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
920 * MBEDTLS_RSA_C
921 * MBEDTLS_PKCS1_V15
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200922 * MBEDTLS_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200923 *
924 * This enables the following ciphersuites (if other requisites are
925 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200926 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
927 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
928 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
929 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
930 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
931 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
932 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
933 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
934 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
935 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakkere07f41d2013-04-19 09:08:57 +0200936 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200937#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200938
939/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200940 * \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200941 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200942 * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200943 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200944 * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
945 * MBEDTLS_ECDSA_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDSA)
946 * MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200947 *
948 * This enables the following ciphersuites (if other requisites are
949 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200950 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
951 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
952 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
953 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
954 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
955 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
956 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
957 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
958 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
959 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200960 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200961#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200962
963/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200964 * \def MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100965 *
966 * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
967 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200968 * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
969 * MBEDTLS_ECDSA_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDSA)
970 * MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100971 *
972 * This enables the following ciphersuites (if other requisites are
973 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200974 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
975 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
976 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
977 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
978 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
979 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
980 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
981 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
982 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
983 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100984 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200985#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100986
987/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200988 * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100989 *
990 * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS.
991 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200992 * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
993 * MBEDTLS_RSA_C
994 * MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100995 *
996 * This enables the following ciphersuites (if other requisites are
997 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200998 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
999 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
1000 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
1001 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
1002 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
1003 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
1004 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
1005 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
1006 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
1007 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +01001008 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001009#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +01001010
1011/**
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +02001012 * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
1013 *
1014 * Enable the ECJPAKE based ciphersuite modes in SSL / TLS.
1015 *
Manuel Pégourié-Gonnard75df9022015-09-16 23:21:01 +02001016 * \warning This is currently experimental. EC J-PAKE support is based on the
1017 * Thread v1.0.0 specification; incompatible changes to the specification
1018 * might still happen. For this reason, this is disabled by default.
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +02001019 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +02001020 * Requires: MBEDTLS_ECJPAKE_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_JPAKE)
Manuel Pégourié-Gonnard41bc8b62023-03-14 23:59:24 +01001021 * SHA-256 (via MBEDTLS_SHA256_C or a PSA driver)
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +02001022 * MBEDTLS_ECP_DP_SECP256R1_ENABLED
1023 *
Manuel Pégourié-Gonnard41bc8b62023-03-14 23:59:24 +01001024 * \warning If SHA-256 is provided only by a PSA driver, you must call
1025 * psa_crypto_init() before the first hanshake (even if
1026 * MBEDTLS_USE_PSA_CRYPTO is disabled).
1027 *
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +02001028 * This enables the following ciphersuites (if other requisites are
1029 * enabled as well):
1030 * MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
1031 */
Manuel Pégourié-Gonnardcf828932015-10-20 14:57:00 +02001032//#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +02001033
1034/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001035 * \def MBEDTLS_PK_PARSE_EC_EXTENDED
Manuel Pégourié-Gonnard6fac3512014-03-19 16:39:52 +01001036 *
1037 * Enhance support for reading EC keys using variants of SEC1 not allowed by
1038 * RFC 5915 and RFC 5480.
1039 *
1040 * Currently this means parsing the SpecifiedECDomain choice of EC
1041 * parameters (only known groups are supported, not arbitrary domains, to
1042 * avoid validation issues).
1043 *
1044 * Disable if you only need to support RFC 5915 + 5480 key formats.
1045 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001046#define MBEDTLS_PK_PARSE_EC_EXTENDED
Manuel Pégourié-Gonnard6fac3512014-03-19 16:39:52 +01001047
1048/**
Valerio Settiaddeee42023-06-14 10:46:55 +02001049 * \def MBEDTLS_PK_PARSE_EC_COMPRESSED
1050 *
1051 * Enable the support for parsing public keys of type Short Weierstrass
1052 * (MBEDTLS_ECP_DP_SECP_XXX and MBEDTLS_ECP_DP_BP_XXX) which are using the
Valerio Setti3cd4ef72023-06-19 11:35:10 +02001053 * compressed point format. This parsing is done through ECP module's functions.
1054 *
1055 * \note As explained in the description of MBEDTLS_ECP_PF_COMPRESSED (in ecp.h)
1056 * the only unsupported curves are MBEDTLS_ECP_DP_SECP224R1 and
1057 * MBEDTLS_ECP_DP_SECP224K1.
Valerio Settiaddeee42023-06-14 10:46:55 +02001058 */
1059#define MBEDTLS_PK_PARSE_EC_COMPRESSED
1060
1061/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001062 * \def MBEDTLS_ERROR_STRERROR_DUMMY
Paul Bakker8fe40dc2013-02-02 12:43:08 +01001063 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001064 * Enable a dummy error function to make use of mbedtls_strerror() in
1065 * third party libraries easier when MBEDTLS_ERROR_C is disabled
1066 * (no effect when MBEDTLS_ERROR_C is enabled).
Manuel Pégourié-Gonnarddc16aa72014-06-25 12:55:12 +02001067 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001068 * You can safely disable this if MBEDTLS_ERROR_C is enabled, or if you're
1069 * not using mbedtls_strerror() or error_strerror() in your application.
Paul Bakker8fe40dc2013-02-02 12:43:08 +01001070 *
1071 * Disable if you run into name conflicts and want to really remove the
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001072 * mbedtls_strerror()
Paul Bakker8fe40dc2013-02-02 12:43:08 +01001073 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001074#define MBEDTLS_ERROR_STRERROR_DUMMY
Paul Bakker8fe40dc2013-02-02 12:43:08 +01001075
1076/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001077 * \def MBEDTLS_GENPRIME
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001078 *
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02001079 * Enable the prime-number generation code.
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001080 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001081 * Requires: MBEDTLS_BIGNUM_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001082 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001083#define MBEDTLS_GENPRIME
Paul Bakker5121ce52009-01-03 21:22:43 +00001084
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001085/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001086 * \def MBEDTLS_FS_IO
Paul Bakker335db3f2011-04-25 15:28:35 +00001087 *
1088 * Enable functions that use the filesystem.
1089 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001090#define MBEDTLS_FS_IO
Paul Bakker335db3f2011-04-25 15:28:35 +00001091
1092/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001093 * \def MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
Paul Bakker43655f42011-12-15 20:11:16 +00001094 *
TRodziewicz15a7b732021-06-16 11:22:53 +02001095 * Do not add default entropy sources in mbedtls_entropy_init().
Paul Bakker43655f42011-12-15 20:11:16 +00001096 *
Shuo Chen95a0d112014-04-04 21:04:40 -07001097 * This is useful to have more control over the added entropy sources in an
Paul Bakker43655f42011-12-15 20:11:16 +00001098 * application.
1099 *
1100 * Uncomment this macro to prevent loading of default entropy functions.
Paul Bakker43655f42011-12-15 20:11:16 +00001101 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001102//#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
Paul Bakker43655f42011-12-15 20:11:16 +00001103
1104/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001105 * \def MBEDTLS_NO_PLATFORM_ENTROPY
Paul Bakker6083fd22011-12-03 21:45:14 +00001106 *
1107 * Do not use built-in platform entropy functions.
1108 * This is useful if your platform does not support
1109 * standards like the /dev/urandom or Windows CryptoAPI.
1110 *
1111 * Uncomment this macro to disable the built-in platform entropy functions.
Paul Bakker6083fd22011-12-03 21:45:14 +00001112 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001113//#define MBEDTLS_NO_PLATFORM_ENTROPY
Paul Bakker6083fd22011-12-03 21:45:14 +00001114
1115/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001116 * \def MBEDTLS_ENTROPY_FORCE_SHA256
Paul Bakker2ceda572014-02-06 15:55:25 +01001117 *
1118 * Force the entropy accumulator to use a SHA-256 accumulator instead of the
1119 * default SHA-512 based one (if both are available).
1120 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001121 * Requires: MBEDTLS_SHA256_C
Paul Bakker2ceda572014-02-06 15:55:25 +01001122 *
1123 * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option
1124 * if you have performance concerns.
1125 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001126 * This option is only useful if both MBEDTLS_SHA256_C and
1127 * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used.
Paul Bakker2ceda572014-02-06 15:55:25 +01001128 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001129//#define MBEDTLS_ENTROPY_FORCE_SHA256
Paul Bakker2ceda572014-02-06 15:55:25 +01001130
1131/**
Paul Bakkercf0a9f92016-06-01 11:25:44 +01001132 * \def MBEDTLS_ENTROPY_NV_SEED
1133 *
1134 * Enable the non-volatile (NV) seed file-based entropy source.
1135 * (Also enables the NV seed read/write functions in the platform layer)
1136 *
1137 * This is crucial (if not required) on systems that do not have a
1138 * cryptographic entropy source (in hardware or kernel) available.
1139 *
1140 * Requires: MBEDTLS_ENTROPY_C, MBEDTLS_PLATFORM_C
1141 *
Paul Bakker71a597a2016-06-07 10:59:03 +01001142 * \note The read/write functions that are used by the entropy source are
1143 * determined in the platform layer, and can be modified at runtime and/or
1144 * compile-time depending on the flags (MBEDTLS_PLATFORM_NV_SEED_*) used.
1145 *
1146 * \note If you use the default implementation functions that read a seedfile
Paul Bakkercf0a9f92016-06-01 11:25:44 +01001147 * with regular fopen(), please make sure you make a seedfile with the
1148 * proper name (defined in MBEDTLS_PLATFORM_STD_NV_SEED_FILE) and at
1149 * least MBEDTLS_ENTROPY_BLOCK_SIZE bytes in size that can be read from
Paul Bakker71a597a2016-06-07 10:59:03 +01001150 * and written to or you will get an entropy source error! The default
1151 * implementation will only use the first MBEDTLS_ENTROPY_BLOCK_SIZE
1152 * bytes from the file.
1153 *
1154 * \note The entropy collector will write to the seed file before entropy is
1155 * given to an external source, to update it.
Paul Bakkercf0a9f92016-06-01 11:25:44 +01001156 */
1157//#define MBEDTLS_ENTROPY_NV_SEED
1158
Ronald Cron71016a92020-08-28 19:01:50 +02001159/* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
Gilles Peskine69d7c8b2019-02-19 14:00:31 +01001160 *
Ronald Cron71016a92020-08-28 19:01:50 +02001161 * Enable key identifiers that encode a key owner identifier.
Gilles Peskine69d7c8b2019-02-19 14:00:31 +01001162 *
Ronald Cron9a2511e2020-09-14 10:02:56 +02001163 * The owner of a key is identified by a value of type ::mbedtls_key_owner_id_t
1164 * which is currently hard-coded to be int32_t.
Gilles Peskine69d7c8b2019-02-19 14:00:31 +01001165 *
1166 * Note that this option is meant for internal use only and may be removed
Andrzej Kurekcfc920a2022-01-25 06:33:08 -05001167 * without notice.
Gilles Peskine69d7c8b2019-02-19 14:00:31 +01001168 */
Ronald Cron71016a92020-08-28 19:01:50 +02001169//#define MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
Gilles Peskine69d7c8b2019-02-19 14:00:31 +01001170
Paul Bakkercf0a9f92016-06-01 11:25:44 +01001171/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001172 * \def MBEDTLS_MEMORY_DEBUG
Paul Bakker6e339b52013-07-03 13:37:05 +02001173 *
1174 * Enable debugging of buffer allocator memory issues. Automatically prints
1175 * (to stderr) all (fatal) messages on memory allocation issues. Enables
1176 * function for 'debug output' of allocated memory.
1177 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001178 * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C
Paul Bakker6e339b52013-07-03 13:37:05 +02001179 *
1180 * Uncomment this macro to let the buffer allocator print out error messages.
Paul Bakkera7ea6a52013-10-15 11:55:10 +02001181 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001182//#define MBEDTLS_MEMORY_DEBUG
Paul Bakker6e339b52013-07-03 13:37:05 +02001183
1184/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001185 * \def MBEDTLS_MEMORY_BACKTRACE
Paul Bakker6e339b52013-07-03 13:37:05 +02001186 *
1187 * Include backtrace information with each allocated block.
1188 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001189 * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C
Tom Cosgrovece7f18c2022-07-28 05:50:56 +01001190 * GLIBC-compatible backtrace() and backtrace_symbols() support
Paul Bakker6e339b52013-07-03 13:37:05 +02001191 *
1192 * Uncomment this macro to include backtrace information
Paul Bakker6e339b52013-07-03 13:37:05 +02001193 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001194//#define MBEDTLS_MEMORY_BACKTRACE
Paul Bakker6e339b52013-07-03 13:37:05 +02001195
1196/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001197 * \def MBEDTLS_PK_RSA_ALT_SUPPORT
Manuel Pégourié-Gonnard348bcb32015-03-31 14:01:33 +02001198 *
1199 * Support external private RSA keys (eg from a HSM) in the PK layer.
1200 *
1201 * Comment this macro to disable support for external private RSA keys.
1202 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001203#define MBEDTLS_PK_RSA_ALT_SUPPORT
Manuel Pégourié-Gonnard348bcb32015-03-31 14:01:33 +02001204
1205/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001206 * \def MBEDTLS_PKCS1_V15
Paul Bakker48377d92013-08-30 12:06:24 +02001207 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001208 * Enable support for PKCS#1 v1.5 encoding.
1209 *
Manuel Pégourié-Gonnard98b91d42022-10-19 10:59:30 +02001210 * Requires: MBEDTLS_RSA_C
Paul Bakker48377d92013-08-30 12:06:24 +02001211 *
Paul Bakker48377d92013-08-30 12:06:24 +02001212 * This enables support for PKCS#1 v1.5 operations.
1213 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001214#define MBEDTLS_PKCS1_V15
Paul Bakker48377d92013-08-30 12:06:24 +02001215
1216/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001217 * \def MBEDTLS_PKCS1_V21
Paul Bakker9dcc3222011-03-08 14:16:06 +00001218 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001219 * Enable support for PKCS#1 v2.1 encoding.
1220 *
Manuel Pégourié-Gonnardfb8d90a2023-03-16 10:47:59 +01001221 * Requires: MBEDTLS_RSA_C
Manuel Pégourié-Gonnard077ba842022-07-27 10:42:31 +02001222 *
Manuel Pégourié-Gonnardfb8d90a2023-03-16 10:47:59 +01001223 * \warning If using a hash that is only provided by PSA drivers, you must
1224 * call psa_crypto_init() before doing any PKCS#1 v2.1 operation.
Manuel Pégourié-Gonnard18a38562022-11-22 11:49:55 +01001225 *
Paul Bakker9dcc3222011-03-08 14:16:06 +00001226 * This enables support for RSAES-OAEP and RSASSA-PSS operations.
1227 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001228#define MBEDTLS_PKCS1_V21
Paul Bakker9dcc3222011-03-08 14:16:06 +00001229
Steven Cooreman6801f082021-02-19 17:21:22 +01001230/** \def MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS
1231 *
1232 * Enable support for platform built-in keys. If you enable this feature,
1233 * you must implement the function mbedtls_psa_platform_get_builtin_key().
1234 * See the documentation of that function for more information.
1235 *
1236 * Built-in keys are typically derived from a hardware unique key or
1237 * stored in a secure element.
1238 *
1239 * Requires: MBEDTLS_PSA_CRYPTO_C.
1240 *
1241 * \warning This interface is experimental and may change or be removed
1242 * without notice.
1243 */
1244//#define MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS
1245
Ronald Cron3768ac12021-01-26 16:58:00 +01001246/** \def MBEDTLS_PSA_CRYPTO_CLIENT
1247 *
1248 * Enable support for PSA crypto client.
1249 *
1250 * \note This option allows to include the code necessary for a PSA
1251 * crypto client when the PSA crypto implementation is not included in
1252 * the library (MBEDTLS_PSA_CRYPTO_C disabled). The code included is the
1253 * code to set and get PSA key attributes.
1254 * The development of PSA drivers partially relying on the library to
1255 * fulfill the hardware gaps is another possible usage of this option.
1256 *
1257 * \warning This interface is experimental and may change or be removed
1258 * without notice.
1259 */
1260//#define MBEDTLS_PSA_CRYPTO_CLIENT
1261
Gilles Peskinef08b3f82020-11-13 17:36:48 +01001262/** \def MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
1263 *
1264 * Make the PSA Crypto module use an external random generator provided
1265 * by a driver, instead of Mbed TLS's entropy and DRBG modules.
1266 *
Gilles Peskineb663a602020-11-18 15:27:37 +01001267 * \note This random generator must deliver random numbers with cryptographic
1268 * quality and high performance. It must supply unpredictable numbers
1269 * with a uniform distribution. The implementation of this function
1270 * is responsible for ensuring that the random generator is seeded
1271 * with sufficient entropy. If you have a hardware TRNG which is slow
1272 * or delivers non-uniform output, declare it as an entropy source
1273 * with mbedtls_entropy_add_source() instead of enabling this option.
1274 *
Gilles Peskineb0a748e2020-11-30 12:01:54 +01001275 * If you enable this option, you must configure the type
Gilles Peskineb8af2282020-11-13 18:00:34 +01001276 * ::mbedtls_psa_external_random_context_t in psa/crypto_platform.h
1277 * and define a function called mbedtls_psa_external_get_random()
1278 * with the following prototype:
Gilles Peskinef08b3f82020-11-13 17:36:48 +01001279 * ```
1280 * psa_status_t mbedtls_psa_external_get_random(
1281 * mbedtls_psa_external_random_context_t *context,
1282 * uint8_t *output, size_t output_size, size_t *output_length);
1283 * );
1284 * ```
1285 * The \c context value is initialized to 0 before the first call.
1286 * The function must fill the \c output buffer with \p output_size bytes
1287 * of random data and set \c *output_length to \p output_size.
1288 *
1289 * Requires: MBEDTLS_PSA_CRYPTO_C
1290 *
1291 * \warning If you enable this option, code that uses the PSA cryptography
1292 * interface will not use any of the entropy sources set up for
1293 * the entropy module, nor the NV seed that MBEDTLS_ENTROPY_NV_SEED
1294 * enables.
1295 *
1296 * \note This option is experimental and may be removed without notice.
1297 */
1298//#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
1299
Paul Bakker9dcc3222011-03-08 14:16:06 +00001300/**
Andrzej Kurekc6905232019-02-05 05:23:41 -05001301 * \def MBEDTLS_PSA_CRYPTO_SPM
1302 *
1303 * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is built for SPM (Secure
1304 * Partition Manager) integration which separates the code into two parts: a
1305 * NSPE (Non-Secure Process Environment) and an SPE (Secure Process
1306 * Environment).
1307 *
1308 * Module: library/psa_crypto.c
1309 * Requires: MBEDTLS_PSA_CRYPTO_C
1310 *
1311 */
1312//#define MBEDTLS_PSA_CRYPTO_SPM
1313
1314/**
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00001315 * \def MBEDTLS_PSA_INJECT_ENTROPY
Andrzej Kurekc6905232019-02-05 05:23:41 -05001316 *
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00001317 * Enable support for entropy injection at first boot. This feature is
1318 * required on systems that do not have a built-in entropy source (TRNG).
1319 * This feature is currently not supported on systems that have a built-in
1320 * entropy source.
Andrzej Kurekc6905232019-02-05 05:23:41 -05001321 *
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00001322 * Requires: MBEDTLS_PSA_CRYPTO_STORAGE_C, MBEDTLS_ENTROPY_NV_SEED
Andrzej Kurekc6905232019-02-05 05:23:41 -05001323 *
1324 */
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00001325//#define MBEDTLS_PSA_INJECT_ENTROPY
Andrzej Kurekc6905232019-02-05 05:23:41 -05001326
1327/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001328 * \def MBEDTLS_RSA_NO_CRT
Paul Bakker0216cc12011-03-26 13:40:23 +00001329 *
Hanno Becker88ec2382017-05-03 13:51:16 +01001330 * Do not use the Chinese Remainder Theorem
1331 * for the RSA private operation.
Paul Bakker0216cc12011-03-26 13:40:23 +00001332 *
1333 * Uncomment this macro to disable the use of CRT in RSA.
1334 *
Paul Bakker0216cc12011-03-26 13:40:23 +00001335 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001336//#define MBEDTLS_RSA_NO_CRT
Paul Bakker15566e42011-04-24 21:19:15 +00001337
1338/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001339 * \def MBEDTLS_SELF_TEST
Paul Bakker15566e42011-04-24 21:19:15 +00001340 *
1341 * Enable the checkup functions (*_self_test).
1342 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001343#define MBEDTLS_SELF_TEST
Paul Bakker5c721f92011-07-27 16:51:09 +00001344
1345/**
Manuel Pégourié-Gonnardeb0d8702015-05-28 12:54:04 +02001346 * \def MBEDTLS_SHA256_SMALLER
1347 *
1348 * Enable an implementation of SHA-256 that has lower ROM footprint but also
1349 * lower performance.
1350 *
Adam Wolf039080f2019-09-10 09:53:08 -05001351 * The default implementation is meant to be a reasonable compromise between
Manuel Pégourié-Gonnardeb0d8702015-05-28 12:54:04 +02001352 * performance and size. This version optimizes more aggressively for size at
1353 * the expense of performance. Eg on Cortex-M4 it reduces the size of
1354 * mbedtls_sha256_process() from ~2KB to ~0.5KB for a performance hit of about
1355 * 30%.
1356 *
1357 * Uncomment to enable the smaller implementation of SHA256.
1358 */
1359//#define MBEDTLS_SHA256_SMALLER
1360
1361/**
Manuel Pégourié-Gonnard2306d152019-07-17 12:36:53 +02001362 * \def MBEDTLS_SHA512_SMALLER
1363 *
1364 * Enable an implementation of SHA-512 that has lower ROM footprint but also
1365 * lower performance.
1366 *
1367 * Uncomment to enable the smaller implementation of SHA512.
1368 */
1369//#define MBEDTLS_SHA512_SMALLER
1370
1371/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001372 * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES
Paul Bakker40865c82013-01-31 17:13:13 +01001373 *
1374 * Enable sending of alert messages in case of encountered errors as per RFC.
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +00001375 * If you choose not to send the alert messages, mbed TLS can still communicate
Paul Bakker40865c82013-01-31 17:13:13 +01001376 * with other servers, only debugging of failures is harder.
1377 *
1378 * The advantage of not sending alert messages, is that no information is given
1379 * about reasons for failures thus preventing adversaries of gaining intel.
1380 *
1381 * Enable sending of all alert messages
1382 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001383#define MBEDTLS_SSL_ALL_ALERT_MESSAGES
Paul Bakker40865c82013-01-31 17:13:13 +01001384
1385/**
Gilles Peskined3d02902020-03-04 21:35:27 +01001386 * \def MBEDTLS_SSL_DTLS_CONNECTION_ID
1387 *
Hannes Tschofenige2c46e02022-11-23 10:44:11 +01001388 * Enable support for the DTLS Connection ID (CID) extension,
Gilles Peskined3d02902020-03-04 21:35:27 +01001389 * which allows to identify DTLS connections across changes
Hannes Tschofenige2c46e02022-11-23 10:44:11 +01001390 * in the underlying transport. The CID functionality is described
1391 * in RFC 9146.
Gilles Peskined3d02902020-03-04 21:35:27 +01001392 *
1393 * Setting this option enables the SSL APIs `mbedtls_ssl_set_cid()`,
Paul Elliott0113cf12022-03-11 20:26:47 +00001394 * mbedtls_ssl_get_own_cid()`, `mbedtls_ssl_get_peer_cid()` and
1395 * `mbedtls_ssl_conf_cid()`. See the corresponding documentation for
1396 * more information.
Gilles Peskined3d02902020-03-04 21:35:27 +01001397 *
Gilles Peskined3d02902020-03-04 21:35:27 +01001398 * The maximum lengths of outgoing and incoming CIDs can be configured
1399 * through the options
1400 * - MBEDTLS_SSL_CID_OUT_LEN_MAX
1401 * - MBEDTLS_SSL_CID_IN_LEN_MAX.
1402 *
1403 * Requires: MBEDTLS_SSL_PROTO_DTLS
1404 *
1405 * Uncomment to enable the Connection ID extension.
1406 */
Hannes Tschofenigfd6cca42021-10-12 09:22:33 +02001407#define MBEDTLS_SSL_DTLS_CONNECTION_ID
1408
1409
1410/**
1411 * \def MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT
1412 *
1413 * Defines whether RFC 9146 (default) or the legacy version
1414 * (version draft-ietf-tls-dtls-connection-id-05,
1415 * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05)
1416 * is used.
1417 *
1418 * Set the value to 0 for the standard version, and
1419 * 1 for the legacy draft version.
1420 *
Hannes Tschofenige2c46e02022-11-23 10:44:11 +01001421 * \deprecated Support for the legacy version of the DTLS
1422 * Connection ID feature is deprecated. Please
1423 * switch to the standardized version defined
1424 * in RFC 9146 enabled by utilizing
1425 * MBEDTLS_SSL_DTLS_CONNECTION_ID without use
1426 * of MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT.
1427 *
Hannes Tschofenigfd6cca42021-10-12 09:22:33 +02001428 * Requires: MBEDTLS_SSL_DTLS_CONNECTION_ID
1429 */
1430#define MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT 0
Gilles Peskined3d02902020-03-04 21:35:27 +01001431
1432/**
Gilles Peskineb74a1c72018-04-24 13:09:22 +02001433 * \def MBEDTLS_SSL_ASYNC_PRIVATE
1434 *
1435 * Enable asynchronous external private key operations in SSL. This allows
1436 * you to configure an SSL connection to call an external cryptographic
1437 * module to perform private key operations instead of performing the
1438 * operation inside the library.
1439 *
Valerio Setti8841d6b2023-01-05 08:40:24 +01001440 * Requires: MBEDTLS_X509_CRT_PARSE_C
Gilles Peskineb74a1c72018-04-24 13:09:22 +02001441 */
Jaeden Amerod9c71da2018-06-15 20:31:26 +01001442//#define MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskineb74a1c72018-04-24 13:09:22 +02001443
1444/**
Gilles Peskined3d02902020-03-04 21:35:27 +01001445 * \def MBEDTLS_SSL_CONTEXT_SERIALIZATION
1446 *
1447 * Enable serialization of the TLS context structures, through use of the
1448 * functions mbedtls_ssl_context_save() and mbedtls_ssl_context_load().
1449 *
1450 * This pair of functions allows one side of a connection to serialize the
1451 * context associated with the connection, then free or re-use that context
1452 * while the serialized state is persisted elsewhere, and finally deserialize
1453 * that state to a live context for resuming read/write operations on the
1454 * connection. From a protocol perspective, the state of the connection is
1455 * unaffected, in particular this is entirely transparent to the peer.
1456 *
1457 * Note: this is distinct from TLS session resumption, which is part of the
1458 * protocol and fully visible by the peer. TLS session resumption enables
1459 * establishing new connections associated to a saved session with shorter,
1460 * lighter handshakes, while context serialization is a local optimization in
1461 * handling a single, potentially long-lived connection.
1462 *
1463 * Enabling these APIs makes some SSL structures larger, as 64 extra bytes are
1464 * saved after the handshake to allow for more efficient serialization, so if
1465 * you don't need this feature you'll save RAM by disabling it.
1466 *
Przemek Stekiel460192e2022-10-03 08:55:29 +02001467 * Requires: MBEDTLS_GCM_C or MBEDTLS_CCM_C or MBEDTLS_CHACHAPOLY_C
1468 *
Gilles Peskined3d02902020-03-04 21:35:27 +01001469 * Comment to disable the context serialization APIs.
1470 */
1471#define MBEDTLS_SSL_CONTEXT_SERIALIZATION
1472
1473/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001474 * \def MBEDTLS_SSL_DEBUG_ALL
Paul Bakkerd66f0702013-01-31 16:57:45 +01001475 *
1476 * Enable the debug messages in SSL module for all issues.
1477 * Debug messages have been disabled in some places to prevent timing
1478 * attacks due to (unbalanced) debugging function calls.
1479 *
1480 * If you need all error reporting you should enable this during debugging,
1481 * but remove this for production servers that should log as well.
1482 *
1483 * Uncomment this macro to report all debug messages on errors introducing
1484 * a timing side-channel.
1485 *
Paul Bakkerd66f0702013-01-31 16:57:45 +01001486 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001487//#define MBEDTLS_SSL_DEBUG_ALL
Paul Bakkerd66f0702013-01-31 16:57:45 +01001488
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001489/** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01001490 *
1491 * Enable support for Encrypt-then-MAC, RFC 7366.
1492 *
1493 * This allows peers that both support it to use a more robust protection for
1494 * ciphersuites using CBC, providing deep resistance against timing attacks
1495 * on the padding or underlying cipher.
1496 *
1497 * This only affects CBC ciphersuites, and is useless if none is defined.
1498 *
TRodziewicz0f82ec62021-05-12 17:49:18 +02001499 * Requires: MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01001500 *
1501 * Comment this macro to disable support for Encrypt-then-MAC
1502 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001503#define MBEDTLS_SSL_ENCRYPT_THEN_MAC
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01001504
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001505/** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02001506 *
Manuel Pégourié-Gonnardbca8aa02020-03-24 12:11:49 +01001507 * Enable support for RFC 7627: Session Hash and Extended Master Secret
1508 * Extension.
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02001509 *
Shaun Case8b0ecbc2021-12-20 21:14:10 -08001510 * This was introduced as "the proper fix" to the Triple Handshake family of
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02001511 * attacks, but it is recommended to always use it (even if you disable
1512 * renegotiation), since it actually fixes a more fundamental issue in the
1513 * original SSL/TLS design, and has implications beyond Triple Handshake.
1514 *
TRodziewicz0f82ec62021-05-12 17:49:18 +02001515 * Requires: MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard769c6b62014-10-28 14:13:55 +01001516 *
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02001517 * Comment this macro to disable support for Extended Master Secret.
1518 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001519#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02001520
Paul Bakkerd66f0702013-01-31 16:57:45 +01001521/**
Hanno Beckerbb278f52019-02-05 17:04:00 +00001522 * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
1523 *
Hanno Beckerfd7f2982019-02-25 10:13:33 +00001524 * This option controls the availability of the API mbedtls_ssl_get_peer_cert()
Hanno Beckerbb278f52019-02-05 17:04:00 +00001525 * giving access to the peer's certificate after completion of the handshake.
1526 *
1527 * Unless you need mbedtls_ssl_peer_cert() in your application, it is
1528 * recommended to disable this option for reduced RAM usage.
1529 *
1530 * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still
1531 * defined, but always returns \c NULL.
1532 *
1533 * \note This option has no influence on the protection against the
1534 * triple handshake attack. Even if it is disabled, Mbed TLS will
1535 * still ensure that certificates do not change during renegotiation,
Shaun Case8b0ecbc2021-12-20 21:14:10 -08001536 * for example by keeping a hash of the peer's certificate.
Hanno Beckerbb278f52019-02-05 17:04:00 +00001537 *
Tom Cosgroveafb2fe12022-06-29 16:36:12 +01001538 * \note This option is required if MBEDTLS_SSL_PROTO_TLS1_3 is set.
Hanno Beckerbb278f52019-02-05 17:04:00 +00001539 *
1540 * Comment this macro to disable storing the peer's certificate
1541 * after the handshake.
1542 */
1543#define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
1544
1545/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001546 * \def MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +01001547 *
Hanno Becker0eb8fb82018-10-26 09:53:16 +01001548 * Enable support for TLS renegotiation.
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +01001549 *
1550 * The two main uses of renegotiation are (1) refresh keys on long-lived
1551 * connections and (2) client authentication after the initial handshake.
1552 * If you don't need renegotiation, it's probably better to disable it, since
1553 * it has been associated with security issues in the past and is easy to
1554 * misuse/misunderstand.
Manuel Pégourié-Gonnard03717042014-11-04 19:52:10 +01001555 *
Manuel Pégourié-Gonnard55f968b2015-03-09 16:23:15 +00001556 * Comment this to disable support for renegotiation.
Hanno Becker6851b102017-10-12 14:57:48 +01001557 *
1558 * \note Even if this option is disabled, both client and server are aware
1559 * of the Renegotiation Indication Extension (RFC 5746) used to
1560 * prevent the SSL renegotiation attack (see RFC 5746 Sect. 1).
1561 * (See \c mbedtls_ssl_conf_legacy_renegotiation for the
1562 * configuration of this extension).
1563 *
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +01001564 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001565#define MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +01001566
1567/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001568 * \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Paul Bakker05decb22013-08-15 13:33:48 +02001569 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001570 * Enable support for RFC 6066 max_fragment_length extension in SSL.
Paul Bakker05decb22013-08-15 13:33:48 +02001571 *
1572 * Comment this macro to disable support for the max_fragment_length extension
1573 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001574#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Paul Bakker05decb22013-08-15 13:33:48 +02001575
1576/**
Jan Bruckner151f6422023-02-10 12:45:19 +01001577 * \def MBEDTLS_SSL_RECORD_SIZE_LIMIT
1578 *
Jan Brucknera0589e72023-03-15 11:04:45 +01001579 * Enable support for RFC 8449 record_size_limit extension in SSL (TLS 1.3 only).
Jan Bruckner151f6422023-02-10 12:45:19 +01001580 *
1581 * \warning This extension is currently in development and must NOT be used except
1582 * for testing purposes.
1583 *
1584 * Requires: MBEDTLS_SSL_PROTO_TLS1_3
1585 *
1586 * Uncomment this macro to enable support for the record_size_limit extension
1587 */
1588//#define MBEDTLS_SSL_RECORD_SIZE_LIMIT
1589
1590/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001591 * \def MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakkerd2f068e2013-08-27 21:19:20 +02001592 *
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +01001593 * Enable support for TLS 1.2 (and DTLS 1.2 if DTLS is enabled).
Paul Bakkerd2f068e2013-08-27 21:19:20 +02001594 *
Manuel Pégourié-Gonnard72687b72022-09-15 12:23:58 +02001595 * Requires: Without MBEDTLS_USE_PSA_CRYPTO: MBEDTLS_MD_C and
Manuel Pégourié-Gonnarda22857b2023-03-23 13:20:44 +01001596 * (MBEDTLS_SHA256_C or MBEDTLS_SHA384_C or
1597 * SHA-256 or SHA-512 provided by a PSA driver)
Manuel Pégourié-Gonnard72687b72022-09-15 12:23:58 +02001598 * With MBEDTLS_USE_PSA_CRYPTO:
Manuel Pégourié-Gonnarda22857b2023-03-23 13:20:44 +01001599 * PSA_WANT_ALG_SHA_256 or PSA_WANT_ALG_SHA_384
Andrzej Kureke02da812022-08-17 17:04:49 -04001600 *
Manuel Pégourié-Gonnarda22857b2023-03-23 13:20:44 +01001601 * \warning If building with MBEDTLS_USE_PSA_CRYPTO, or if the hash(es) used
1602 * are only provided by PSA drivers, you must call psa_crypto_init() before
1603 * doing any TLS operations.
Paul Bakkerd2f068e2013-08-27 21:19:20 +02001604 *
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +01001605 * Comment this macro to disable support for TLS 1.2 / DTLS 1.2
Paul Bakkerd2f068e2013-08-27 21:19:20 +02001606 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001607#define MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakkerd2f068e2013-08-27 21:19:20 +02001608
1609/**
Ronald Cron6f135e12021-12-08 16:57:54 +01001610 * \def MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker9fc15ea2020-05-04 12:00:47 +01001611 *
Ronald Cron6f135e12021-12-08 16:57:54 +01001612 * Enable support for TLS 1.3.
Hanno Becker9fc15ea2020-05-04 12:00:47 +01001613 *
Ronald Cron6f135e12021-12-08 16:57:54 +01001614 * \note The support for TLS 1.3 is not comprehensive yet, in particular
1615 * pre-shared keys are not supported.
1616 * See docs/architecture/tls13-support.md for a description of the TLS
1617 * 1.3 support that this option enables.
Hanno Becker9fc15ea2020-05-04 12:00:47 +01001618 *
Tom Cosgroveafb2fe12022-06-29 16:36:12 +01001619 * Requires: MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
Manuel Pégourié-Gonnard3e830982022-05-11 13:27:44 +02001620 * Requires: MBEDTLS_PSA_CRYPTO_C
Ronald Cron6f135e12021-12-08 16:57:54 +01001621 *
Gilles Peskine8c2830a2022-08-04 23:37:51 +02001622 * \note TLS 1.3 uses PSA crypto for cryptographic operations that are
1623 * directly performed by TLS 1.3 code. As a consequence, you must
1624 * call psa_crypto_init() before the first TLS 1.3 handshake.
1625 *
1626 * \note Cryptographic operations performed indirectly via another module
1627 * (X.509, PK) or by code shared with TLS 1.2 (record protection,
1628 * running handshake hash) only use PSA crypto if
1629 * #MBEDTLS_USE_PSA_CRYPTO is enabled.
Tom Cosgroveafb2fe12022-06-29 16:36:12 +01001630 *
Hanno Becker9fc15ea2020-05-04 12:00:47 +01001631 * Uncomment this macro to enable the support for TLS 1.3.
Hanno Becker9fc15ea2020-05-04 12:00:47 +01001632 */
Ronald Cron6f135e12021-12-08 16:57:54 +01001633//#define MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker9fc15ea2020-05-04 12:00:47 +01001634
1635/**
Ronald Cronab65c522021-11-24 10:47:20 +01001636 * \def MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1637 *
1638 * Enable TLS 1.3 middlebox compatibility mode.
1639 *
1640 * As specified in Section D.4 of RFC 8446, TLS 1.3 offers a compatibility
1641 * mode to make a TLS 1.3 connection more likely to pass through middle boxes
1642 * expecting TLS 1.2 traffic.
1643 *
1644 * Turning on the compatibility mode comes at the cost of a few added bytes
1645 * on the wire, but it doesn't affect compatibility with TLS 1.3 implementations
1646 * that don't use it. Therefore, unless transmission bandwidth is critical and
1647 * you know that middlebox compatibility issues won't occur, it is therefore
1648 * recommended to set this option.
1649 *
1650 * Comment to disable compatibility mode for TLS 1.3. If
Ronald Cron6f135e12021-12-08 16:57:54 +01001651 * MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
1652 * effect on the build.
Ronald Cronab65c522021-11-24 10:47:20 +01001653 *
1654 */
1655//#define MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1656
1657/**
Ronald Crond8d2ea52022-10-04 15:48:06 +02001658 * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1659 *
1660 * Enable TLS 1.3 PSK key exchange mode.
1661 *
1662 * Comment to disable support for the PSK key exchange mode in TLS 1.3. If
1663 * MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
1664 * effect on the build.
1665 *
1666 */
1667#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1668
1669/**
1670 * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
1671 *
1672 * Enable TLS 1.3 ephemeral key exchange mode.
1673 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +02001674 * Requires: PSA_WANT_ALG_ECDH
1675 * MBEDTLS_X509_CRT_PARSE_C
1676 * and at least one of:
1677 * MBEDTLS_ECDSA_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDSA)
1678 * MBEDTLS_PKCS1_V21
Ronald Crond8d2ea52022-10-04 15:48:06 +02001679 *
1680 * Comment to disable support for the ephemeral key exchange mode in TLS 1.3.
1681 * If MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
1682 * effect on the build.
1683 *
1684 */
1685#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
1686
1687/**
1688 * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1689 *
1690 * Enable TLS 1.3 PSK ephemeral key exchange mode.
1691 *
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +02001692 * Requires: PSA_WANT_ALG_ECDH
Ronald Crond8d2ea52022-10-04 15:48:06 +02001693 *
1694 * Comment to disable support for the PSK ephemeral key exchange mode in
1695 * TLS 1.3. If MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not
1696 * have any effect on the build.
1697 *
1698 */
1699#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1700
1701/**
Gilles Peskine449bd832023-01-11 14:50:10 +01001702 * \def MBEDTLS_SSL_EARLY_DATA
1703 *
1704 * Enable support for RFC 8446 TLS 1.3 early data.
1705 *
1706 * Requires: MBEDTLS_SSL_SESSION_TICKETS and either
1707 * MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED or
1708 * MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1709 *
1710 * Comment this to disable support for early data. If MBEDTLS_SSL_PROTO_TLS1_3
1711 * is not enabled, this option does not have any effect on the build.
1712 *
1713 * This feature is experimental, not completed and thus not ready for
1714 * production.
1715 *
1716 */
Ronald Cronc2e110f2022-11-22 09:01:46 +01001717//#define MBEDTLS_SSL_EARLY_DATA
Xiaokang Qian54413b12022-10-20 05:57:03 +00001718
1719/**
Jerry Yu16f68532022-11-05 10:50:06 +08001720 * \def MBEDTLS_SSL_MAX_EARLY_DATA_SIZE
1721 *
Jerry Yu12c46bd2022-12-06 11:02:51 +08001722 * The default maximum amount of 0-RTT data. See the documentation of
1723 * \c mbedtls_ssl_tls13_conf_max_early_data_size() for more information.
1724 *
1725 * It must be positive and smaller than UINT32_MAX.
1726 *
1727 * If MBEDTLS_SSL_EARLY_DATA is not defined, this default value does not
1728 * have any impact on the build.
Jerry Yu16f68532022-11-05 10:50:06 +08001729 *
1730 * This feature is experimental, not completed and thus not ready for
1731 * production.
1732 *
1733 */
1734#define MBEDTLS_SSL_MAX_EARLY_DATA_SIZE 1024
1735
1736/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001737 * \def MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +01001738 *
1739 * Enable support for DTLS (all available versions).
1740 *
TRodziewicz0f82ec62021-05-12 17:49:18 +02001741 * Enable this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2.
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +01001742 *
TRodziewicz0f82ec62021-05-12 17:49:18 +02001743 * Requires: MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +01001744 *
1745 * Comment this macro to disable support for DTLS
1746 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001747#define MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +01001748
1749/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001750 * \def MBEDTLS_SSL_ALPN
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +02001751 *
Manuel Pégourié-Gonnard6b298e62014-11-20 18:28:50 +01001752 * Enable support for RFC 7301 Application Layer Protocol Negotiation.
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +02001753 *
Paul Bakker27e36d32014-04-08 12:33:37 +02001754 * Comment this macro to disable support for ALPN.
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +02001755 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001756#define MBEDTLS_SSL_ALPN
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +02001757
1758/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001759 * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +02001760 *
1761 * Enable support for the anti-replay mechanism in DTLS.
1762 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001763 * Requires: MBEDTLS_SSL_TLS_C
1764 * MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +02001765 *
Manuel Pégourié-Gonnarda6fcffe2014-10-13 18:15:52 +02001766 * \warning Disabling this is often a security risk!
Manuel Pégourié-Gonnard6729e792015-05-11 09:50:24 +02001767 * See mbedtls_ssl_conf_dtls_anti_replay() for details.
Manuel Pégourié-Gonnarda6fcffe2014-10-13 18:15:52 +02001768 *
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +02001769 * Comment this to disable anti-replay in DTLS.
1770 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001771#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +02001772
1773/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001774 * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY
Manuel Pégourié-Gonnard82202f02014-07-23 00:28:58 +02001775 *
1776 * Enable support for HelloVerifyRequest on DTLS servers.
1777 *
1778 * This feature is highly recommended to prevent DTLS servers being used as
1779 * amplifiers in DoS attacks against other hosts. It should always be enabled
1780 * unless you know for sure amplification cannot be a problem in the
1781 * environment in which your server operates.
1782 *
Andrzej Kurek5c65c572022-04-13 14:28:52 -04001783 * \warning Disabling this can be a security risk! (see above)
Manuel Pégourié-Gonnarda6fcffe2014-10-13 18:15:52 +02001784 *
Manuel Pégourié-Gonnarde057d3b2015-05-20 10:59:43 +02001785 * Requires: MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard82202f02014-07-23 00:28:58 +02001786 *
1787 * Comment this to disable support for HelloVerifyRequest.
1788 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001789#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
Manuel Pégourié-Gonnard82202f02014-07-23 00:28:58 +02001790
1791/**
Johan Pascalb62bb512015-12-03 21:56:45 +01001792 * \def MBEDTLS_SSL_DTLS_SRTP
1793 *
Tobias Nießen1e8ca122021-05-10 19:53:15 +02001794 * Enable support for negotiation of DTLS-SRTP (RFC 5764)
Johan Pascal842d6712020-09-23 13:34:40 +02001795 * through the use_srtp extension.
1796 *
1797 * \note This feature provides the minimum functionality required
1798 * to negotiate the use of DTLS-SRTP and to allow the derivation of
1799 * the associated SRTP packet protection key material.
1800 * In particular, the SRTP packet protection itself, as well as the
1801 * demultiplexing of RTP and DTLS packets at the datagram layer
1802 * (see Section 5 of RFC 5764), are not handled by this feature.
1803 * Instead, after successful completion of a handshake negotiating
1804 * the use of DTLS-SRTP, the extended key exporter API
Hanno Becker2d6e6f82021-05-24 10:58:31 +01001805 * mbedtls_ssl_conf_export_keys_cb() should be used to implement
Johan Pascal842d6712020-09-23 13:34:40 +02001806 * the key exporter described in Section 4.2 of RFC 5764 and RFC 5705
1807 * (this is implemented in the SSL example programs).
1808 * The resulting key should then be passed to an SRTP stack.
1809 *
1810 * Setting this option enables the runtime API
1811 * mbedtls_ssl_conf_dtls_srtp_protection_profiles()
1812 * through which the supported DTLS-SRTP protection
1813 * profiles can be configured. You must call this API at
1814 * runtime if you wish to negotiate the use of DTLS-SRTP.
Johan Pascalb62bb512015-12-03 21:56:45 +01001815 *
1816 * Requires: MBEDTLS_SSL_PROTO_DTLS
1817 *
Ron Eldor9cfb5eb2018-12-10 15:30:14 +02001818 * Uncomment this to enable support for use_srtp extension.
Johan Pascalb62bb512015-12-03 21:56:45 +01001819 */
Ron Eldor9cfb5eb2018-12-10 15:30:14 +02001820//#define MBEDTLS_SSL_DTLS_SRTP
Johan Pascalb62bb512015-12-03 21:56:45 +01001821
1822/**
Manuel Pégourié-Gonnard26d227d2015-09-04 10:53:25 +02001823 * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
1824 *
1825 * Enable server-side support for clients that reconnect from the same port.
1826 *
1827 * Some clients unexpectedly close the connection and try to reconnect using the
1828 * same source port. This needs special support from the server to handle the
Simon Butcher4f6882a2015-09-11 17:12:46 +01001829 * new connection securely, as described in section 4.2.8 of RFC 6347. This
Manuel Pégourié-Gonnard26d227d2015-09-04 10:53:25 +02001830 * flag enables that support.
1831 *
Manuel Pégourié-Gonnard62c74bb2015-09-08 17:50:29 +02001832 * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY
Manuel Pégourié-Gonnard62c74bb2015-09-08 17:50:29 +02001833 *
Manuel Pégourié-Gonnard26d227d2015-09-04 10:53:25 +02001834 * Comment this to disable support for clients reusing the source port.
1835 */
1836#define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
1837
1838/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001839 * \def MBEDTLS_SSL_SESSION_TICKETS
Paul Bakkera503a632013-08-14 13:48:06 +02001840 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001841 * Enable support for RFC 5077 session tickets in SSL.
Antonin Décimo36e89b52019-01-23 15:24:37 +01001842 * Client-side, provides full support for session tickets (maintenance of a
Manuel Pégourié-Gonnard0c0f11f2015-05-20 09:55:50 +02001843 * session store remains the responsibility of the application, though).
1844 * Server-side, you also need to provide callbacks for writing and parsing
1845 * tickets, including authenticated encryption and key management. Example
1846 * callbacks are provided by MBEDTLS_SSL_TICKET_C.
Paul Bakkera503a632013-08-14 13:48:06 +02001847 *
1848 * Comment this macro to disable support for SSL session tickets
1849 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001850#define MBEDTLS_SSL_SESSION_TICKETS
Paul Bakkera503a632013-08-14 13:48:06 +02001851
1852/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001853 * \def MBEDTLS_SSL_SERVER_NAME_INDICATION
Paul Bakker0be444a2013-08-27 21:55:01 +02001854 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001855 * Enable support for RFC 6066 server name indication (SNI) in SSL.
Paul Bakker0be444a2013-08-27 21:55:01 +02001856 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001857 * Requires: MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnardbbbb3cf2015-01-28 16:44:37 +00001858 *
Paul Bakker0be444a2013-08-27 21:55:01 +02001859 * Comment this macro to disable support for server name indication in SSL
1860 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001861#define MBEDTLS_SSL_SERVER_NAME_INDICATION
Paul Bakker0be444a2013-08-27 21:55:01 +02001862
1863/**
Gilles Peskinef03bd812020-03-23 18:13:58 +01001864 * \def MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
1865 *
Andrzej Kurek2a54a6f2021-01-07 08:13:49 -05001866 * When this option is enabled, the SSL buffer will be resized automatically
1867 * based on the negotiated maximum fragment length in each direction.
Andrzej Kurek557289b2020-10-21 15:12:39 +02001868 *
1869 * Requires: MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Gilles Peskinef03bd812020-03-23 18:13:58 +01001870 */
1871//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
1872
1873/**
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +02001874 * \def MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
1875 *
1876 * Enable testing of the constant-flow nature of some sensitive functions with
1877 * clang's MemorySanitizer. This causes some existing tests to also test
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +02001878 * this non-functional property of the code under test.
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +02001879 *
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +02001880 * This setting requires compiling with clang -fsanitize=memory. The test
1881 * suites can then be run normally.
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +02001882 *
Manuel Pégourié-Gonnard8ff863b2020-07-31 12:59:34 +02001883 * \warning This macro is only used for extended testing; it is not considered
1884 * part of the library's API, so it may change or disappear at any time.
1885 *
Manuel Pégourié-Gonnard390fb4f2020-07-24 11:08:40 +02001886 * Uncomment to enable testing of the constant-flow nature of selected code.
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +02001887 */
1888//#define MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
1889
1890/**
Manuel Pégourié-Gonnard73afa372020-08-19 10:27:38 +02001891 * \def MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
1892 *
1893 * Enable testing of the constant-flow nature of some sensitive functions with
1894 * valgrind's memcheck tool. This causes some existing tests to also test
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +02001895 * this non-functional property of the code under test.
Manuel Pégourié-Gonnard73afa372020-08-19 10:27:38 +02001896 *
1897 * This setting requires valgrind headers for building, and is only useful for
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +02001898 * testing if the tests suites are run with valgrind's memcheck. This can be
1899 * done for an individual test suite with 'valgrind ./test_suite_xxx', or when
1900 * using CMake, this can be done for all test suites with 'make memcheck'.
Manuel Pégourié-Gonnard73afa372020-08-19 10:27:38 +02001901 *
1902 * \warning This macro is only used for extended testing; it is not considered
1903 * part of the library's API, so it may change or disappear at any time.
1904 *
1905 * Uncomment to enable testing of the constant-flow nature of selected code.
1906 */
1907//#define MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
1908
1909/**
Gilles Peskinefea6eaf2019-09-11 13:27:48 +02001910 * \def MBEDTLS_TEST_HOOKS
1911 *
1912 * Enable features for invasive testing such as introspection functions and
1913 * hooks for fault injection. This enables additional unit tests.
1914 *
1915 * Merely enabling this feature should not change the behavior of the product.
1916 * It only adds new code, and new branching points where the default behavior
1917 * is the same as when this feature is disabled.
1918 * However, this feature increases the attack surface: there is an added
1919 * risk of vulnerabilities, and more gadgets that can make exploits easier.
1920 * Therefore this feature must never be enabled in production.
1921 *
1922 * See `docs/architecture/testing/mbed-crypto-invasive-testing.md` for more
1923 * information.
1924 *
1925 * Uncomment to enable invasive tests.
1926 */
1927//#define MBEDTLS_TEST_HOOKS
1928
1929/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001930 * \def MBEDTLS_THREADING_ALT
Paul Bakker2466d932013-09-28 14:40:38 +02001931 *
1932 * Provide your own alternate threading implementation.
1933 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001934 * Requires: MBEDTLS_THREADING_C
Paul Bakker2466d932013-09-28 14:40:38 +02001935 *
1936 * Uncomment this to allow your own alternate threading implementation.
Paul Bakker2466d932013-09-28 14:40:38 +02001937 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001938//#define MBEDTLS_THREADING_ALT
Paul Bakker2466d932013-09-28 14:40:38 +02001939
1940/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001941 * \def MBEDTLS_THREADING_PTHREAD
Paul Bakker2466d932013-09-28 14:40:38 +02001942 *
1943 * Enable the pthread wrapper layer for the threading layer.
1944 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001945 * Requires: MBEDTLS_THREADING_C
Paul Bakker2466d932013-09-28 14:40:38 +02001946 *
1947 * Uncomment this to enable pthread mutexes.
Paul Bakker2466d932013-09-28 14:40:38 +02001948 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001949//#define MBEDTLS_THREADING_PTHREAD
Paul Bakker2466d932013-09-28 14:40:38 +02001950
1951/**
Manuel Pégourié-Gonnardaeefa492018-10-22 12:14:52 +02001952 * \def MBEDTLS_USE_PSA_CRYPTO
1953 *
Manuel Pégourié-Gonnard2ca08c82023-03-24 09:21:46 +01001954 * Make the X.509 and TLS libraries use PSA for cryptographic operations as
1955 * much as possible, and enable new APIs for using keys handled by PSA Crypto.
Manuel Pégourié-Gonnardaeefa492018-10-22 12:14:52 +02001956 *
Jaeden Amero8dd16902019-07-22 16:39:49 +01001957 * \note Development of this option is currently in progress, and parts of Mbed
1958 * TLS's X.509 and TLS modules are not ported to PSA yet. However, these parts
Andrzej Kurekd65b11d2019-04-16 04:20:24 -04001959 * will still continue to work as usual, so enabling this option should not
1960 * break backwards compatibility.
Manuel Pégourié-Gonnardaeefa492018-10-22 12:14:52 +02001961 *
Manuel Pégourié-Gonnardff43ff62022-04-20 15:32:01 +02001962 * \warning If you enable this option, you need to call `psa_crypto_init()`
valeriocf35d772023-04-20 10:37:53 +02001963 * before calling any function from the SSL/TLS, X.509 or PK modules, except
1964 * for the various mbedtls_xxx_init() functions which can be called at any time.
Hanno Becker51560b62018-11-19 09:46:26 +00001965 *
Manuel Pégourié-Gonnard93b21e72023-03-29 10:30:26 +02001966 * \note An important and desirable effect of this option is that it allows
1967 * PK, X.509 and TLS to take advantage of PSA drivers. For example, enabling
1968 * this option is what allows use of drivers for ECDSA, ECDH and EC J-PAKE in
Manuel Pégourié-Gonnard9463e782023-03-30 09:37:39 +02001969 * those modules. However, note that even with this option disabled, some code
Manuel Pégourié-Gonnard93b21e72023-03-29 10:30:26 +02001970 * in PK, X.509, TLS or the crypto library might still use PSA drivers, if it
1971 * can determine it's safe to do so; currently that's the case for hashes.
Manuel Pégourié-Gonnard2ca08c82023-03-24 09:21:46 +01001972 *
1973 * \note See docs/use-psa-crypto.md for a complete description this option.
Manuel Pégourié-Gonnardaeefa492018-10-22 12:14:52 +02001974 *
1975 * Requires: MBEDTLS_PSA_CRYPTO_C.
Manuel Pégourié-Gonnard971dea32019-02-01 12:38:40 +01001976 *
Andrzej Kurekd3deb1d2019-04-16 04:14:48 -04001977 * Uncomment this to enable internal use of PSA Crypto and new associated APIs.
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001978 */
Paul Bakker0f90d7d2014-04-30 11:49:44 +02001979//#define MBEDTLS_USE_PSA_CRYPTO
1980
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001981/**
John Durkop6e33dbe2020-09-17 21:15:13 -07001982 * \def MBEDTLS_PSA_CRYPTO_CONFIG
1983 *
John Durkop185764f2020-10-12 21:32:12 -07001984 * This setting allows support for cryptographic mechanisms through the PSA
1985 * API to be configured separately from support through the mbedtls API.
John Durkop6e33dbe2020-09-17 21:15:13 -07001986 *
Gilles Peskinedb0421b2022-04-13 23:22:49 +02001987 * When this option is disabled, the PSA API exposes the cryptographic
1988 * mechanisms that can be implemented on top of the `mbedtls_xxx` API
1989 * configured with `MBEDTLS_XXX` symbols.
Gilles Peskine750596e2022-03-16 17:03:55 +01001990 *
1991 * When this option is enabled, the PSA API exposes the cryptographic
1992 * mechanisms requested by the `PSA_WANT_XXX` symbols defined in
1993 * include/psa/crypto_config.h. The corresponding `MBEDTLS_XXX` settings are
1994 * automatically enabled if required (i.e. if no PSA driver provides the
1995 * mechanism). You may still freely enable additional `MBEDTLS_XXX` symbols
1996 * in mbedtls_config.h.
Gilles Peskine58858b72020-11-09 15:26:09 +01001997 *
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01001998 * If the symbol #MBEDTLS_PSA_CRYPTO_CONFIG_FILE is defined, it specifies
Gilles Peskine0c4db1f2022-04-14 12:44:01 +02001999 * an alternative header to include instead of include/psa/crypto_config.h.
Gilles Peskine58858b72020-11-09 15:26:09 +01002000 *
John Durkop185764f2020-10-12 21:32:12 -07002001 * This feature is still experimental and is not ready for production since
2002 * it is not completed.
John Durkop6e33dbe2020-09-17 21:15:13 -07002003 */
2004//#define MBEDTLS_PSA_CRYPTO_CONFIG
2005
2006/**
Paul Bakker1f2bc622013-08-15 13:45:55 +02002007 * \def MBEDTLS_VERSION_FEATURES
2008 *
2009 * Allow run-time checking of compile-time enabled features. Thus allowing users
2010 * to check at run-time if the library is for instance compiled with threading
Paul Bakker5c721f92011-07-27 16:51:09 +00002011 * support via mbedtls_version_check_feature().
2012 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002013 * Requires: MBEDTLS_VERSION_C
Paul Bakker5c721f92011-07-27 16:51:09 +00002014 *
2015 * Comment this to disable run-time checking and save ROM space
2016 */
2017#define MBEDTLS_VERSION_FEATURES
2018
2019/**
Hanno Becker288dedc2019-03-27 11:00:53 +00002020 * \def MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2021 *
Jarno Lamsaf49fedc2019-04-01 14:58:30 +03002022 * If set, this enables the X.509 API `mbedtls_x509_crt_verify_with_ca_cb()`
Hanno Becker288dedc2019-03-27 11:00:53 +00002023 * and the SSL API `mbedtls_ssl_conf_ca_cb()` which allow users to configure
2024 * the set of trusted certificates through a callback instead of a linked
2025 * list.
2026 *
2027 * This is useful for example in environments where a large number of trusted
2028 * certificates is present and storing them in a linked list isn't efficient
2029 * enough, or when the set of trusted certificates changes frequently.
2030 *
Jarno Lamsaf49fedc2019-04-01 14:58:30 +03002031 * See the documentation of `mbedtls_x509_crt_verify_with_ca_cb()` and
Hanno Becker288dedc2019-03-27 11:00:53 +00002032 * `mbedtls_ssl_conf_ca_cb()` for more information.
2033 *
Valerio Setti8e45cdd2023-01-05 09:32:29 +01002034 * Requires: MBEDTLS_X509_CRT_PARSE_C
2035 *
Hanno Becker288dedc2019-03-27 11:00:53 +00002036 * Uncomment to enable trusted certificate callbacks.
2037 */
2038//#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2039
2040/**
Hanno Becker612a2f12020-10-09 09:19:39 +01002041 * \def MBEDTLS_X509_REMOVE_INFO
Peter Kolbus9a969b62018-12-11 13:55:56 -06002042 *
Chris Jones2c745862020-12-16 11:41:06 +00002043 * Disable mbedtls_x509_*_info() and related APIs.
Peter Kolbus9a969b62018-12-11 13:55:56 -06002044 *
Chris Jones2c745862020-12-16 11:41:06 +00002045 * Uncomment to omit mbedtls_x509_*_info(), as well as mbedtls_debug_print_crt()
Peter Kolbus9a969b62018-12-11 13:55:56 -06002046 * and other functions/constants only used by these functions, thus reducing
2047 * the code footprint by several KB.
2048 */
Chris Jones2c745862020-12-16 11:41:06 +00002049//#define MBEDTLS_X509_REMOVE_INFO
Peter Kolbus9a969b62018-12-11 13:55:56 -06002050
2051/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002052 * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT
Manuel Pégourié-Gonnardd1539b12014-06-06 16:42:37 +02002053 *
2054 * Enable parsing and verification of X.509 certificates, CRLs and CSRS
2055 * signed with RSASSA-PSS (aka PKCS#1 v2.1).
2056 *
2057 * Comment this macro to disallow using RSASSA-PSS in certificates.
2058 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002059#define MBEDTLS_X509_RSASSA_PSS_SUPPORT
Andrzej Kurek38d4fdd2021-12-28 16:22:52 +01002060/** \} name SECTION: mbed TLS feature support */
Paul Bakker0a62cd12011-01-21 11:00:08 +00002061
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002062/**
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +00002063 * \name SECTION: mbed TLS modules
Paul Bakker0a62cd12011-01-21 11:00:08 +00002064 *
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +00002065 * This section enables or disables entire modules in mbed TLS
Paul Bakker0a62cd12011-01-21 11:00:08 +00002066 * \{
2067 */
Paul Bakker5121ce52009-01-03 21:22:43 +00002068
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002069/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002070 * \def MBEDTLS_AESNI_C
Manuel Pégourié-Gonnard92ac76f2013-12-16 17:12:53 +01002071 *
Gilles Peskine0bfccfa2023-03-16 17:49:44 +01002072 * Enable AES-NI support on x86-64 or x86-32.
2073 *
2074 * \note AESNI is only supported with certain compilers and target options:
2075 * - Visual Studio 2013: supported.
2076 * - GCC, x86-64, target not explicitly supporting AESNI:
2077 * requires MBEDTLS_HAVE_ASM.
2078 * - GCC, x86-32, target not explicitly supporting AESNI:
2079 * not supported.
2080 * - GCC, x86-64 or x86-32, target supporting AESNI: supported.
2081 * For this assembly-less implementation, you must currently compile
2082 * `library/aesni.c` and `library/aes.c` with machine options to enable
2083 * SSE2 and AESNI instructions: `gcc -msse2 -maes -mpclmul` or
2084 * `clang -maes -mpclmul`.
2085 * - Non-x86 targets: this option is silently ignored.
2086 * - Other compilers: this option is silently ignored.
2087 *
2088 * \note
2089 * Above, "GCC" includes compatible compilers such as Clang.
2090 * The limitations on target support are likely to be relaxed in the future.
Manuel Pégourié-Gonnard92ac76f2013-12-16 17:12:53 +01002091 *
2092 * Module: library/aesni.c
2093 * Caller: library/aes.c
2094 *
Gilles Peskine0bfccfa2023-03-16 17:49:44 +01002095 * Requires: MBEDTLS_HAVE_ASM (on some platforms, see note)
Manuel Pégourié-Gonnard92ac76f2013-12-16 17:12:53 +01002096 *
Gilles Peskine0bfccfa2023-03-16 17:49:44 +01002097 * This modules adds support for the AES-NI instructions on x86.
Manuel Pégourié-Gonnard92ac76f2013-12-16 17:12:53 +01002098 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002099#define MBEDTLS_AESNI_C
Manuel Pégourié-Gonnard92ac76f2013-12-16 17:12:53 +01002100
2101/**
Jerry Yu2fddfd72023-01-10 16:32:03 +08002102 * \def MBEDTLS_AESCE_C
2103 *
Dave Rodgmanf918d422023-03-17 17:52:23 +00002104 * Enable AES cryptographic extension support on 64-bit Arm.
Jerry Yu2fddfd72023-01-10 16:32:03 +08002105 *
2106 * Module: library/aesce.c
2107 * Caller: library/aes.c
2108 *
Jerry Yuf015a932023-04-25 10:38:03 +08002109 * Requires: MBEDTLS_AES_C
Jerry Yu2fddfd72023-01-10 16:32:03 +08002110 *
Dave Rodgmanf918d422023-03-17 17:52:23 +00002111 * \warning Runtime detection only works on Linux. For non-Linux operating
2112 * system, Armv8-A Cryptographic Extensions must be supported by
2113 * the CPU when this option is enabled.
Jerry Yu2fddfd72023-01-10 16:32:03 +08002114 *
Jerry Yua1a039d2023-04-26 10:21:42 +08002115 * \note Minimum compiler versions for this feature are Clang 4.0,
2116 * GCC 6.0 or MSVC 2019 version 16.11.2.
Jerry Yu2fddfd72023-01-10 16:32:03 +08002117 *
Dave Rodgmanf918d422023-03-17 17:52:23 +00002118 * This module adds support for the AES Armv8-A Cryptographic Extensions on Aarch64 systems.
Jerry Yu2fddfd72023-01-10 16:32:03 +08002119 */
2120#define MBEDTLS_AESCE_C
2121
2122/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002123 * \def MBEDTLS_AES_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002124 *
2125 * Enable the AES block cipher.
2126 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002127 * Module: library/aes.c
Manuel Pégourié-Gonnardfdd43542018-02-28 10:49:02 +01002128 * Caller: library/cipher.c
Paul Bakker96743fc2011-02-12 14:30:57 +00002129 * library/pem.c
Paul Bakker6083fd22011-12-03 21:45:14 +00002130 * library/ctr_drbg.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002131 *
Paul Bakker645ce3a2012-10-31 12:32:41 +00002132 * This module enables the following ciphersuites (if other requisites are
2133 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002134 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
2135 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
2136 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
2137 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
2138 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
2139 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
2140 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
2141 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
2142 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
2143 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
2144 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
2145 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
2146 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
2147 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
2148 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
2149 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
2150 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
2151 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
2152 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
2153 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
2154 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
2155 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
2156 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
2157 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
2158 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
2159 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
2160 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
2161 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
2162 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
2163 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
2164 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
2165 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
2166 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
2167 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
2168 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
2169 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
2170 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
2171 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
2172 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
2173 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
2174 * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384
2175 * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
2176 * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA
2177 * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256
2178 * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256
2179 * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA
2180 * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
2181 * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
2182 * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA
2183 * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
2184 * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
2185 * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA
2186 * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
2187 * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
2188 * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
2189 * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
2190 * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
2191 * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
Paul Bakker6deb37e2013-02-19 13:17:08 +01002192 *
Paul Bakkercff68422013-09-15 20:43:33 +02002193 * PEM_PARSE uses AES for decrypting encrypted keys.
Paul Bakker5121ce52009-01-03 21:22:43 +00002194 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002195#define MBEDTLS_AES_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002196
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002197/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002198 * \def MBEDTLS_ASN1_PARSE_C
Paul Bakkerefc30292011-11-10 14:43:23 +00002199 *
2200 * Enable the generic ASN1 parser.
2201 *
2202 * Module: library/asn1.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002203 * Caller: library/x509.c
2204 * library/dhm.c
2205 * library/pkcs12.c
2206 * library/pkcs5.c
2207 * library/pkparse.c
Paul Bakkerefc30292011-11-10 14:43:23 +00002208 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002209#define MBEDTLS_ASN1_PARSE_C
Paul Bakkerefc30292011-11-10 14:43:23 +00002210
2211/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002212 * \def MBEDTLS_ASN1_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00002213 *
2214 * Enable the generic ASN1 writer.
2215 *
2216 * Module: library/asn1write.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002217 * Caller: library/ecdsa.c
2218 * library/pkwrite.c
2219 * library/x509_create.c
2220 * library/x509write_crt.c
Simon Butcher2cb47392016-11-04 12:23:11 +00002221 * library/x509write_csr.c
Paul Bakkerbdb912d2012-02-13 23:11:30 +00002222 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002223#define MBEDTLS_ASN1_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00002224
2225/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002226 * \def MBEDTLS_BASE64_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002227 *
2228 * Enable the Base64 module.
2229 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002230 * Module: library/base64.c
Paul Bakker5690efc2011-05-26 13:16:06 +00002231 * Caller: library/pem.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002232 *
Paul Bakker5690efc2011-05-26 13:16:06 +00002233 * This module is required for PEM support (required by X.509).
Paul Bakker5121ce52009-01-03 21:22:43 +00002234 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002235#define MBEDTLS_BASE64_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002236
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002237/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002238 * \def MBEDTLS_BIGNUM_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002239 *
Paul Bakker9a736322012-11-14 12:39:52 +00002240 * Enable the multi-precision integer library.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002241 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002242 * Module: library/bignum.c
Janos Follath3ca07752022-08-09 11:45:47 +01002243 * library/bignum_core.c
Janos Follathd1baedb2022-08-09 13:44:53 +01002244 * library/bignum_mod.c
Gabor Mezeid41f6272022-08-12 15:20:21 +02002245 * library/bignum_mod_raw.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002246 * Caller: library/dhm.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002247 * library/ecp.c
Manuel Pégourié-Gonnardbf319772014-06-25 13:00:17 +02002248 * library/ecdsa.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002249 * library/rsa.c
Chris Jones3848e312021-03-11 16:17:59 +00002250 * library/rsa_alt_helpers.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002251 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002252 *
Manuel Pégourié-Gonnardbf319772014-06-25 13:00:17 +02002253 * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.
Paul Bakker5121ce52009-01-03 21:22:43 +00002254 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002255#define MBEDTLS_BIGNUM_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002256
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002257/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002258 * \def MBEDTLS_CAMELLIA_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002259 *
2260 * Enable the Camellia block cipher.
2261 *
Paul Bakker38119b12009-01-10 23:31:23 +00002262 * Module: library/camellia.c
Manuel Pégourié-Gonnardfdd43542018-02-28 10:49:02 +01002263 * Caller: library/cipher.c
Paul Bakker38119b12009-01-10 23:31:23 +00002264 *
Paul Bakker645ce3a2012-10-31 12:32:41 +00002265 * This module enables the following ciphersuites (if other requisites are
2266 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002267 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
2268 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
2269 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
2270 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
2271 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
2272 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
2273 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
2274 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
2275 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
2276 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
2277 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
2278 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
2279 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
2280 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
2281 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
2282 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
2283 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
2284 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
2285 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
2286 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
2287 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
2288 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
2289 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
2290 * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
2291 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
2292 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
2293 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
2294 * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
2295 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
2296 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
2297 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
2298 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
2299 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
2300 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
2301 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
2302 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
2303 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
2304 * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
2305 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
2306 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
2307 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
2308 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakker38119b12009-01-10 23:31:23 +00002309 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002310#define MBEDTLS_CAMELLIA_C
Paul Bakker38119b12009-01-10 23:31:23 +00002311
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002312/**
Markku-Juhani O. Saarinen3c0b53b2017-11-30 16:00:34 +00002313 * \def MBEDTLS_ARIA_C
2314 *
Manuel Pégourié-Gonnard525168c2018-02-28 10:47:02 +01002315 * Enable the ARIA block cipher.
Markku-Juhani O. Saarinen3c0b53b2017-11-30 16:00:34 +00002316 *
2317 * Module: library/aria.c
Manuel Pégourié-Gonnard525168c2018-02-28 10:47:02 +01002318 * Caller: library/cipher.c
2319 *
2320 * This module enables the following ciphersuites (if other requisites are
2321 * enabled as well):
2322 *
2323 * MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256
2324 * MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384
2325 * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256
2326 * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384
2327 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256
2328 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384
2329 * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256
2330 * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384
2331 * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256
2332 * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384
2333 * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256
2334 * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384
2335 * MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256
2336 * MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384
2337 * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256
2338 * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384
2339 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256
2340 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384
2341 * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256
2342 * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384
2343 * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256
2344 * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384
2345 * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256
2346 * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384
2347 * MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256
2348 * MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384
2349 * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256
2350 * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384
2351 * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256
2352 * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384
2353 * MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256
2354 * MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384
2355 * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256
2356 * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384
2357 * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256
2358 * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384
2359 * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256
2360 * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384
Markku-Juhani O. Saarinen3c0b53b2017-11-30 16:00:34 +00002361 */
TRodziewicz85aff9f2021-04-23 10:47:26 +02002362#define MBEDTLS_ARIA_C
Markku-Juhani O. Saarinen3c0b53b2017-11-30 16:00:34 +00002363
2364/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002365 * \def MBEDTLS_CCM_C
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +02002366 *
2367 * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.
2368 *
2369 * Module: library/ccm.c
2370 *
Przemek Stekielea805b42022-05-02 10:30:03 +02002371 * Requires: MBEDTLS_CIPHER_C, MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C or
2372 * MBEDTLS_ARIA_C
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +02002373 *
2374 * This module enables the AES-CCM ciphersuites, if other requisites are
2375 * enabled as well.
2376 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002377#define MBEDTLS_CCM_C
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +02002378
2379/**
Daniel King34b822c2016-05-15 17:28:08 -03002380 * \def MBEDTLS_CHACHA20_C
2381 *
2382 * Enable the ChaCha20 stream cipher.
2383 *
2384 * Module: library/chacha20.c
2385 */
2386#define MBEDTLS_CHACHA20_C
2387
2388/**
Manuel Pégourié-Gonnarde533b222018-06-04 12:23:19 +02002389 * \def MBEDTLS_CHACHAPOLY_C
2390 *
2391 * Enable the ChaCha20-Poly1305 AEAD algorithm.
2392 *
2393 * Module: library/chachapoly.c
2394 *
2395 * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C
2396 */
2397#define MBEDTLS_CHACHAPOLY_C
2398
2399/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002400 * \def MBEDTLS_CIPHER_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002401 *
2402 * Enable the generic cipher layer.
2403 *
Paul Bakker8123e9d2011-01-06 15:37:30 +00002404 * Module: library/cipher.c
Przemek Stekielea805b42022-05-02 10:30:03 +02002405 * Caller: library/ccm.c
2406 * library/cmac.c
2407 * library/gcm.c
2408 * library/nist_kw.c
Przemek Stekielea805b42022-05-02 10:30:03 +02002409 * library/pkcs12.c
2410 * library/pkcs5.c
2411 * library/psa_crypto_aead.c
2412 * library/psa_crypto_mac.c
2413 * library/ssl_ciphersuites.c
2414 * library/ssl_msg.c
Przemek Stekiela09f8352022-05-12 09:34:28 +02002415 * library/ssl_ticket.c (unless MBEDTLS_USE_PSA_CRYPTO is enabled)
Paul Bakker8123e9d2011-01-06 15:37:30 +00002416 *
2417 * Uncomment to enable generic cipher wrappers.
2418 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002419#define MBEDTLS_CIPHER_C
Paul Bakker8123e9d2011-01-06 15:37:30 +00002420
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002421/**
Robert Cragiedc5c7b92015-12-11 15:49:45 +00002422 * \def MBEDTLS_CMAC_C
2423 *
Simon Butcher327398a2016-10-05 14:09:11 +01002424 * Enable the CMAC (Cipher-based Message Authentication Code) mode for block
2425 * ciphers.
Robert Cragiedc5c7b92015-12-11 15:49:45 +00002426 *
Steven Cooremanc338cef2021-04-26 11:24:44 +02002427 * \note When #MBEDTLS_CMAC_ALT is active, meaning that the underlying
2428 * implementation of the CMAC algorithm is provided by an alternate
2429 * implementation, that alternate implementation may opt to not support
2430 * AES-192 or 3DES as underlying block ciphers for the CMAC operation.
2431 *
Robert Cragiedc5c7b92015-12-11 15:49:45 +00002432 * Module: library/cmac.c
2433 *
Przemek Stekielea805b42022-05-02 10:30:03 +02002434 * Requires: MBEDTLS_CIPHER_C, MBEDTLS_AES_C or MBEDTLS_DES_C
Robert Cragiedc5c7b92015-12-11 15:49:45 +00002435 *
2436 */
TRodziewicz85aff9f2021-04-23 10:47:26 +02002437#define MBEDTLS_CMAC_C
Robert Cragiedc5c7b92015-12-11 15:49:45 +00002438
2439/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002440 * \def MBEDTLS_CTR_DRBG_C
Paul Bakker0e04d0e2011-11-27 14:46:59 +00002441 *
Nir Sonnenscheince266e42018-08-29 10:11:46 +03002442 * Enable the CTR_DRBG AES-based random generator.
2443 * The CTR_DRBG generator uses AES-256 by default.
Gilles Peskine1540e5b2019-10-03 14:21:14 +02002444 * To use AES-128 instead, enable \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY above.
Paul Bakker0e04d0e2011-11-27 14:46:59 +00002445 *
Yanray Wang55ef22c2023-06-15 09:57:06 +08002446 * \note AES-128 will be used if \c MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH is set.
2447 *
Gilles Peskine7e279362019-10-03 14:21:39 +02002448 * \note To achieve a 256-bit security strength with CTR_DRBG,
2449 * you must use AES-256 *and* use sufficient entropy.
2450 * See ctr_drbg.h for more details.
Paul Bakker0e04d0e2011-11-27 14:46:59 +00002451 *
2452 * Module: library/ctr_drbg.c
2453 * Caller:
2454 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002455 * Requires: MBEDTLS_AES_C
Paul Bakker6083fd22011-12-03 21:45:14 +00002456 *
Nir Sonnenschein521e8a92018-09-03 14:10:52 +03002457 * This module provides the CTR_DRBG AES random number generator.
Paul Bakker0e04d0e2011-11-27 14:46:59 +00002458 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002459#define MBEDTLS_CTR_DRBG_C
Paul Bakker0e04d0e2011-11-27 14:46:59 +00002460
2461/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002462 * \def MBEDTLS_DEBUG_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002463 *
2464 * Enable the debug functions.
2465 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002466 * Module: library/debug.c
Ronald Cronde1adee2022-03-07 16:20:30 +01002467 * Caller: library/ssl_msg.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002468 * library/ssl_tls.c
Ronald Cronde1adee2022-03-07 16:20:30 +01002469 * library/ssl_tls12_*.c
2470 * library/ssl_tls13_*.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002471 *
2472 * This module provides debugging functions.
2473 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002474#define MBEDTLS_DEBUG_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002475
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002476/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002477 * \def MBEDTLS_DES_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002478 *
2479 * Enable the DES block cipher.
2480 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002481 * Module: library/des.c
Paul Bakker6deb37e2013-02-19 13:17:08 +01002482 * Caller: library/pem.c
Manuel Pégourié-Gonnardfdd43542018-02-28 10:49:02 +01002483 * library/cipher.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002484 *
Paul Bakkercff68422013-09-15 20:43:33 +02002485 * PEM_PARSE uses DES/3DES for decrypting encrypted keys.
Hanno Beckerbbca8c52017-09-25 14:53:51 +01002486 *
Dave Rodgmanc04515b2023-02-02 10:47:58 +00002487 * \warning DES/3DES are considered weak ciphers and their use constitutes a
Hanno Beckerbbca8c52017-09-25 14:53:51 +01002488 * security risk. We recommend considering stronger ciphers instead.
Paul Bakker5121ce52009-01-03 21:22:43 +00002489 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002490#define MBEDTLS_DES_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002491
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002492/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002493 * \def MBEDTLS_DHM_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002494 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02002495 * Enable the Diffie-Hellman-Merkle module.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002496 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002497 * Module: library/dhm.c
Ronald Cronde1adee2022-03-07 16:20:30 +01002498 * Caller: library/ssl_tls.c
2499 * library/ssl*_client.c
2500 * library/ssl*_server.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002501 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02002502 * This module is used by the following key exchanges:
2503 * DHE-RSA, DHE-PSK
Hanno Beckera2f6b722017-09-28 10:33:29 +01002504 *
Hanno Beckerf9734b32017-10-03 12:09:22 +01002505 * \warning Using DHE constitutes a security risk as it
2506 * is not possible to validate custom DH parameters.
2507 * If possible, it is recommended users should consider
2508 * preferring other methods of key exchange.
2509 * See dhm.h for more details.
Hanno Beckera2f6b722017-09-28 10:33:29 +01002510 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002511 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002512#define MBEDTLS_DHM_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002513
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002514/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002515 * \def MBEDTLS_ECDH_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002516 *
2517 * Enable the elliptic curve Diffie-Hellman library.
2518 *
2519 * Module: library/ecdh.c
Ronald Cronde1adee2022-03-07 16:20:30 +01002520 * Caller: library/psa_crypto.c
2521 * library/ssl_tls.c
2522 * library/ssl*_client.c
2523 * library/ssl*_server.c
Paul Bakker41c83d32013-03-20 14:39:14 +01002524 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02002525 * This module is used by the following key exchanges:
2526 * ECDHE-ECDSA, ECDHE-RSA, DHE-PSK
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002527 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002528 * Requires: MBEDTLS_ECP_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002529 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002530#define MBEDTLS_ECDH_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002531
2532/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002533 * \def MBEDTLS_ECDSA_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002534 *
2535 * Enable the elliptic curve DSA library.
2536 *
2537 * Module: library/ecdsa.c
2538 * Caller:
2539 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02002540 * This module is used by the following key exchanges:
2541 * ECDHE-ECDSA
2542 *
Gilles Peskine799e5762018-09-14 17:34:00 +02002543 * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C,
2544 * and at least one MBEDTLS_ECP_DP_XXX_ENABLED for a
2545 * short Weierstrass curve.
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002546 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002547#define MBEDTLS_ECDSA_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002548
2549/**
Manuel Pégourié-Gonnard4d8685b2015-08-05 15:44:42 +02002550 * \def MBEDTLS_ECJPAKE_C
2551 *
2552 * Enable the elliptic curve J-PAKE library.
2553 *
Tomasz Rodziewicz532ca932021-05-07 11:01:24 +02002554 * \note EC J-PAKE support is based on the Thread v1.0.0 specification.
2555 * It has not been reviewed for compliance with newer standards such as
Tomasz Rodziewicz1fc7c4c2021-05-07 10:13:31 +02002556 * Thread v1.1 or RFC 8236.
Manuel Pégourié-Gonnard75df9022015-09-16 23:21:01 +02002557 *
Manuel Pégourié-Gonnard4d8685b2015-08-05 15:44:42 +02002558 * Module: library/ecjpake.c
2559 * Caller:
2560 *
2561 * This module is used by the following key exchanges:
2562 * ECJPAKE
2563 *
Manuel Pégourié-Gonnard72687b72022-09-15 12:23:58 +02002564 * Requires: MBEDTLS_ECP_C and either MBEDTLS_MD_C or MBEDTLS_PSA_CRYPTO_C
Neil Armstrongecaba1c2022-08-11 10:47:08 +02002565 *
Manuel Pégourié-Gonnard41bc8b62023-03-14 23:59:24 +01002566 * \warning If using a hash that is only provided by PSA drivers, you must
2567 * call psa_crypto_init() before doing any EC J-PAKE operations.
Manuel Pégourié-Gonnard4d8685b2015-08-05 15:44:42 +02002568 */
Tomasz Rodziewiczb1336052021-04-22 15:14:17 +02002569#define MBEDTLS_ECJPAKE_C
Manuel Pégourié-Gonnard4d8685b2015-08-05 15:44:42 +02002570
2571/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002572 * \def MBEDTLS_ECP_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002573 *
2574 * Enable the elliptic curve over GF(p) library.
2575 *
2576 * Module: library/ecp.c
2577 * Caller: library/ecdh.c
2578 * library/ecdsa.c
Manuel Pégourié-Gonnard4d8685b2015-08-05 15:44:42 +02002579 * library/ecjpake.c
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002580 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002581 * Requires: MBEDTLS_BIGNUM_C and at least one MBEDTLS_ECP_DP_XXX_ENABLED
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002582 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002583#define MBEDTLS_ECP_C
Paul Bakkerd589a0d2013-03-13 16:30:17 +01002584
2585/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002586 * \def MBEDTLS_ENTROPY_C
Paul Bakker6083fd22011-12-03 21:45:14 +00002587 *
2588 * Enable the platform-specific entropy code.
2589 *
2590 * Module: library/entropy.c
2591 * Caller:
2592 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002593 * Requires: MBEDTLS_SHA512_C or MBEDTLS_SHA256_C
Paul Bakker6083fd22011-12-03 21:45:14 +00002594 *
2595 * This module provides a generic entropy pool
2596 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002597#define MBEDTLS_ENTROPY_C
Paul Bakker6083fd22011-12-03 21:45:14 +00002598
2599/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002600 * \def MBEDTLS_ERROR_C
Paul Bakker9d781402011-05-09 16:17:09 +00002601 *
2602 * Enable error code to error string conversion.
2603 *
2604 * Module: library/error.c
2605 * Caller:
2606 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002607 * This module enables mbedtls_strerror().
Paul Bakker9d781402011-05-09 16:17:09 +00002608 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002609#define MBEDTLS_ERROR_C
Paul Bakker9d781402011-05-09 16:17:09 +00002610
2611/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002612 * \def MBEDTLS_GCM_C
Paul Bakker89e80c92012-03-20 13:50:09 +00002613 *
Jaeden Amero7accf442019-04-10 18:13:57 +01002614 * Enable the Galois/Counter Mode (GCM).
Paul Bakker89e80c92012-03-20 13:50:09 +00002615 *
2616 * Module: library/gcm.c
2617 *
Przemek Stekielea805b42022-05-02 10:30:03 +02002618 * Requires: MBEDTLS_CIPHER_C, MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C or
2619 * MBEDTLS_ARIA_C
Paul Bakker645ce3a2012-10-31 12:32:41 +00002620 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02002621 * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other
2622 * requisites are enabled as well.
Paul Bakker89e80c92012-03-20 13:50:09 +00002623 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002624#define MBEDTLS_GCM_C
Paul Bakker89e80c92012-03-20 13:50:09 +00002625
2626/**
Thomas Fossati656864b2016-07-17 08:51:22 +01002627 * \def MBEDTLS_HKDF_C
2628 *
2629 * Enable the HKDF algorithm (RFC 5869).
2630 *
2631 * Module: library/hkdf.c
2632 * Caller:
2633 *
2634 * Requires: MBEDTLS_MD_C
2635 *
2636 * This module adds support for the Hashed Message Authentication Code
2637 * (HMAC)-based key derivation function (HKDF).
2638 */
2639#define MBEDTLS_HKDF_C
2640
2641/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002642 * \def MBEDTLS_HMAC_DRBG_C
Manuel Pégourié-Gonnard490bdf32014-01-27 14:03:10 +01002643 *
2644 * Enable the HMAC_DRBG random generator.
2645 *
2646 * Module: library/hmac_drbg.c
2647 * Caller:
2648 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002649 * Requires: MBEDTLS_MD_C
Manuel Pégourié-Gonnard490bdf32014-01-27 14:03:10 +01002650 *
Tom Cosgrove1e211442022-05-26 11:51:00 +01002651 * Uncomment to enable the HMAC_DRBG random number generator.
Manuel Pégourié-Gonnard490bdf32014-01-27 14:03:10 +01002652 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002653#define MBEDTLS_HMAC_DRBG_C
Manuel Pégourié-Gonnard490bdf32014-01-27 14:03:10 +01002654
2655/**
Raef Coles8ff6df52021-07-21 12:42:15 +01002656 * \def MBEDTLS_LMS_C
2657 *
2658 * Enable the LMS stateful-hash asymmetric signature algorithm.
2659 *
2660 * Module: library/lms.c
2661 * Caller:
2662 *
Raef Colesab4f8742022-09-01 12:24:31 +01002663 * Requires: MBEDTLS_PSA_CRYPTO_C
Raef Coles8ff6df52021-07-21 12:42:15 +01002664 *
Raef Colesab4f8742022-09-01 12:24:31 +01002665 * Uncomment to enable the LMS verification algorithm and public key operations.
Raef Coles8ff6df52021-07-21 12:42:15 +01002666 */
2667#define MBEDTLS_LMS_C
2668
2669/**
Raef Colesab4f8742022-09-01 12:24:31 +01002670 * \def MBEDTLS_LMS_PRIVATE
2671 *
2672 * Enable LMS private-key operations and signing code. Functions enabled by this
2673 * option are experimental, and should not be used in production.
2674 *
2675 * Requires: MBEDTLS_LMS_C
2676 *
2677 * Uncomment to enable the LMS signature algorithm and private key operations.
2678 */
Raef Coles5127e852022-10-07 10:35:56 +01002679//#define MBEDTLS_LMS_PRIVATE
Raef Colesab4f8742022-09-01 12:24:31 +01002680
2681/**
Ron Eldor466a57f2018-05-03 16:54:28 +03002682 * \def MBEDTLS_NIST_KW_C
2683 *
2684 * Enable the Key Wrapping mode for 128-bit block ciphers,
2685 * as defined in NIST SP 800-38F. Only KW and KWP modes
2686 * are supported. At the moment, only AES is approved by NIST.
2687 *
2688 * Module: library/nist_kw.c
2689 *
2690 * Requires: MBEDTLS_AES_C and MBEDTLS_CIPHER_C
2691 */
TRodziewicz85aff9f2021-04-23 10:47:26 +02002692#define MBEDTLS_NIST_KW_C
Ron Eldor466a57f2018-05-03 16:54:28 +03002693
2694/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002695 * \def MBEDTLS_MD_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002696 *
Manuel Pégourié-Gonnardb9b630d2023-02-16 19:07:31 +01002697 * Enable the generic layer for message digest (hashing) and HMAC.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002698 *
Manuel Pégourié-Gonnard1f7f7172022-07-18 12:04:05 +02002699 * Requires: one of: MBEDTLS_MD5_C, MBEDTLS_RIPEMD160_C, MBEDTLS_SHA1_C,
2700 * MBEDTLS_SHA224_C, MBEDTLS_SHA256_C, MBEDTLS_SHA384_C,
Manuel Pégourié-Gonnard161dca62023-03-21 16:22:59 +01002701 * MBEDTLS_SHA512_C, or MBEDTLS_PSA_CRYPTO_C with at least
Manuel Pégourié-Gonnard534d64d2023-03-14 17:43:06 +01002702 * one hash.
Simon Butcher2cb47392016-11-04 12:23:11 +00002703 * Module: library/md.c
Przemek Stekiel6aadf0b2022-04-27 14:46:52 +02002704 * Caller: library/constant_time.c
2705 * library/ecdsa.c
2706 * library/ecjpake.c
2707 * library/hkdf.c
2708 * library/hmac_drbg.c
Przemek Stekiel6aadf0b2022-04-27 14:46:52 +02002709 * library/pk.c
2710 * library/pkcs5.c
2711 * library/pkcs12.c
2712 * library/psa_crypto_ecp.c
2713 * library/psa_crypto_rsa.c
2714 * library/rsa.c
2715 * library/ssl_cookie.c
2716 * library/ssl_msg.c
2717 * library/ssl_tls.c
Przemek Stekiel6e712822022-05-06 11:40:20 +02002718 * library/x509.c
Przemek Stekiel6aadf0b2022-04-27 14:46:52 +02002719 * library/x509_crt.c
2720 * library/x509write_crt.c
2721 * library/x509write_csr.c
Paul Bakker17373852011-01-06 14:20:01 +00002722 *
2723 * Uncomment to enable generic message digest wrappers.
2724 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002725#define MBEDTLS_MD_C
Paul Bakker17373852011-01-06 14:20:01 +00002726
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002727/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002728 * \def MBEDTLS_MD5_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002729 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002730 * Enable the MD5 hash algorithm.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002731 *
Simon Butcher2cb47392016-11-04 12:23:11 +00002732 * Module: library/md5.c
2733 * Caller: library/md.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002734 * library/pem.c
Paul Bakker6deb37e2013-02-19 13:17:08 +01002735 * library/ssl_tls.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002736 *
TRodziewicz0f82ec62021-05-12 17:49:18 +02002737 * This module is required for TLS 1.2 depending on the handshake parameters.
2738 * Further, it is used for checking MD5-signed certificates, and for PBKDF1
2739 * when decrypting PEM-encoded encrypted keys.
Hanno Beckerbbca8c52017-09-25 14:53:51 +01002740 *
2741 * \warning MD5 is considered a weak message digest and its use constitutes a
2742 * security risk. If possible, we recommend avoiding dependencies on
2743 * it, and considering stronger message digests instead.
2744 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002745 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002746#define MBEDTLS_MD5_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002747
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002748/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002749 * \def MBEDTLS_MEMORY_BUFFER_ALLOC_C
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002750 *
2751 * Enable the buffer allocator implementation that makes use of a (stack)
Manuel Pégourié-Gonnardb9ef1182015-05-26 16:15:20 +02002752 * based buffer to 'allocate' dynamic memory. (replaces calloc() and free()
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002753 * calls)
Paul Bakker6e339b52013-07-03 13:37:05 +02002754 *
2755 * Module: library/memory_buffer_alloc.c
2756 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002757 * Requires: MBEDTLS_PLATFORM_C
2758 * MBEDTLS_PLATFORM_MEMORY (to use it within mbed TLS)
Paul Bakker6e339b52013-07-03 13:37:05 +02002759 *
2760 * Enable this module to enable the buffer memory allocator.
Paul Bakker6e339b52013-07-03 13:37:05 +02002761 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002762//#define MBEDTLS_MEMORY_BUFFER_ALLOC_C
Paul Bakker6e339b52013-07-03 13:37:05 +02002763
2764/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002765 * \def MBEDTLS_NET_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002766 *
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +01002767 * Enable the TCP and UDP over IPv6/IPv4 networking routines.
2768 *
Simon Butcherd567a232016-03-09 20:19:21 +00002769 * \note This module only works on POSIX/Unix (including Linux, BSD and OS X)
2770 * and Windows. For other platforms, you'll want to disable it, and write your
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +01002771 * own networking callbacks to be passed to \c mbedtls_ssl_set_bio().
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002772 *
Manuel Pégourié-Gonnard02049dc2016-02-22 16:42:51 +00002773 * \note See also our Knowledge Base article about porting to a new
2774 * environment:
Dave Rodgmanb3196842022-10-12 16:47:08 +01002775 * https://mbed-tls.readthedocs.io/en/latest/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
Manuel Pégourié-Gonnard02049dc2016-02-22 16:42:51 +00002776 *
Andres AG788aa4a2016-09-14 14:32:09 +01002777 * Module: library/net_sockets.c
Paul Bakker5121ce52009-01-03 21:22:43 +00002778 *
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +01002779 * This module provides networking routines.
Paul Bakker5121ce52009-01-03 21:22:43 +00002780 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002781#define MBEDTLS_NET_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002782
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002783/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002784 * \def MBEDTLS_OID_C
Paul Bakkerc70b9822013-04-07 22:00:46 +02002785 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002786 * Enable the OID database.
Paul Bakkerc70b9822013-04-07 22:00:46 +02002787 *
2788 * Module: library/oid.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002789 * Caller: library/asn1write.c
2790 * library/pkcs5.c
2791 * library/pkparse.c
2792 * library/pkwrite.c
2793 * library/rsa.c
2794 * library/x509.c
2795 * library/x509_create.c
Simon Butcher2cb47392016-11-04 12:23:11 +00002796 * library/x509_crl.c
2797 * library/x509_crt.c
2798 * library/x509_csr.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002799 * library/x509write_crt.c
Simon Butcher2cb47392016-11-04 12:23:11 +00002800 * library/x509write_csr.c
Paul Bakkerc70b9822013-04-07 22:00:46 +02002801 *
2802 * This modules translates between OIDs and internal values.
2803 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002804#define MBEDTLS_OID_C
Paul Bakkerc70b9822013-04-07 22:00:46 +02002805
2806/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002807 * \def MBEDTLS_PADLOCK_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002808 *
2809 * Enable VIA Padlock support on x86.
2810 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002811 * Module: library/padlock.c
2812 * Caller: library/aes.c
2813 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002814 * Requires: MBEDTLS_HAVE_ASM
Manuel Pégourié-Gonnard92ac76f2013-12-16 17:12:53 +01002815 *
Paul Bakker5121ce52009-01-03 21:22:43 +00002816 * This modules adds support for the VIA PadLock on x86.
2817 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002818#define MBEDTLS_PADLOCK_C
Paul Bakker5121ce52009-01-03 21:22:43 +00002819
Paul Bakkerf3b86c12011-01-27 15:24:17 +00002820/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002821 * \def MBEDTLS_PEM_PARSE_C
Paul Bakker96743fc2011-02-12 14:30:57 +00002822 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002823 * Enable PEM decoding / parsing.
Paul Bakker96743fc2011-02-12 14:30:57 +00002824 *
2825 * Module: library/pem.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002826 * Caller: library/dhm.c
Paul Bakkercff68422013-09-15 20:43:33 +02002827 * library/pkparse.c
Simon Butcher2cb47392016-11-04 12:23:11 +00002828 * library/x509_crl.c
2829 * library/x509_crt.c
2830 * library/x509_csr.c
Paul Bakker96743fc2011-02-12 14:30:57 +00002831 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002832 * Requires: MBEDTLS_BASE64_C
Manuel Pégourié-Gonnard1c2008f2023-03-16 10:20:29 +01002833 * optionally MBEDTLS_MD5_C, or PSA Crypto with MD5 (see below)
2834 *
2835 * \warning When parsing password-protected files, if MD5 is provided only by
2836 * a PSA driver, you must call psa_crypto_init() before the first file.
Paul Bakker5690efc2011-05-26 13:16:06 +00002837 *
Paul Bakkercff68422013-09-15 20:43:33 +02002838 * This modules adds support for decoding / parsing PEM files.
Paul Bakker96743fc2011-02-12 14:30:57 +00002839 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002840#define MBEDTLS_PEM_PARSE_C
Paul Bakkercff68422013-09-15 20:43:33 +02002841
2842/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002843 * \def MBEDTLS_PEM_WRITE_C
Paul Bakkercff68422013-09-15 20:43:33 +02002844 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002845 * Enable PEM encoding / writing.
Paul Bakkercff68422013-09-15 20:43:33 +02002846 *
2847 * Module: library/pem.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002848 * Caller: library/pkwrite.c
2849 * library/x509write_crt.c
Simon Butcher2cb47392016-11-04 12:23:11 +00002850 * library/x509write_csr.c
Paul Bakkercff68422013-09-15 20:43:33 +02002851 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002852 * Requires: MBEDTLS_BASE64_C
Paul Bakkercff68422013-09-15 20:43:33 +02002853 *
2854 * This modules adds support for encoding / writing PEM files.
2855 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002856#define MBEDTLS_PEM_WRITE_C
Paul Bakker96743fc2011-02-12 14:30:57 +00002857
2858/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002859 * \def MBEDTLS_PK_C
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02002860 *
Shaun Case8b0ecbc2021-12-20 21:14:10 -08002861 * Enable the generic public (asymmetric) key layer.
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02002862 *
2863 * Module: library/pk.c
Ronald Cronde1adee2022-03-07 16:20:30 +01002864 * Caller: library/psa_crypto_rsa.c
2865 * library/ssl_tls.c
2866 * library/ssl*_client.c
2867 * library/ssl*_server.c
2868 * library/x509.c
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02002869 *
Przemek Stekiel6aadf0b2022-04-27 14:46:52 +02002870 * Requires: MBEDTLS_MD_C, MBEDTLS_RSA_C or MBEDTLS_ECP_C
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02002871 *
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02002872 * Uncomment to enable generic public key wrappers.
2873 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002874#define MBEDTLS_PK_C
Manuel Pégourié-Gonnardc40b4c32013-08-22 13:29:31 +02002875
2876/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002877 * \def MBEDTLS_PK_PARSE_C
Paul Bakker4606c732013-09-15 17:04:23 +02002878 *
Shaun Case8b0ecbc2021-12-20 21:14:10 -08002879 * Enable the generic public (asymmetric) key parser.
Paul Bakker4606c732013-09-15 17:04:23 +02002880 *
2881 * Module: library/pkparse.c
Simon Butcher2cb47392016-11-04 12:23:11 +00002882 * Caller: library/x509_crt.c
2883 * library/x509_csr.c
Paul Bakker4606c732013-09-15 17:04:23 +02002884 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002885 * Requires: MBEDTLS_PK_C
Paul Bakker4606c732013-09-15 17:04:23 +02002886 *
2887 * Uncomment to enable generic public key parse functions.
2888 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002889#define MBEDTLS_PK_PARSE_C
Paul Bakker4606c732013-09-15 17:04:23 +02002890
2891/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002892 * \def MBEDTLS_PK_WRITE_C
Paul Bakker4606c732013-09-15 17:04:23 +02002893 *
Shaun Case8b0ecbc2021-12-20 21:14:10 -08002894 * Enable the generic public (asymmetric) key writer.
Paul Bakker4606c732013-09-15 17:04:23 +02002895 *
2896 * Module: library/pkwrite.c
2897 * Caller: library/x509write.c
2898 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002899 * Requires: MBEDTLS_PK_C
Paul Bakker4606c732013-09-15 17:04:23 +02002900 *
2901 * Uncomment to enable generic public key write functions.
2902 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002903#define MBEDTLS_PK_WRITE_C
Paul Bakker4606c732013-09-15 17:04:23 +02002904
2905/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002906 * \def MBEDTLS_PKCS5_C
Paul Bakkerb0c19a42013-06-24 19:26:38 +02002907 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002908 * Enable PKCS#5 functions.
Paul Bakkerb0c19a42013-06-24 19:26:38 +02002909 *
2910 * Module: library/pkcs5.c
2911 *
Manuel Pégourié-Gonnard49e67f82023-03-16 11:39:20 +01002912 * Requires: MBEDTLS_CIPHER_C
Manuel Pégourié-Gonnard161dca62023-03-21 16:22:59 +01002913 * Auto-enables: MBEDTLS_MD_C
Manuel Pégourié-Gonnard72687b72022-09-15 12:23:58 +02002914 *
Manuel Pégourié-Gonnard49e67f82023-03-16 11:39:20 +01002915 * \warning If using a hash that is only provided by PSA drivers, you must
2916 * call psa_crypto_init() before doing any PKCS5 operations.
Manuel Pégourié-Gonnard18a38562022-11-22 11:49:55 +01002917 *
Paul Bakkerb0c19a42013-06-24 19:26:38 +02002918 * This module adds support for the PKCS#5 functions.
2919 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002920#define MBEDTLS_PKCS5_C
Paul Bakkerb0c19a42013-06-24 19:26:38 +02002921
2922/**
Nayna Jainc9deb182020-11-16 19:03:12 +00002923 * \def MBEDTLS_PKCS7_C
2924 *
Dave Rodgman3fe2abf2023-03-10 17:05:54 +00002925 * Enable PKCS #7 core for using PKCS #7-formatted signatures.
Nayna Jainc9deb182020-11-16 19:03:12 +00002926 * RFC Link - https://tools.ietf.org/html/rfc2315
2927 *
2928 * Module: library/pkcs7.c
2929 *
2930 * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
Nick Child89e82e12022-11-09 10:36:10 -06002931 * MBEDTLS_X509_CRT_PARSE_C MBEDTLS_X509_CRL_PARSE_C,
2932 * MBEDTLS_BIGNUM_C, MBEDTLS_MD_C
Nayna Jainc9deb182020-11-16 19:03:12 +00002933 *
Dave Rodgmanefbc5f72023-03-13 12:15:49 +00002934 * This module is required for the PKCS #7 parsing modules.
Nayna Jainc9deb182020-11-16 19:03:12 +00002935 */
Dave Rodgman7c33b0c2023-03-10 15:07:15 +00002936#define MBEDTLS_PKCS7_C
Nayna Jainc9deb182020-11-16 19:03:12 +00002937
2938/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002939 * \def MBEDTLS_PKCS12_C
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02002940 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02002941 * Enable PKCS#12 PBE functions.
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02002942 * Adds algorithms for parsing PKCS#8 encrypted private keys
2943 *
2944 * Module: library/pkcs12.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02002945 * Caller: library/pkparse.c
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02002946 *
Andrzej Kurek7bd12c52022-08-24 10:47:10 -04002947 * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_CIPHER_C and either
2948 * MBEDTLS_MD_C or MBEDTLS_PSA_CRYPTO_C.
2949 *
Manuel Pégourié-Gonnardbe97afe2023-03-16 10:00:54 +01002950 * \warning If using a hash that is only provided by PSA drivers, you must
2951 * call psa_crypto_init() before doing any PKCS12 operations.
Manuel Pégourié-Gonnard18a38562022-11-22 11:49:55 +01002952 *
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02002953 * This module enables PKCS#12 functions.
2954 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002955#define MBEDTLS_PKCS12_C
Paul Bakkerf1f21fe2013-06-24 19:17:19 +02002956
2957/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002958 * \def MBEDTLS_PLATFORM_C
Paul Bakker747a83a2014-02-01 22:50:07 +01002959 *
2960 * Enable the platform abstraction layer that allows you to re-assign
Manuel Pégourié-Gonnard6c0c8e02015-06-22 10:23:34 +02002961 * functions like calloc(), free(), snprintf(), printf(), fprintf(), exit().
Paul Bakker747a83a2014-02-01 22:50:07 +01002962 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002963 * Enabling MBEDTLS_PLATFORM_C enables to use of MBEDTLS_PLATFORM_XXX_ALT
2964 * or MBEDTLS_PLATFORM_XXX_MACRO directives, allowing the functions mentioned
Rich Evans16f8cd82015-02-06 16:14:34 +00002965 * above to be specified at runtime or compile time respectively.
Paul Bakker747a83a2014-02-01 22:50:07 +01002966 *
Manuel Pégourié-Gonnard6c0c8e02015-06-22 10:23:34 +02002967 * \note This abstraction layer must be enabled on Windows (including MSYS2)
Jan Bruckner9ff6f8c2022-08-22 16:05:58 +02002968 * as other modules rely on it for a fixed snprintf implementation.
Manuel Pégourié-Gonnard6c0c8e02015-06-22 10:23:34 +02002969 *
Paul Bakker747a83a2014-02-01 22:50:07 +01002970 * Module: library/platform.c
2971 * Caller: Most other .c files
2972 *
2973 * This module enables abstraction of common (libc) functions.
2974 */
Manuel Pégourié-Gonnardb9ef1182015-05-26 16:15:20 +02002975#define MBEDTLS_PLATFORM_C
Paul Bakker747a83a2014-02-01 22:50:07 +01002976
2977/**
Daniel Kingadc32c02016-05-16 18:25:45 -03002978 * \def MBEDTLS_POLY1305_C
2979 *
2980 * Enable the Poly1305 MAC algorithm.
2981 *
2982 * Module: library/poly1305.c
Manuel Pégourié-Gonnarddca3a5d2018-05-07 10:43:27 +02002983 * Caller: library/chachapoly.c
Daniel Kingadc32c02016-05-16 18:25:45 -03002984 */
2985#define MBEDTLS_POLY1305_C
2986
2987/**
Jaeden Amero484ee332018-10-25 17:38:05 +01002988 * \def MBEDTLS_PSA_CRYPTO_C
2989 *
2990 * Enable the Platform Security Architecture cryptography API.
2991 *
Gilles Peskinee59236f2018-01-27 23:32:46 +01002992 * Module: library/psa_crypto.c
Jaeden Amero484ee332018-10-25 17:38:05 +01002993 *
Przemek Stekielea805b42022-05-02 10:30:03 +02002994 * Requires: MBEDTLS_CIPHER_C,
2995 * either MBEDTLS_CTR_DRBG_C and MBEDTLS_ENTROPY_C,
Gilles Peskine82e57d12020-11-13 21:31:17 +01002996 * or MBEDTLS_HMAC_DRBG_C and MBEDTLS_ENTROPY_C,
Gilles Peskinef08b3f82020-11-13 17:36:48 +01002997 * or MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG.
Jaeden Amero484ee332018-10-25 17:38:05 +01002998 *
2999 */
Manuel Pégourié-Gonnardde7636e2019-02-01 12:33:29 +01003000#define MBEDTLS_PSA_CRYPTO_C
Jaeden Amero484ee332018-10-25 17:38:05 +01003001
3002/**
Gilles Peskinea8ade162019-06-26 11:24:49 +02003003 * \def MBEDTLS_PSA_CRYPTO_SE_C
3004 *
Gilles Peskine98473c42022-06-20 18:46:22 +02003005 * Enable dynamic secure element support in the Platform Security Architecture
Gilles Peskinea8ade162019-06-26 11:24:49 +02003006 * cryptography API.
3007 *
Ronald Crone6e6b752023-01-16 16:56:51 +01003008 * \deprecated This feature is deprecated. Please switch to the PSA driver
3009 * interface.
Gilles Peskined0e66b02019-07-24 13:52:51 +02003010 *
Gilles Peskinea8ade162019-06-26 11:24:49 +02003011 * Module: library/psa_crypto_se.c
3012 *
3013 * Requires: MBEDTLS_PSA_CRYPTO_C, MBEDTLS_PSA_CRYPTO_STORAGE_C
3014 *
3015 */
Gilles Peskined0e66b02019-07-24 13:52:51 +02003016//#define MBEDTLS_PSA_CRYPTO_SE_C
Gilles Peskinea8ade162019-06-26 11:24:49 +02003017
3018/**
Andrzej Kurekc6905232019-02-05 05:23:41 -05003019 * \def MBEDTLS_PSA_CRYPTO_STORAGE_C
3020 *
3021 * Enable the Platform Security Architecture persistent key storage.
3022 *
Darryl Greendb2b8db2018-06-15 13:06:04 +01003023 * Module: library/psa_crypto_storage.c
Andrzej Kurekc6905232019-02-05 05:23:41 -05003024 *
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00003025 * Requires: MBEDTLS_PSA_CRYPTO_C,
3026 * either MBEDTLS_PSA_ITS_FILE_C or a native implementation of
3027 * the PSA ITS interface
Andrzej Kurekc6905232019-02-05 05:23:41 -05003028 */
Darryl Greendb2b8db2018-06-15 13:06:04 +01003029#define MBEDTLS_PSA_CRYPTO_STORAGE_C
Andrzej Kurekc6905232019-02-05 05:23:41 -05003030
3031/**
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00003032 * \def MBEDTLS_PSA_ITS_FILE_C
Andrzej Kurekc6905232019-02-05 05:23:41 -05003033 *
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00003034 * Enable the emulation of the Platform Security Architecture
3035 * Internal Trusted Storage (PSA ITS) over files.
Andrzej Kurekc6905232019-02-05 05:23:41 -05003036 *
Gilles Peskine6194dc22018-11-16 22:24:15 +01003037 * Module: library/psa_its_file.c
Andrzej Kurekc6905232019-02-05 05:23:41 -05003038 *
Jaeden Amero57f4d9e2019-03-15 16:14:19 +00003039 * Requires: MBEDTLS_FS_IO
Andrzej Kurekc6905232019-02-05 05:23:41 -05003040 */
Gilles Peskine6194dc22018-11-16 22:24:15 +01003041#define MBEDTLS_PSA_ITS_FILE_C
Andrzej Kurekc6905232019-02-05 05:23:41 -05003042
3043/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003044 * \def MBEDTLS_RIPEMD160_C
Manuel Pégourié-Gonnardcab4a882014-01-17 12:42:35 +01003045 *
3046 * Enable the RIPEMD-160 hash algorithm.
3047 *
Simon Butcher2cb47392016-11-04 12:23:11 +00003048 * Module: library/ripemd160.c
3049 * Caller: library/md.c
Manuel Pégourié-Gonnardcab4a882014-01-17 12:42:35 +01003050 *
3051 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003052#define MBEDTLS_RIPEMD160_C
Manuel Pégourié-Gonnardcab4a882014-01-17 12:42:35 +01003053
3054/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003055 * \def MBEDTLS_RSA_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003056 *
3057 * Enable the RSA public-key cryptosystem.
3058 *
Paul Bakker5121ce52009-01-03 21:22:43 +00003059 * Module: library/rsa.c
Chris Jones3848e312021-03-11 16:17:59 +00003060 * library/rsa_alt_helpers.c
Ronald Cronde1adee2022-03-07 16:20:30 +01003061 * Caller: library/pk.c
3062 * library/psa_crypto.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003063 * library/ssl_tls.c
Ronald Cronde1adee2022-03-07 16:20:30 +01003064 * library/ssl*_client.c
3065 * library/ssl*_server.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003066 *
Manuel Pégourié-Gonnard9d703732013-10-25 18:01:50 +02003067 * This module is used by the following key exchanges:
3068 * RSA, DHE-RSA, ECDHE-RSA, RSA-PSK
Paul Bakker5690efc2011-05-26 13:16:06 +00003069 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003070 * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003071 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003072#define MBEDTLS_RSA_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003073
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003074/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003075 * \def MBEDTLS_SHA1_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003076 *
3077 * Enable the SHA1 cryptographic hash algorithm.
3078 *
Simon Butcher2cb47392016-11-04 12:23:11 +00003079 * Module: library/sha1.c
3080 * Caller: library/md.c
Ronald Cronde1adee2022-03-07 16:20:30 +01003081 * library/psa_crypto_hash.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003082 *
TRodziewicz0f82ec62021-05-12 17:49:18 +02003083 * This module is required for TLS 1.2 depending on the handshake parameters,
3084 * and for SHA1-signed certificates.
Hanno Beckerbbca8c52017-09-25 14:53:51 +01003085 *
3086 * \warning SHA-1 is considered a weak message digest and its use constitutes
3087 * a security risk. If possible, we recommend avoiding dependencies
3088 * on it, and considering stronger message digests instead.
3089 *
Paul Bakker5121ce52009-01-03 21:22:43 +00003090 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003091#define MBEDTLS_SHA1_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003092
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003093/**
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003094 * \def MBEDTLS_SHA224_C
3095 *
3096 * Enable the SHA-224 cryptographic hash algorithm.
3097 *
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003098 * Module: library/sha256.c
3099 * Caller: library/md.c
3100 * library/ssl_cookie.c
3101 *
3102 * This module adds support for SHA-224.
3103 */
3104#define MBEDTLS_SHA224_C
3105
3106/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003107 * \def MBEDTLS_SHA256_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003108 *
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003109 * Enable the SHA-256 cryptographic hash algorithm.
3110 *
Simon Butcher2cb47392016-11-04 12:23:11 +00003111 * Module: library/sha256.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02003112 * Caller: library/entropy.c
Simon Butcher2cb47392016-11-04 12:23:11 +00003113 * library/md.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02003114 * library/ssl_tls.c
Ronald Cronde1adee2022-03-07 16:20:30 +01003115 * library/ssl*_client.c
3116 * library/ssl*_server.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003117 *
Mateusz Starzyke3c48b42021-04-19 16:46:28 +02003118 * This module adds support for SHA-256.
Paul Bakker769075d2012-11-24 11:26:46 +01003119 * This module is required for the SSL/TLS 1.2 PRF function.
Paul Bakker5121ce52009-01-03 21:22:43 +00003120 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003121#define MBEDTLS_SHA256_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003122
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003123/**
Tom Cosgrovef3ebd902022-02-20 22:25:31 +00003124 * \def MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
3125 *
Gilles Peskine9b3278b2022-06-09 19:09:38 +02003126 * Enable acceleration of the SHA-256 and SHA-224 cryptographic hash algorithms
3127 * with the ARMv8 cryptographic extensions if they are available at runtime.
3128 * If not, the library will fall back to the C implementation.
Tom Cosgrovef3ebd902022-02-20 22:25:31 +00003129 *
3130 * \note If MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT is defined when building
3131 * for a non-Aarch64 build it will be silently ignored.
3132 *
Tom Cosgrovef3ebd902022-02-20 22:25:31 +00003133 * \warning MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT cannot be defined at the
3134 * same time as MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY.
3135 *
3136 * Requires: MBEDTLS_SHA256_C.
3137 *
3138 * Module: library/sha256.c
3139 *
3140 * Uncomment to have the library check for the A64 SHA-256 crypto extensions
3141 * and use them if available.
3142 */
3143//#define MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
3144
3145/**
3146 * \def MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
3147 *
Gilles Peskine9b3278b2022-06-09 19:09:38 +02003148 * Enable acceleration of the SHA-256 and SHA-224 cryptographic hash algorithms
3149 * with the ARMv8 cryptographic extensions, which must be available at runtime
3150 * or else an illegal instruction fault will occur.
Tom Cosgrovef3ebd902022-02-20 22:25:31 +00003151 *
3152 * \note This allows builds with a smaller code size than with
3153 * MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
3154 *
Tom Cosgrovef3ebd902022-02-20 22:25:31 +00003155 * \warning MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY cannot be defined at the same
3156 * time as MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT.
3157 *
3158 * Requires: MBEDTLS_SHA256_C.
3159 *
3160 * Module: library/sha256.c
3161 *
3162 * Uncomment to have the library use the A64 SHA-256 crypto extensions
3163 * unconditionally.
3164 */
3165//#define MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
3166
3167/**
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003168 * \def MBEDTLS_SHA384_C
Mateusz Starzyke3c48b42021-04-19 16:46:28 +02003169 *
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003170 * Enable the SHA-384 cryptographic hash algorithm.
Mateusz Starzyke3c48b42021-04-19 16:46:28 +02003171 *
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003172 * Module: library/sha512.c
3173 * Caller: library/md.c
Ronald Cronde1adee2022-03-07 16:20:30 +01003174 * library/psa_crypto_hash.c
3175 * library/ssl_tls.c
3176 * library/ssl*_client.c
3177 * library/ssl*_server.c
Mateusz Starzyke3c48b42021-04-19 16:46:28 +02003178 *
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003179 * Comment to disable SHA-384
Mateusz Starzyke3c48b42021-04-19 16:46:28 +02003180 */
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003181#define MBEDTLS_SHA384_C
Mateusz Starzyke3c48b42021-04-19 16:46:28 +02003182
3183/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003184 * \def MBEDTLS_SHA512_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003185 *
Mateusz Starzyk3352a532021-04-06 14:28:22 +02003186 * Enable SHA-512 cryptographic hash algorithms.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003187 *
Simon Butcher2cb47392016-11-04 12:23:11 +00003188 * Module: library/sha512.c
Manuel Pégourié-Gonnardfe286462013-09-20 14:10:14 +02003189 * Caller: library/entropy.c
Simon Butcher2cb47392016-11-04 12:23:11 +00003190 * library/md.c
Mateusz Starzyk6326a8d2021-05-10 13:51:53 +02003191 * library/ssl_tls.c
3192 * library/ssl_cookie.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003193 *
Mateusz Starzyk3352a532021-04-06 14:28:22 +02003194 * This module adds support for SHA-512.
Paul Bakker5121ce52009-01-03 21:22:43 +00003195 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003196#define MBEDTLS_SHA512_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003197
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003198/**
Pol Henarejos0cd1f1c2022-05-09 01:04:15 +02003199 * \def MBEDTLS_SHA3_C
3200 *
3201 * Enable the SHA3 cryptographic hash algorithm.
3202 *
3203 * Module: library/sha3.c
3204 *
3205 * This module adds support for SHA3.
3206 */
3207#define MBEDTLS_SHA3_C
3208
3209/**
Tom Cosgrove87fbfb52022-03-15 10:51:52 +00003210 * \def MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
3211 *
Gilles Peskine9b3278b2022-06-09 19:09:38 +02003212 * Enable acceleration of the SHA-512 and SHA-384 cryptographic hash algorithms
3213 * with the ARMv8 cryptographic extensions if they are available at runtime.
3214 * If not, the library will fall back to the C implementation.
Tom Cosgrove87fbfb52022-03-15 10:51:52 +00003215 *
3216 * \note If MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT is defined when building
3217 * for a non-Aarch64 build it will be silently ignored.
3218 *
3219 * \note The code uses the SHA-512 Neon intrinsics, so requires GCC >= 8 or
Jerry Yuf7dccb32023-02-16 17:37:58 +08003220 * Clang >= 7.
Tom Cosgrove87fbfb52022-03-15 10:51:52 +00003221 *
3222 * \warning MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT cannot be defined at the
3223 * same time as MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY.
3224 *
3225 * Requires: MBEDTLS_SHA512_C.
3226 *
3227 * Module: library/sha512.c
3228 *
3229 * Uncomment to have the library check for the A64 SHA-512 crypto extensions
3230 * and use them if available.
3231 */
3232//#define MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
3233
3234/**
3235 * \def MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY
3236 *
Gilles Peskine9b3278b2022-06-09 19:09:38 +02003237 * Enable acceleration of the SHA-512 and SHA-384 cryptographic hash algorithms
3238 * with the ARMv8 cryptographic extensions, which must be available at runtime
3239 * or else an illegal instruction fault will occur.
Tom Cosgrove87fbfb52022-03-15 10:51:52 +00003240 *
3241 * \note This allows builds with a smaller code size than with
3242 * MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
3243 *
3244 * \note The code uses the SHA-512 Neon intrinsics, so requires GCC >= 8 or
Jerry Yuf7dccb32023-02-16 17:37:58 +08003245 * Clang >= 7.
Tom Cosgrove87fbfb52022-03-15 10:51:52 +00003246 *
3247 * \warning MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY cannot be defined at the same
3248 * time as MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT.
3249 *
3250 * Requires: MBEDTLS_SHA512_C.
3251 *
3252 * Module: library/sha512.c
3253 *
3254 * Uncomment to have the library use the A64 SHA-512 crypto extensions
3255 * unconditionally.
3256 */
3257//#define MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY
3258
3259/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003260 * \def MBEDTLS_SSL_CACHE_C
Paul Bakker0a597072012-09-25 21:55:46 +00003261 *
3262 * Enable simple SSL cache implementation.
3263 *
3264 * Module: library/ssl_cache.c
3265 * Caller:
3266 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003267 * Requires: MBEDTLS_SSL_CACHE_C
Paul Bakker0a597072012-09-25 21:55:46 +00003268 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003269#define MBEDTLS_SSL_CACHE_C
Paul Bakker0a597072012-09-25 21:55:46 +00003270
3271/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003272 * \def MBEDTLS_SSL_COOKIE_C
Manuel Pégourié-Gonnarda64acd42014-07-23 18:30:45 +02003273 *
3274 * Enable basic implementation of DTLS cookies for hello verification.
3275 *
3276 * Module: library/ssl_cookie.c
3277 * Caller:
Manuel Pégourié-Gonnarda64acd42014-07-23 18:30:45 +02003278 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003279#define MBEDTLS_SSL_COOKIE_C
Manuel Pégourié-Gonnarda64acd42014-07-23 18:30:45 +02003280
3281/**
Manuel Pégourié-Gonnardfd6d8972015-05-15 12:09:00 +02003282 * \def MBEDTLS_SSL_TICKET_C
3283 *
3284 * Enable an implementation of TLS server-side callbacks for session tickets.
3285 *
3286 * Module: library/ssl_ticket.c
3287 * Caller:
Manuel Pégourié-Gonnard0c0f11f2015-05-20 09:55:50 +02003288 *
Przemek Stekiel52a428b2022-10-10 08:47:13 +02003289 * Requires: (MBEDTLS_CIPHER_C || MBEDTLS_USE_PSA_CRYPTO) &&
3290 * (MBEDTLS_GCM_C || MBEDTLS_CCM_C || MBEDTLS_CHACHAPOLY_C)
Manuel Pégourié-Gonnardfd6d8972015-05-15 12:09:00 +02003291 */
3292#define MBEDTLS_SSL_TICKET_C
3293
3294/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003295 * \def MBEDTLS_SSL_CLI_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003296 *
3297 * Enable the SSL/TLS client code.
3298 *
Ronald Cronde1adee2022-03-07 16:20:30 +01003299 * Module: library/ssl*_client.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003300 * Caller:
3301 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003302 * Requires: MBEDTLS_SSL_TLS_C
Paul Bakker5690efc2011-05-26 13:16:06 +00003303 *
Paul Bakker5121ce52009-01-03 21:22:43 +00003304 * This module is required for SSL/TLS client support.
3305 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003306#define MBEDTLS_SSL_CLI_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003307
Paul Bakker9a736322012-11-14 12:39:52 +00003308/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003309 * \def MBEDTLS_SSL_SRV_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003310 *
3311 * Enable the SSL/TLS server code.
3312 *
Ronald Cronde1adee2022-03-07 16:20:30 +01003313 * Module: library/ssl*_server.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003314 * Caller:
3315 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003316 * Requires: MBEDTLS_SSL_TLS_C
Paul Bakker5690efc2011-05-26 13:16:06 +00003317 *
Paul Bakker5121ce52009-01-03 21:22:43 +00003318 * This module is required for SSL/TLS server support.
3319 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003320#define MBEDTLS_SSL_SRV_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003321
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003322/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003323 * \def MBEDTLS_SSL_TLS_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003324 *
Paul Bakkere29ab062011-05-18 13:26:54 +00003325 * Enable the generic SSL/TLS code.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003326 *
Paul Bakker5121ce52009-01-03 21:22:43 +00003327 * Module: library/ssl_tls.c
Ronald Cronde1adee2022-03-07 16:20:30 +01003328 * Caller: library/ssl*_client.c
3329 * library/ssl*_server.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003330 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003331 * Requires: MBEDTLS_CIPHER_C, MBEDTLS_MD_C
3332 * and at least one of the MBEDTLS_SSL_PROTO_XXX defines
Paul Bakker5690efc2011-05-26 13:16:06 +00003333 *
Paul Bakker5121ce52009-01-03 21:22:43 +00003334 * This module is required for SSL/TLS.
3335 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003336#define MBEDTLS_SSL_TLS_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003337
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003338/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003339 * \def MBEDTLS_THREADING_C
Paul Bakker2466d932013-09-28 14:40:38 +02003340 *
3341 * Enable the threading abstraction layer.
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +00003342 * By default mbed TLS assumes it is used in a non-threaded environment or that
Paul Bakker2466d932013-09-28 14:40:38 +02003343 * contexts are not shared between threads. If you do intend to use contexts
3344 * between threads, you will need to enable this layer to prevent race
Manuel Pégourié-Gonnard02049dc2016-02-22 16:42:51 +00003345 * conditions. See also our Knowledge Base article about threading:
Dave Rodgmanb3196842022-10-12 16:47:08 +01003346 * https://mbed-tls.readthedocs.io/en/latest/kb/development/thread-safety-and-multi-threading
Paul Bakker2466d932013-09-28 14:40:38 +02003347 *
3348 * Module: library/threading.c
3349 *
3350 * This allows different threading implementations (self-implemented or
3351 * provided).
3352 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003353 * You will have to enable either MBEDTLS_THREADING_ALT or
3354 * MBEDTLS_THREADING_PTHREAD.
Paul Bakker2466d932013-09-28 14:40:38 +02003355 *
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +00003356 * Enable this layer to allow use of mutexes within mbed TLS
Paul Bakker2466d932013-09-28 14:40:38 +02003357 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003358//#define MBEDTLS_THREADING_C
Paul Bakker2466d932013-09-28 14:40:38 +02003359
3360/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003361 * \def MBEDTLS_TIMING_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003362 *
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +01003363 * Enable the semi-portable timing interface.
3364 *
Simon Butcherd567a232016-03-09 20:19:21 +00003365 * \note The provided implementation only works on POSIX/Unix (including Linux,
3366 * BSD and OS X) and Windows. On other platforms, you can either disable that
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +01003367 * module and provide your own implementations of the callbacks needed by
3368 * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide
3369 * your own implementation of the whole module by setting
3370 * \c MBEDTLS_TIMING_ALT in the current file.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003371 *
Andrzej Kurek57353692022-04-07 08:08:21 -04003372 * \note The timing module will include time.h on suitable platforms
3373 * regardless of the setting of MBEDTLS_HAVE_TIME, unless
3374 * MBEDTLS_TIMING_ALT is used. See timing.c for more information.
3375 *
Manuel Pégourié-Gonnard02049dc2016-02-22 16:42:51 +00003376 * \note See also our Knowledge Base article about porting to a new
3377 * environment:
Dave Rodgmanb3196842022-10-12 16:47:08 +01003378 * https://mbed-tls.readthedocs.io/en/latest/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
Manuel Pégourié-Gonnard02049dc2016-02-22 16:42:51 +00003379 *
Paul Bakker5121ce52009-01-03 21:22:43 +00003380 * Module: library/timing.c
Paul Bakkerecd54fb2013-07-03 14:48:29 +02003381 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003382#define MBEDTLS_TIMING_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003383
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003384/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003385 * \def MBEDTLS_VERSION_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003386 *
3387 * Enable run-time version information.
3388 *
Paul Bakker0a62cd12011-01-21 11:00:08 +00003389 * Module: library/version.c
3390 *
3391 * This module provides run-time version information.
3392 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003393#define MBEDTLS_VERSION_C
Paul Bakker0a62cd12011-01-21 11:00:08 +00003394
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003395/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003396 * \def MBEDTLS_X509_USE_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003397 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02003398 * Enable X.509 core for using certificates.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003399 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003400 * Module: library/x509.c
Simon Butcher2cb47392016-11-04 12:23:11 +00003401 * Caller: library/x509_crl.c
3402 * library/x509_crt.c
3403 * library/x509_csr.c
Paul Bakker5121ce52009-01-03 21:22:43 +00003404 *
Przemek Stekiel10836a02022-08-19 08:45:34 +02003405 * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
Przemek Stekiel278b6672022-08-03 09:50:38 +02003406 * (MBEDTLS_MD_C or MBEDTLS_USE_PSA_CRYPTO)
3407 *
Manuel Pégourié-Gonnard72687b72022-09-15 12:23:58 +02003408 * \warning If building with MBEDTLS_USE_PSA_CRYPTO, you must call
3409 * psa_crypto_init() before doing any X.509 operation.
Paul Bakker5690efc2011-05-26 13:16:06 +00003410 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003411 * This module is required for the X.509 parsing modules.
Paul Bakker5121ce52009-01-03 21:22:43 +00003412 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003413#define MBEDTLS_X509_USE_C
Paul Bakker5121ce52009-01-03 21:22:43 +00003414
Paul Bakkerf3b86c12011-01-27 15:24:17 +00003415/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003416 * \def MBEDTLS_X509_CRT_PARSE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00003417 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003418 * Enable X.509 certificate parsing.
Paul Bakkerbdb912d2012-02-13 23:11:30 +00003419 *
Simon Butcher2cb47392016-11-04 12:23:11 +00003420 * Module: library/x509_crt.c
Ronald Cronde1adee2022-03-07 16:20:30 +01003421 * Caller: library/ssl_tls.c
3422 * library/ssl*_client.c
3423 * library/ssl*_server.c
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003424 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003425 * Requires: MBEDTLS_X509_USE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003426 *
3427 * This module is required for X.509 certificate parsing.
3428 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003429#define MBEDTLS_X509_CRT_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003430
3431/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003432 * \def MBEDTLS_X509_CRL_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003433 *
3434 * Enable X.509 CRL parsing.
3435 *
Simon Butcher2cb47392016-11-04 12:23:11 +00003436 * Module: library/x509_crl.c
3437 * Caller: library/x509_crt.c
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003438 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003439 * Requires: MBEDTLS_X509_USE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003440 *
3441 * This module is required for X.509 CRL parsing.
3442 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003443#define MBEDTLS_X509_CRL_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003444
3445/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003446 * \def MBEDTLS_X509_CSR_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003447 *
3448 * Enable X.509 Certificate Signing Request (CSR) parsing.
3449 *
Simon Butcher2cb47392016-11-04 12:23:11 +00003450 * Module: library/x509_csr.c
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003451 * Caller: library/x509_crt_write.c
3452 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003453 * Requires: MBEDTLS_X509_USE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003454 *
3455 * This module is used for reading X.509 certificate request.
3456 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003457#define MBEDTLS_X509_CSR_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003458
3459/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003460 * \def MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003461 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02003462 * Enable X.509 core for creating certificates.
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003463 *
3464 * Module: library/x509_create.c
Paul Bakkerbdb912d2012-02-13 23:11:30 +00003465 *
Przemek Stekiel10836a02022-08-19 08:45:34 +02003466 * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
Przemek Stekiel278b6672022-08-03 09:50:38 +02003467 * (MBEDTLS_MD_C or MBEDTLS_USE_PSA_CRYPTO)
3468 *
Manuel Pégourié-Gonnard72687b72022-09-15 12:23:58 +02003469 * \warning If building with MBEDTLS_USE_PSA_CRYPTO, you must call
3470 * psa_crypto_init() before doing any X.509 create operation.
Paul Bakkerbdb912d2012-02-13 23:11:30 +00003471 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003472 * This module is the basis for creating X.509 certificates and CSRs.
3473 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003474#define MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003475
3476/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003477 * \def MBEDTLS_X509_CRT_WRITE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003478 *
3479 * Enable creating X.509 certificates.
3480 *
3481 * Module: library/x509_crt_write.c
3482 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003483 * Requires: MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003484 *
3485 * This module is required for X.509 certificate creation.
3486 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003487#define MBEDTLS_X509_CRT_WRITE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003488
3489/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003490 * \def MBEDTLS_X509_CSR_WRITE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003491 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02003492 * Enable creating X.509 Certificate Signing Requests (CSR).
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003493 *
3494 * Module: library/x509_csr_write.c
3495 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003496 * Requires: MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02003497 *
Paul Bakkerbdb912d2012-02-13 23:11:30 +00003498 * This module is required for X.509 certificate request writing.
3499 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003500#define MBEDTLS_X509_CSR_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00003501
Andrzej Kurek38d4fdd2021-12-28 16:22:52 +01003502/** \} name SECTION: mbed TLS modules */
Paul Bakker7a7c78f2009-01-04 18:15:48 +00003503
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003504/**
Gilles Peskineba4162a2022-04-11 17:04:38 +02003505 * \name SECTION: General configuration options
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003506 *
Gilles Peskined5793ce2022-04-13 23:05:10 +02003507 * This section contains Mbed TLS build settings that are not associated
3508 * with a particular module.
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003509 *
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003510 * \{
3511 */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003512
Gilles Peskinea02c1242022-03-16 17:03:19 +01003513/**
3514 * \def MBEDTLS_CONFIG_FILE
3515 *
3516 * If defined, this is a header which will be included instead of
3517 * `"mbedtls/mbedtls_config.h"`.
3518 * This header file specifies the compile-time configuration of Mbed TLS.
Gilles Peskineefffd642022-04-26 18:13:01 +02003519 * Unlike other configuration options, this one must be defined on the
3520 * compiler command line: a definition in `mbedtls_config.h` would have
3521 * no effect.
Gilles Peskinea02c1242022-03-16 17:03:19 +01003522 *
Gilles Peskine6457ef92022-04-11 16:42:37 +02003523 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
Gilles Peskinea02c1242022-03-16 17:03:19 +01003524 * non-standard feature of the C language, so this feature is only available
Gilles Peskine6457ef92022-04-11 16:42:37 +02003525 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
Gilles Peskinea02c1242022-03-16 17:03:19 +01003526 *
Gilles Peskine58ffcba2022-04-14 12:44:16 +02003527 * The value of this symbol is typically a path in double quotes, either
3528 * absolute or relative to a directory on the include search path.
Gilles Peskinea02c1242022-03-16 17:03:19 +01003529 */
3530//#define MBEDTLS_CONFIG_FILE "mbedtls/mbedtls_config.h"
3531
3532/**
3533 * \def MBEDTLS_USER_CONFIG_FILE
3534 *
3535 * If defined, this is a header which will be included after
3536 * `"mbedtls/mbedtls_config.h"` or #MBEDTLS_CONFIG_FILE.
Gilles Peskinef68f43a2022-04-13 23:22:20 +02003537 * This allows you to modify the default configuration, including the ability
3538 * to undefine options that are enabled by default.
Gilles Peskinea02c1242022-03-16 17:03:19 +01003539 *
Gilles Peskine6457ef92022-04-11 16:42:37 +02003540 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
Gilles Peskinea02c1242022-03-16 17:03:19 +01003541 * non-standard feature of the C language, so this feature is only available
Gilles Peskine6457ef92022-04-11 16:42:37 +02003542 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
Gilles Peskinea02c1242022-03-16 17:03:19 +01003543 *
Gilles Peskine58ffcba2022-04-14 12:44:16 +02003544 * The value of this symbol is typically a path in double quotes, either
3545 * absolute or relative to a directory on the include search path.
Gilles Peskinea02c1242022-03-16 17:03:19 +01003546 */
3547//#define MBEDTLS_USER_CONFIG_FILE "/dev/null"
3548
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003549/**
3550 * \def MBEDTLS_PSA_CRYPTO_CONFIG_FILE
3551 *
3552 * If defined, this is a header which will be included instead of
3553 * `"psa/crypto_config.h"`.
3554 * This header file specifies which cryptographic mechanisms are available
3555 * through the PSA API when #MBEDTLS_PSA_CRYPTO_CONFIG is enabled, and
3556 * is not used when #MBEDTLS_PSA_CRYPTO_CONFIG is disabled.
3557 *
Gilles Peskine6457ef92022-04-11 16:42:37 +02003558 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003559 * non-standard feature of the C language, so this feature is only available
Gilles Peskine6457ef92022-04-11 16:42:37 +02003560 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003561 *
Gilles Peskine58ffcba2022-04-14 12:44:16 +02003562 * The value of this symbol is typically a path in double quotes, either
3563 * absolute or relative to a directory on the include search path.
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003564 */
3565//#define MBEDTLS_PSA_CRYPTO_CONFIG_FILE "psa/crypto_config.h"
3566
3567/**
3568 * \def MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE
3569 *
3570 * If defined, this is a header which will be included after
3571 * `"psa/crypto_config.h"` or #MBEDTLS_PSA_CRYPTO_CONFIG_FILE.
Gilles Peskinef68f43a2022-04-13 23:22:20 +02003572 * This allows you to modify the default configuration, including the ability
3573 * to undefine options that are enabled by default.
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003574 *
Gilles Peskine6457ef92022-04-11 16:42:37 +02003575 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003576 * non-standard feature of the C language, so this feature is only available
Gilles Peskine6457ef92022-04-11 16:42:37 +02003577 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003578 *
Gilles Peskine58ffcba2022-04-14 12:44:16 +02003579 * The value of this symbol is typically a path in double quotes, either
3580 * absolute or relative to a directory on the include search path.
Gilles Peskinef4c6eb02022-03-16 17:10:48 +01003581 */
3582//#define MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE "/dev/null"
3583
Gilles Peskineb1176f22023-02-22 22:07:28 +01003584/**
3585 * \def MBEDTLS_PSA_CRYPTO_PLATFORM_FILE
3586 *
3587 * If defined, this is a header which will be included instead of
3588 * `"psa/crypto_platform.h"`. This file should declare the same identifiers
3589 * as the one in Mbed TLS, but with definitions adapted to the platform on
3590 * which the library code will run.
3591 *
3592 * \note The required content of this header can vary from one version of
3593 * Mbed TLS to the next. Integrators who provide an alternative file
3594 * should review the changes in the original file whenever they
3595 * upgrade Mbed TLS.
3596 *
3597 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
3598 * non-standard feature of the C language, so this feature is only available
3599 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
3600 *
3601 * The value of this symbol is typically a path in double quotes, either
3602 * absolute or relative to a directory on the include search path.
3603 */
3604//#define MBEDTLS_PSA_CRYPTO_PLATFORM_FILE "psa/crypto_platform_alt.h"
3605
3606/**
3607 * \def MBEDTLS_PSA_CRYPTO_STRUCT_FILE
3608 *
3609 * If defined, this is a header which will be included instead of
3610 * `"psa/crypto_struct.h"`. This file should declare the same identifiers
3611 * as the one in Mbed TLS, but with definitions adapted to the environment
3612 * in which the library code will run. The typical use for this feature
3613 * is to provide alternative type definitions on the client side in
3614 * client-server integrations of PSA crypto, where operation structures
3615 * contain handles instead of cryptographic data.
3616 *
3617 * \note The required content of this header can vary from one version of
3618 * Mbed TLS to the next. Integrators who provide an alternative file
3619 * should review the changes in the original file whenever they
3620 * upgrade Mbed TLS.
3621 *
3622 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
3623 * non-standard feature of the C language, so this feature is only available
3624 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
3625 *
3626 * The value of this symbol is typically a path in double quotes, either
3627 * absolute or relative to a directory on the include search path.
3628 */
3629//#define MBEDTLS_PSA_CRYPTO_STRUCT_FILE "psa/crypto_struct_alt.h"
3630
Gilles Peskineba4162a2022-04-11 17:04:38 +02003631/** \} name SECTION: General configuration options */
3632
3633/**
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003634 * \name SECTION: Module configuration options
3635 *
3636 * This section allows for the setting of module specific sizes and
3637 * configuration options. The default values are already present in the
3638 * relevant header files and should suffice for the regular use cases.
3639 *
3640 * Our advice is to enable options and change their values here
3641 * only if you have a good reason and know the consequences.
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003642 * \{
3643 */
Gilles Peskine3f49cc12022-04-13 23:21:16 +02003644/* The Doxygen documentation here is used when a user comments out a
3645 * setting and runs doxygen themselves. On the other hand, when we typeset
3646 * the full documentation including disabled settings, the documentation
3647 * in specific modules' header files is used if present. When editing this
3648 * file, make sure that each option is documented in exactly one place,
3649 * plus optionally a same-line Doxygen comment here if there is a Doxygen
3650 * comment in the specific module. */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003651
Paul Bakker088c5c52014-04-25 11:11:10 +02003652/* MPI / BIGNUM options */
Andrzej Kurek86f30ff2023-02-24 07:44:57 -05003653//#define MBEDTLS_MPI_WINDOW_SIZE 2 /**< Maximum window size used. */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003654//#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003655
Paul Bakker088c5c52014-04-25 11:11:10 +02003656/* CTR_DRBG options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003657//#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */
3658//#define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
3659//#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
3660//#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
3661//#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003662
Paul Bakker088c5c52014-04-25 11:11:10 +02003663/* HMAC_DRBG options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003664//#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
3665//#define MBEDTLS_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
3666//#define MBEDTLS_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
3667//#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003668
Paul Bakker088c5c52014-04-25 11:11:10 +02003669/* ECP options */
Gilles Peskine5752e592021-06-02 13:27:03 +02003670//#define MBEDTLS_ECP_WINDOW_SIZE 4 /**< Maximum window size used */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003671//#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */
Manuel Pégourié-Gonnard0520b602014-01-30 19:43:46 +01003672
Paul Bakker088c5c52014-04-25 11:11:10 +02003673/* Entropy options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003674//#define MBEDTLS_ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */
3675//#define MBEDTLS_ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */
Andres AG7abc9742016-09-23 17:58:49 +01003676//#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Default minimum number of bytes required for the hardware entropy source mbedtls_hardware_poll() before entropy is released */
Paul Bakkere1b665e2013-12-11 16:02:58 +01003677
Paul Bakker088c5c52014-04-25 11:11:10 +02003678/* Memory buffer allocator options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003679//#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003680
Paul Bakker088c5c52014-04-25 11:11:10 +02003681/* Platform options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003682//#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. */
Andrzej Kurek84356a12023-05-06 08:33:56 -04003683
3684/* An overview of how the value of mbedtls_calloc is determined:
3685 *
3686 * if !MBEDTLS_PLATFORM_MEMORY
3687 * mbedtls_calloc = calloc
3688 * if MBEDTLS_PLATFORM_MEMORY
3689 * if (MBEDTLS_PLATFORM_CALLOC_MACRO && MBEDTLS_PLATFORM_FREE_MACRO):
3690 * mbedtls_calloc = MBEDTLS_PLATFORM_CALLOC_MACRO
3691 * if !(MBEDTLS_PLATFORM_CALLOC_MACRO && MBEDTLS_PLATFORM_FREE_MACRO):
3692 * Dynamic setup via mbedtls_platform_set_calloc_free is now possible with a default value MBEDTLS_PLATFORM_STD_CALLOC.
3693 * How is MBEDTLS_PLATFORM_STD_CALLOC handled?
3694 * if MBEDTLS_PLATFORM_NO_STD_FUNCTIONS:
3695 * MBEDTLS_PLATFORM_STD_CALLOC is not set to anything;
3696 * MBEDTLS_PLATFORM_STD_MEM_HDR can be included if present;
3697 * if !MBEDTLS_PLATFORM_NO_STD_FUNCTIONS:
3698 * if MBEDTLS_PLATFORM_STD_CALLOC is present:
3699 * User-defined MBEDTLS_PLATFORM_STD_CALLOC is respected;
3700 * if !MBEDTLS_PLATFORM_STD_CALLOC:
3701 * MBEDTLS_PLATFORM_STD_CALLOC = calloc
3702 *
3703 * At this point the presence of MBEDTLS_PLATFORM_STD_CALLOC is checked.
3704 * if !MBEDTLS_PLATFORM_STD_CALLOC
3705 * MBEDTLS_PLATFORM_STD_CALLOC = uninitialized_calloc
3706 *
3707 * mbedtls_calloc = MBEDTLS_PLATFORM_STD_CALLOC.
3708 *
3709 * Defining MBEDTLS_PLATFORM_CALLOC_MACRO and MBEDTLS_PLATFORM_STD_CALLOC at the same time is not possible.
3710 * MBEDTLS_PLATFORM_CALLOC_MACRO and MBEDTLS_PLATFORM_FREE_MACRO must both be defined or undefined at the same time.
3711 * MBEDTLS_PLATFORM_STD_CALLOC and MBEDTLS_PLATFORM_STD_FREE do not have to be defined at the same time, as, if they are used, dynamic setup of these functions is possible. See the tree above to see how are they handled in all cases.
3712 */
Andrzej Kurek2d981f02023-04-27 09:19:35 -04003713/** \def MBEDTLS_PLATFORM_STD_CALLOC
3714 *
Andrzej Kurek84356a12023-05-06 08:33:56 -04003715 * Default allocator to use, can be undefined. See the description above for details.
Andrzej Kurekecaf6fb2023-05-04 17:07:57 -04003716 * It must initialize the allocated buffer memory to zeroes.
Andrzej Kurek2d981f02023-04-27 09:19:35 -04003717 * The size of the buffer is the product of the two parameters.
Andrzej Kurekecaf6fb2023-05-04 17:07:57 -04003718 * The calloc function returns either a null pointer or a pointer to the allocated space.
Andrzej Kurek2d981f02023-04-27 09:19:35 -04003719 * If the product is 0, the function may either return NULL or a valid pointer to an array of size 0 which is a valid input to the deallocation function.
Andrzej Kurekecaf6fb2023-05-04 17:07:57 -04003720 * The corresponding deallocation function is #MBEDTLS_PLATFORM_STD_FREE.
Andrzej Kurek2d981f02023-04-27 09:19:35 -04003721 */
3722//#define MBEDTLS_PLATFORM_STD_CALLOC calloc
3723/** \def MBEDTLS_PLATFORM_STD_FREE
3724 *
3725 * Default free to use, can be undefined.
3726 * NULL is a valid parameter, and the function must do nothing.
Andrzej Kurekecaf6fb2023-05-04 17:07:57 -04003727 * A non-null parameter will always be a pointer previously returned by #MBEDTLS_PLATFORM_STD_CALLOC and not yet freed.
Andrzej Kurek2d981f02023-04-27 09:19:35 -04003728 */
3729//#define MBEDTLS_PLATFORM_STD_FREE free
Gilles Peskine6497b5a2022-06-30 17:01:40 +02003730//#define MBEDTLS_PLATFORM_STD_SETBUF setbuf /**< Default setbuf to use, can be undefined */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003731//#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use, can be undefined */
Andres Amaya Garcia1e4ec662016-07-20 10:16:25 +01003732//#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003733//#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */
3734//#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */
Antonin Décimo36e89b52019-01-23 15:24:37 +01003735/* Note: your snprintf must correctly zero-terminate the buffer! */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003736//#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use, can be undefined */
Janos Follath91947442016-03-18 13:49:27 +00003737//#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS 0 /**< Default exit value to use, can be undefined */
3738//#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE 1 /**< Default exit value to use, can be undefined */
Paul Bakkercf0a9f92016-06-01 11:25:44 +01003739//#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */
3740//#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */
3741//#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile" /**< Seed file to read/write with default implementation */
Paul Bakker6e339b52013-07-03 13:37:05 +02003742
Andrzej Kurekecaf6fb2023-05-04 17:07:57 -04003743/* To use the following function macros, MBEDTLS_PLATFORM_C must be enabled. */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003744/* MBEDTLS_PLATFORM_XXX_MACRO and MBEDTLS_PLATFORM_XXX_ALT cannot both be defined */
Andrzej Kurek2d981f02023-04-27 09:19:35 -04003745//#define MBEDTLS_PLATFORM_CALLOC_MACRO calloc /**< Default allocator macro to use, can be undefined. See MBEDTLS_PLATFORM_STD_CALLOC for requirements. */
3746//#define MBEDTLS_PLATFORM_FREE_MACRO free /**< Default free macro to use, can be undefined. See MBEDTLS_PLATFORM_STD_FREE for requirements. */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003747//#define MBEDTLS_PLATFORM_EXIT_MACRO exit /**< Default exit macro to use, can be undefined */
Gilles Peskine6497b5a2022-06-30 17:01:40 +02003748//#define MBEDTLS_PLATFORM_SETBUF_MACRO setbuf /**< Default setbuf macro to use, can be undefined */
Andres Amaya Garcia1e4ec662016-07-20 10:16:25 +01003749//#define MBEDTLS_PLATFORM_TIME_MACRO time /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */
3750//#define MBEDTLS_PLATFORM_TIME_TYPE_MACRO time_t /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003751//#define MBEDTLS_PLATFORM_FPRINTF_MACRO fprintf /**< Default fprintf macro to use, can be undefined */
3752//#define MBEDTLS_PLATFORM_PRINTF_MACRO printf /**< Default printf macro to use, can be undefined */
Antonin Décimo36e89b52019-01-23 15:24:37 +01003753/* Note: your snprintf must correctly zero-terminate the buffer! */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003754//#define MBEDTLS_PLATFORM_SNPRINTF_MACRO snprintf /**< Default snprintf macro to use, can be undefined */
k-stachowiak723f8672018-07-16 14:27:07 +02003755//#define MBEDTLS_PLATFORM_VSNPRINTF_MACRO vsnprintf /**< Default vsnprintf macro to use, can be undefined */
Paul Bakkercf0a9f92016-06-01 11:25:44 +01003756//#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */
3757//#define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */
Jerry Yuf181e542023-02-23 17:16:26 +08003758//#define MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO int64_t //#define MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO int64_t /**< Default milliseconds time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled. It must be signed, and at least 64 bits. If it is changed from the default, MBEDTLS_PRINTF_MS_TIME must be updated to match.*/
Jerry Yu10ce5402023-02-21 15:39:02 +08003759//#define MBEDTLS_PRINTF_MS_TIME PRId64 /**< Default fmt for printf. That's avoid compiler warning if mbedtls_ms_time_t is redefined */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003760
Gilles Peskine3f106f72021-09-23 17:42:39 +02003761/** \def MBEDTLS_CHECK_RETURN
3762 *
3763 * This macro is used at the beginning of the declaration of a function
3764 * to indicate that its return value should be checked. It should
3765 * instruct the compiler to emit a warning or an error if the function
3766 * is called without checking its return value.
3767 *
3768 * There is a default implementation for popular compilers in platform_util.h.
3769 * You can override the default implementation by defining your own here.
3770 *
3771 * If the implementation here is empty, this will effectively disable the
3772 * checking of functions' return values.
3773 */
Gilles Peskinecd79dfc2021-09-30 18:53:36 +02003774//#define MBEDTLS_CHECK_RETURN __attribute__((__warn_unused_result__))
Gilles Peskine3f106f72021-09-23 17:42:39 +02003775
Gilles Peskinefcc93d72021-09-30 18:56:17 +02003776/** \def MBEDTLS_IGNORE_RETURN
3777 *
3778 * This macro requires one argument, which should be a C function call.
3779 * If that function call would cause a #MBEDTLS_CHECK_RETURN warning, this
3780 * warning is suppressed.
3781 */
3782//#define MBEDTLS_IGNORE_RETURN( result ) ((void) !(result))
3783
Gilles Peskineed038902020-11-13 21:33:21 +01003784/* PSA options */
Gilles Peskine14c332b2020-11-14 12:26:53 +01003785/**
Gilles Peskineed038902020-11-13 21:33:21 +01003786 * Use HMAC_DRBG with the specified hash algorithm for HMAC_DRBG for the
3787 * PSA crypto subsystem.
3788 *
3789 * If this option is unset:
3790 * - If CTR_DRBG is available, the PSA subsystem uses it rather than HMAC_DRBG.
Gilles Peskineb0a748e2020-11-30 12:01:54 +01003791 * - Otherwise, the PSA subsystem uses HMAC_DRBG with either
Gilles Peskineed038902020-11-13 21:33:21 +01003792 * #MBEDTLS_MD_SHA512 or #MBEDTLS_MD_SHA256 based on availability and
3793 * on unspecified heuristics.
3794 */
3795//#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256
3796
Steven Cooreman863470a2021-02-15 14:03:19 +01003797/** \def MBEDTLS_PSA_KEY_SLOT_COUNT
Steven Cooreman1f968fd2021-02-15 14:00:24 +01003798 * Restrict the PSA library to supporting a maximum amount of simultaneously
3799 * loaded keys. A loaded key is a key stored by the PSA Crypto core as a
3800 * volatile key, or a persistent key which is loaded temporarily by the
3801 * library as part of a crypto operation in flight.
3802 *
3803 * If this option is unset, the library will fall back to a default value of
3804 * 32 keys.
3805 */
Steven Cooreman863470a2021-02-15 14:03:19 +01003806//#define MBEDTLS_PSA_KEY_SLOT_COUNT 32
Steven Cooreman1f968fd2021-02-15 14:00:24 +01003807
Paul Bakker088c5c52014-04-25 11:11:10 +02003808/* SSL Cache options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003809//#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */
3810//#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003811
Paul Bakker088c5c52014-04-25 11:11:10 +02003812/* SSL options */
Angus Grattond8213d02016-05-25 20:56:48 +10003813
Angus Grattond8213d02016-05-25 20:56:48 +10003814/** \def MBEDTLS_SSL_IN_CONTENT_LEN
3815 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05003816 * Maximum length (in bytes) of incoming plaintext fragments.
Angus Grattond8213d02016-05-25 20:56:48 +10003817 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05003818 * This determines the size of the incoming TLS I/O buffer in such a way
3819 * that it is capable of holding the specified amount of plaintext data,
3820 * regardless of the protection mechanism used.
3821 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05003822 * \note When using a value less than the default of 16KB on the client, it is
3823 * recommended to use the Maximum Fragment Length (MFL) extension to
3824 * inform the server about this limitation. On the server, there
3825 * is no supported, standardized way of informing the client about
3826 * restriction on the maximum size of incoming messages, and unless
3827 * the limitation has been communicated by other means, it is recommended
3828 * to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN
3829 * while keeping the default value of 16KB for the incoming buffer.
3830 *
David Horstmann95d516f2021-05-04 18:36:56 +01003831 * Uncomment to set the maximum plaintext size of the incoming I/O buffer.
Angus Grattond8213d02016-05-25 20:56:48 +10003832 */
3833//#define MBEDTLS_SSL_IN_CONTENT_LEN 16384
3834
Gilles Peskined3d02902020-03-04 21:35:27 +01003835/** \def MBEDTLS_SSL_CID_IN_LEN_MAX
3836 *
3837 * The maximum length of CIDs used for incoming DTLS messages.
3838 *
3839 */
3840//#define MBEDTLS_SSL_CID_IN_LEN_MAX 32
3841
3842/** \def MBEDTLS_SSL_CID_OUT_LEN_MAX
3843 *
3844 * The maximum length of CIDs used for outgoing DTLS messages.
3845 *
3846 */
3847//#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32
3848
TRodziewicze8dd7092021-05-12 14:19:11 +02003849/** \def MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY
Gilles Peskined3d02902020-03-04 21:35:27 +01003850 *
3851 * This option controls the use of record plaintext padding
TRodziewicz1e660ed2021-05-26 17:08:54 +02003852 * in TLS 1.3 and when using the Connection ID extension in DTLS 1.2.
Hanno Becker13996922020-05-28 16:15:19 +01003853 *
3854 * The padding will always be chosen so that the length of the
3855 * padded plaintext is a multiple of the value of this option.
3856 *
3857 * Note: A value of \c 1 means that no padding will be used
3858 * for outgoing records.
3859 *
3860 * Note: On systems lacking division instructions,
3861 * a power of two should be preferred.
3862 */
TRodziewicze8dd7092021-05-12 14:19:11 +02003863//#define MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY 16
Hanno Becker13996922020-05-28 16:15:19 +01003864
Angus Grattond8213d02016-05-25 20:56:48 +10003865/** \def MBEDTLS_SSL_OUT_CONTENT_LEN
3866 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05003867 * Maximum length (in bytes) of outgoing plaintext fragments.
Angus Grattond8213d02016-05-25 20:56:48 +10003868 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05003869 * This determines the size of the outgoing TLS I/O buffer in such a way
3870 * that it is capable of holding the specified amount of plaintext data,
3871 * regardless of the protection mechanism used.
3872 *
Angus Grattond8213d02016-05-25 20:56:48 +10003873 * It is possible to save RAM by setting a smaller outward buffer, while keeping
3874 * the default inward 16384 byte buffer to conform to the TLS specification.
3875 *
3876 * The minimum required outward buffer size is determined by the handshake
3877 * protocol's usage. Handshaking will fail if the outward buffer is too small.
3878 * The specific size requirement depends on the configured ciphers and any
3879 * certificate data which is sent during the handshake.
3880 *
David Horstmann95d516f2021-05-04 18:36:56 +01003881 * Uncomment to set the maximum plaintext size of the outgoing I/O buffer.
Angus Grattond8213d02016-05-25 20:56:48 +10003882 */
3883//#define MBEDTLS_SSL_OUT_CONTENT_LEN 16384
3884
Hanno Beckere0b150f2018-08-21 15:51:03 +01003885/** \def MBEDTLS_SSL_DTLS_MAX_BUFFERING
3886 *
3887 * Maximum number of heap-allocated bytes for the purpose of
3888 * DTLS handshake message reassembly and future message buffering.
3889 *
Yuto Takano7828ca22021-08-10 11:26:15 +01003890 * This should be at least 9/8 * MBEDTLS_SSL_IN_CONTENT_LEN
Hanno Becker28007512018-08-28 09:46:44 +01003891 * to account for a reassembled handshake message of maximum size,
3892 * together with its reassembly bitmap.
3893 *
Hanno Becker97a1c132018-08-28 14:42:15 +01003894 * A value of 2 * MBEDTLS_SSL_IN_CONTENT_LEN (32768 by default)
Hanno Becker28007512018-08-28 09:46:44 +01003895 * should be sufficient for all practical situations as it allows
3896 * to reassembly a large handshake message (such as a certificate)
3897 * while buffering multiple smaller handshake messages.
3898 *
Hanno Beckere0b150f2018-08-21 15:51:03 +01003899 */
Hanno Becker159a37f2018-08-24 15:07:29 +01003900//#define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768
Hanno Beckere0b150f2018-08-21 15:51:03 +01003901
Ronald Cron1aa6e8d2023-02-23 09:46:54 +01003902//#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 or 384 bits) */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003903//#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02003904
Manuel Pégourié-Gonnarddfc7df02014-06-30 17:59:55 +02003905/**
3906 * Complete list of ciphersuites to use, in order of preference.
3907 *
3908 * \warning No dependency checking is done on that field! This option can only
3909 * be used to restrict the set of available ciphersuites. It is your
3910 * responsibility to make sure the needed modules are active.
3911 *
3912 * Use this to save a few hundred bytes of ROM (default ordering of all
3913 * available ciphersuites) and a few to a few hundred bytes of RAM.
3914 *
3915 * The value below is only an example, not the default.
3916 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003917//#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
Manuel Pégourié-Gonnarddfc7df02014-06-30 17:59:55 +02003918
Gilles Peskinea8d7e432022-08-04 23:39:41 +02003919/**
3920 * \def MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE
3921 *
3922 * Maximum time difference in milliseconds tolerated between the age of a
3923 * ticket from the server and client point of view.
3924 * From the client point of view, the age of a ticket is the time difference
3925 * between the time when the client proposes to the server to use the ticket
3926 * (time of writing of the Pre-Shared Key Extension including the ticket) and
3927 * the time the client received the ticket from the server.
3928 * From the server point of view, the age of a ticket is the time difference
3929 * between the time when the server receives a proposition from the client
3930 * to use the ticket and the time when the ticket was created by the server.
3931 * The server age is expected to be always greater than the client one and
3932 * MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE defines the
3933 * maximum difference tolerated for the server to accept the ticket.
3934 * This is not used in TLS 1.2.
3935 *
3936 */
3937#define MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE 6000
3938
3939/**
3940 * \def MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH
3941 *
3942 * Size in bytes of a ticket nonce. This is not used in TLS 1.2.
3943 *
3944 * This must be less than 256.
3945 */
3946#define MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH 32
3947
3948/**
3949 * \def MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS
3950 *
3951 * Default number of NewSessionTicket messages to be sent by a TLS 1.3 server
3952 * after handshake completion. This is not used in TLS 1.2 and relevant only if
3953 * the MBEDTLS_SSL_SESSION_TICKETS option is enabled.
3954 *
3955 */
3956#define MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS 1
3957
Manuel Pégourié-Gonnardfd6c85c2014-11-20 16:34:20 +01003958/* X509 options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003959//#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */
Andres AGf9113192016-09-02 14:06:04 +01003960//#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */
Manuel Pégourié-Gonnardfd6c85c2014-11-20 16:34:20 +01003961
Gilles Peskine5e79cb32017-05-04 16:17:21 +02003962/**
Andres Amaya Garciab1262a32017-10-25 09:51:14 +01003963 * Uncomment the macro to let mbed TLS use your alternate implementation of
Andres Amaya Garciac58787f2018-04-17 10:21:45 -05003964 * mbedtls_platform_zeroize(). This replaces the default implementation in
3965 * platform_util.c.
Andres Amaya Garcia6606d5c2018-03-08 20:25:29 +00003966 *
Andres Amaya Garciac58787f2018-04-17 10:21:45 -05003967 * mbedtls_platform_zeroize() is a widely used function across the library to
3968 * zero a block of memory. The implementation is expected to be secure in the
3969 * sense that it has been written to prevent the compiler from removing calls
3970 * to mbedtls_platform_zeroize() as part of redundant code elimination
3971 * optimizations. However, it is difficult to guarantee that calls to
3972 * mbedtls_platform_zeroize() will not be optimized by the compiler as older
3973 * versions of the C language standards do not provide a secure implementation
3974 * of memset(). Therefore, MBEDTLS_PLATFORM_ZEROIZE_ALT enables users to
3975 * configure their own implementation of mbedtls_platform_zeroize(), for
Andres Amaya Garciad0ef4682018-04-24 08:31:34 -05003976 * example by using directives specific to their compiler, features from newer
3977 * C standards (e.g using memset_s() in C11) or calling a secure memset() from
Andres Amaya Garciac58787f2018-04-17 10:21:45 -05003978 * their system (e.g explicit_bzero() in BSD).
Andres Amaya Garciab1262a32017-10-25 09:51:14 +01003979 */
Andres Amaya Garciac58787f2018-04-17 10:21:45 -05003980//#define MBEDTLS_PLATFORM_ZEROIZE_ALT
Andres Amaya Garciab1262a32017-10-25 09:51:14 +01003981
Andres Amaya Garcia1abb3682018-08-16 21:42:09 +01003982/**
3983 * Uncomment the macro to let Mbed TLS use your alternate implementation of
Hanno Becker6a739782018-09-05 15:06:19 +01003984 * mbedtls_platform_gmtime_r(). This replaces the default implementation in
Andres Amaya Garcia1abb3682018-08-16 21:42:09 +01003985 * platform_util.c.
3986 *
Hanno Becker921b76d2018-09-05 16:21:36 +01003987 * gmtime() is not a thread-safe function as defined in the C standard. The
Andres Amaya Garcia1abb3682018-08-16 21:42:09 +01003988 * library will try to use safer implementations of this function, such as
3989 * gmtime_r() when available. However, if Mbed TLS cannot identify the target
Hanno Becker6a739782018-09-05 15:06:19 +01003990 * system, the implementation of mbedtls_platform_gmtime_r() will default to
Andres Amaya Garcia1abb3682018-08-16 21:42:09 +01003991 * using the standard gmtime(). In this case, calls from the library to
3992 * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex
Hanno Becker9fbbf1c2018-09-05 16:23:02 +01003993 * if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the
Andres Amaya Garcia1abb3682018-08-16 21:42:09 +01003994 * library are also guarded with this mutex to avoid race conditions. However,
Hanno Becker6a739782018-09-05 15:06:19 +01003995 * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will
3996 * unconditionally use the implementation for mbedtls_platform_gmtime_r()
3997 * supplied at compile time.
Andres Amaya Garcia1abb3682018-08-16 21:42:09 +01003998 */
Hanno Becker6a739782018-09-05 15:06:19 +01003999//#define MBEDTLS_PLATFORM_GMTIME_R_ALT
Andres Amaya Garcia1abb3682018-08-16 21:42:09 +01004000
Christoph M. Wintersteigere50b9702018-12-14 11:03:02 +00004001/**
Christoph M. Wintersteiger50d9f092019-02-15 12:49:27 +00004002 * Enable the verified implementations of ECDH primitives from Project Everest
4003 * (currently only Curve25519). This feature changes the layout of ECDH
4004 * contexts and therefore is a compatibility break for applications that access
4005 * fields of a mbedtls_ecdh_context structure directly. See also
4006 * MBEDTLS_ECDH_LEGACY_CONTEXT in include/mbedtls/ecdh.h.
Christoph M. Wintersteiger02b80482018-10-25 12:41:04 +01004007 */
Christoph M. Wintersteiger6cddd302019-01-17 12:17:54 +00004008//#define MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED
Christoph M. Wintersteiger02b80482018-10-25 12:41:04 +01004009
Aditya Deshpandee41f7e42023-01-12 16:29:02 +00004010/**
4011 * Uncomment to enable p256-m, which implements ECC key generation, ECDH,
4012 * and ECDSA for SECP256R1 curves. This driver is used as an example to
4013 * document how a third-party driver or software accelerator can be integrated
4014 * to work alongside Mbed TLS.
4015 *
Aditya Deshpandebac592d2023-02-14 14:55:49 +00004016 * \warning p256-m has only been included to serve as a sample implementation
4017 * of how a driver/accelerator can be integrated alongside Mbed TLS. It is not
Aditya Deshpandef100f002023-03-21 14:49:31 +00004018 * intended for use in production. p256-m files in Mbed TLS are not updated
4019 * regularly, so they may not contain upstream fixes/improvements.
Aditya Deshpandee41f7e42023-01-12 16:29:02 +00004020 * DO NOT ENABLE/USE THIS MACRO IN PRODUCTION BUILDS!
4021 */
4022//#define MBEDTLS_P256M_EXAMPLE_DRIVER_ENABLED
4023
Gilles Peskine611179c2022-04-13 23:04:48 +02004024/** \} name SECTION: Module configuration options */