blob: 6096a3f3c25c1a58807d0bcbffd5119b174fb008 [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
Dave Rodgman16799db2023-11-02 19:47:20 +000012 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Manuel Pégourié-Gonnarde2b0efe2015-08-11 10:38:37 +020013 */
14
Bence Szépkúti2bb74562021-06-21 16:19:00 +020015/**
Tom Cosgrove1e211442022-05-26 11:51:00 +010016 * This is an optional version symbol that enables compatibility handling of
Bence Szépkúti2bb74562021-06-21 16:19:00 +020017 * config files.
18 *
Bence Szépkúti1b2a8832021-06-28 10:26:11 +010019 * It is equal to the #MBEDTLS_VERSION_NUMBER of the Mbed TLS version that
Bence Szépkúti2bb74562021-06-21 16:19:00 +020020 * introduced the config format we want to be compatible with.
21 */
Bence Szépkúti1cafe5c2021-06-22 09:30:08 +020022//#define MBEDTLS_CONFIG_VERSION 0x03000000
Bence Szépkútiba7248a2021-05-31 16:53:56 +020023
Paul Bakkerf3b86c12011-01-27 15:24:17 +000024/**
Paul Bakker0a62cd12011-01-21 11:00:08 +000025 * \name SECTION: System support
26 *
27 * This section sets system specific settings.
28 * \{
29 */
30
Paul Bakkerf3b86c12011-01-27 15:24:17 +000031/**
Gilles Peskinee820c0a2023-08-03 17:45:20 +020032 * \name SECTION: Mbed TLS feature support
Paul Bakker0a62cd12011-01-21 11:00:08 +000033 *
34 * This section sets support for features that are or are not needed
35 * within the modules that are enabled.
36 * \{
37 */
Paul Bakker5121ce52009-01-03 21:22:43 +000038
Paul Bakkerf3b86c12011-01-27 15:24:17 +000039/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020040 * \def MBEDTLS_TIMING_ALT
Paul Bakkerf2561b32014-02-06 15:11:55 +010041 *
TRodziewiczd8540832021-06-10 15:16:50 +020042 * Uncomment to provide your own alternate implementation for
Manuel Pégourié-Gonnarda63bc942015-05-14 18:22:47 +020043 * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay()
Paul Bakkerf2561b32014-02-06 15:11:55 +010044 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020045 * Only works if you have MBEDTLS_TIMING_C enabled.
Paul Bakkerf2561b32014-02-06 15:11:55 +010046 *
47 * You will need to provide a header "timing_alt.h" and an implementation at
48 * compile time.
49 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020050//#define MBEDTLS_TIMING_ALT
Paul Bakkerf2561b32014-02-06 15:11:55 +010051
Paul Bakker90995b52013-06-24 19:20:35 +020052/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020053 * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020054 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +020055 * Enable the PSK based ciphersuite modes in SSL / TLS.
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020056 *
Paul Bakkere07f41d2013-04-19 09:08:57 +020057 * This enables the following ciphersuites (if other requisites are
58 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020059 * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
60 * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
61 * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
62 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
63 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
64 * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
65 * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
66 * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
67 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
68 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020069 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020070#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020071
72/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020073 * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +020074 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +020075 * Enable the DHE-PSK based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +020076 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020077 * Requires: MBEDTLS_DHM_C
Paul Bakkere07f41d2013-04-19 09:08:57 +020078 *
79 * This enables the following ciphersuites (if other requisites are
80 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020081 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
82 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
83 * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
84 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
85 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
86 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
87 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
88 * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
89 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
90 * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
Hanno Beckera2f6b722017-09-28 10:33:29 +010091 *
Hanno Beckerf9734b32017-10-03 12:09:22 +010092 * \warning Using DHE constitutes a security risk as it
93 * is not possible to validate custom DH parameters.
94 * If possible, it is recommended users should consider
95 * preferring other methods of key exchange.
96 * See dhm.h for more details.
Hanno Beckera2f6b722017-09-28 10:33:29 +010097 *
Paul Bakkere07f41d2013-04-19 09:08:57 +020098 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020099#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200100
101/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200102 * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200103 *
104 * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
105 *
Janos Follath277bba82024-11-19 16:14:00 +0000106 * Requires: MBEDTLS_ECDH_C or PSA_WANT_ALG_ECDH
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200107 *
108 * This enables the following ciphersuites (if other requisites are
109 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200110 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
111 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
112 * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
113 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
114 * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
115 * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200116 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200117#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
Manuel Pégourié-Gonnard3ce3bbd2013-10-11 16:53:50 +0200118
119/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200120 * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200121 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200122 * Enable the RSA-only based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200123 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200124 * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
125 * MBEDTLS_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200126 *
127 * This enables the following ciphersuites (if other requisites are
128 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200129 * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384
130 * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
131 * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA
132 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
133 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
134 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
135 * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256
136 * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256
137 * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA
138 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
139 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
140 * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
Paul Bakkere07f41d2013-04-19 09:08:57 +0200141 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200142#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200143
144/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200145 * \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200146 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200147 * Enable the DHE-RSA based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200148 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200149 * Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
150 * MBEDTLS_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200151 *
152 * This enables the following ciphersuites (if other requisites are
153 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200154 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
155 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
156 * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
157 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
158 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
159 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
160 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
161 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
162 * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
163 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
164 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
165 * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
Hanno Beckera2f6b722017-09-28 10:33:29 +0100166 *
Hanno Beckerf9734b32017-10-03 12:09:22 +0100167 * \warning Using DHE constitutes a security risk as it
168 * is not possible to validate custom DH parameters.
169 * If possible, it is recommended users should consider
170 * preferring other methods of key exchange.
171 * See dhm.h for more details.
Hanno Beckera2f6b722017-09-28 10:33:29 +0100172 *
Paul Bakkere07f41d2013-04-19 09:08:57 +0200173 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200174#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200175
176/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200177 * \def MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200178 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200179 * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS.
Paul Bakkere07f41d2013-04-19 09:08:57 +0200180 *
Janos Follath277bba82024-11-19 16:14:00 +0000181 * Requires: MBEDTLS_ECDH_C or PSA_WANT_ALG_ECDH
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200182 * MBEDTLS_RSA_C
183 * MBEDTLS_PKCS1_V15
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200184 * MBEDTLS_X509_CRT_PARSE_C
Paul Bakkere07f41d2013-04-19 09:08:57 +0200185 *
186 * This enables the following ciphersuites (if other requisites are
187 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200188 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
189 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
190 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
191 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
192 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
193 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
194 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
195 * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
196 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
197 * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
Paul Bakkere07f41d2013-04-19 09:08:57 +0200198 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200199#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Paul Bakkere07f41d2013-04-19 09:08:57 +0200200
201/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200202 * \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200203 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200204 * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200205 *
Janos Follath277bba82024-11-19 16:14:00 +0000206 * Requires: MBEDTLS_ECDH_C or PSA_WANT_ALG_ECDH
207 * MBEDTLS_ECDSA_C or PSA_WANT_ALG_ECDSA
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200208 * MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200209 *
210 * This enables the following ciphersuites (if other requisites are
211 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200212 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
213 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
214 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
215 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
216 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
217 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
218 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
219 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
220 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
221 * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200222 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200223#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200224
225/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200226 * \def MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100227 *
228 * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
229 *
Janos Follath277bba82024-11-19 16:14:00 +0000230 * Requires: MBEDTLS_ECDH_C or PSA_WANT_ALG_ECDH
231 * MBEDTLS_ECDSA_C or PSA_WANT_ALG_ECDSA
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200232 * MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100233 *
234 * This enables the following ciphersuites (if other requisites are
235 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200236 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
237 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
238 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
239 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
240 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
241 * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
242 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
243 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
244 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
245 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100246 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200247#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100248
249/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200250 * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100251 *
252 * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS.
253 *
Janos Follath277bba82024-11-19 16:14:00 +0000254 * Requires: MBEDTLS_ECDH_C or PSA_WANT_ALG_ECDH
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200255 * MBEDTLS_RSA_C
256 * MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100257 *
258 * This enables the following ciphersuites (if other requisites are
259 * enabled as well):
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200260 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
261 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
262 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
263 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
264 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
265 * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
266 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
267 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
268 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
269 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100270 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200271#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100272
273/**
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +0200274 * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
275 *
276 * Enable the ECJPAKE based ciphersuite modes in SSL / TLS.
277 *
Manuel Pégourié-Gonnard75df9022015-09-16 23:21:01 +0200278 * \warning This is currently experimental. EC J-PAKE support is based on the
279 * Thread v1.0.0 specification; incompatible changes to the specification
280 * might still happen. For this reason, this is disabled by default.
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +0200281 *
Janos Follath277bba82024-11-19 16:14:00 +0000282 * Requires: MBEDTLS_ECJPAKE_C or PSA_WANT_ALG_JPAKE
Manuel Pégourié-Gonnard41bc8b62023-03-14 23:59:24 +0100283 * SHA-256 (via MBEDTLS_SHA256_C or a PSA driver)
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +0200284 * MBEDTLS_ECP_DP_SECP256R1_ENABLED
285 *
286 * This enables the following ciphersuites (if other requisites are
287 * enabled as well):
288 * MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
289 */
Manuel Pégourié-Gonnardcf828932015-10-20 14:57:00 +0200290//#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard557535d2015-09-15 17:53:32 +0200291
292/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200293 * \def MBEDTLS_ERROR_STRERROR_DUMMY
Paul Bakker8fe40dc2013-02-02 12:43:08 +0100294 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200295 * Enable a dummy error function to make use of mbedtls_strerror() in
296 * third party libraries easier when MBEDTLS_ERROR_C is disabled
297 * (no effect when MBEDTLS_ERROR_C is enabled).
Manuel Pégourié-Gonnarddc16aa72014-06-25 12:55:12 +0200298 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200299 * You can safely disable this if MBEDTLS_ERROR_C is enabled, or if you're
300 * not using mbedtls_strerror() or error_strerror() in your application.
Paul Bakker8fe40dc2013-02-02 12:43:08 +0100301 *
302 * Disable if you run into name conflicts and want to really remove the
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200303 * mbedtls_strerror()
Paul Bakker8fe40dc2013-02-02 12:43:08 +0100304 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200305#define MBEDTLS_ERROR_STRERROR_DUMMY
Paul Bakker8fe40dc2013-02-02 12:43:08 +0100306
307/**
Gilles Peskine9e9e1f62024-05-31 18:38:36 +0200308 * \def MBEDTLS_PSA_KEY_STORE_DYNAMIC
309 *
310 * Dynamically resize the PSA key store to accommodate any number of
311 * volatile keys (until the heap memory is exhausted).
312 *
313 * If this option is disabled, the key store has a fixed size
314 * #MBEDTLS_PSA_KEY_SLOT_COUNT for volatile keys and loaded persistent keys
315 * together.
316 *
317 * This option has no effect when #MBEDTLS_PSA_CRYPTO_C is disabled.
318 *
319 * Module: library/psa_crypto.c
320 * Requires: MBEDTLS_PSA_CRYPTO_C
321 */
322#define MBEDTLS_PSA_KEY_STORE_DYNAMIC
323
324/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200325 * \def MBEDTLS_SELF_TEST
Paul Bakker15566e42011-04-24 21:19:15 +0000326 *
327 * Enable the checkup functions (*_self_test).
328 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200329#define MBEDTLS_SELF_TEST
Paul Bakker5c721f92011-07-27 16:51:09 +0000330
331/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200332 * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES
Paul Bakker40865c82013-01-31 17:13:13 +0100333 *
334 * Enable sending of alert messages in case of encountered errors as per RFC.
Gilles Peskinee820c0a2023-08-03 17:45:20 +0200335 * If you choose not to send the alert messages, Mbed TLS can still communicate
Paul Bakker40865c82013-01-31 17:13:13 +0100336 * with other servers, only debugging of failures is harder.
337 *
338 * The advantage of not sending alert messages, is that no information is given
339 * about reasons for failures thus preventing adversaries of gaining intel.
340 *
341 * Enable sending of all alert messages
342 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200343#define MBEDTLS_SSL_ALL_ALERT_MESSAGES
Paul Bakker40865c82013-01-31 17:13:13 +0100344
345/**
Gilles Peskined3d02902020-03-04 21:35:27 +0100346 * \def MBEDTLS_SSL_DTLS_CONNECTION_ID
347 *
Hannes Tschofenige2c46e02022-11-23 10:44:11 +0100348 * Enable support for the DTLS Connection ID (CID) extension,
Gilles Peskined3d02902020-03-04 21:35:27 +0100349 * which allows to identify DTLS connections across changes
Hannes Tschofenige2c46e02022-11-23 10:44:11 +0100350 * in the underlying transport. The CID functionality is described
351 * in RFC 9146.
Gilles Peskined3d02902020-03-04 21:35:27 +0100352 *
353 * Setting this option enables the SSL APIs `mbedtls_ssl_set_cid()`,
Paul Elliott0113cf12022-03-11 20:26:47 +0000354 * mbedtls_ssl_get_own_cid()`, `mbedtls_ssl_get_peer_cid()` and
355 * `mbedtls_ssl_conf_cid()`. See the corresponding documentation for
356 * more information.
Gilles Peskined3d02902020-03-04 21:35:27 +0100357 *
Gilles Peskined3d02902020-03-04 21:35:27 +0100358 * The maximum lengths of outgoing and incoming CIDs can be configured
359 * through the options
360 * - MBEDTLS_SSL_CID_OUT_LEN_MAX
361 * - MBEDTLS_SSL_CID_IN_LEN_MAX.
362 *
363 * Requires: MBEDTLS_SSL_PROTO_DTLS
364 *
365 * Uncomment to enable the Connection ID extension.
366 */
Hannes Tschofenigfd6cca42021-10-12 09:22:33 +0200367#define MBEDTLS_SSL_DTLS_CONNECTION_ID
368
369
370/**
371 * \def MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT
372 *
373 * Defines whether RFC 9146 (default) or the legacy version
374 * (version draft-ietf-tls-dtls-connection-id-05,
375 * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05)
376 * is used.
377 *
378 * Set the value to 0 for the standard version, and
379 * 1 for the legacy draft version.
380 *
Hannes Tschofenige2c46e02022-11-23 10:44:11 +0100381 * \deprecated Support for the legacy version of the DTLS
382 * Connection ID feature is deprecated. Please
383 * switch to the standardized version defined
384 * in RFC 9146 enabled by utilizing
385 * MBEDTLS_SSL_DTLS_CONNECTION_ID without use
386 * of MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT.
387 *
Hannes Tschofenigfd6cca42021-10-12 09:22:33 +0200388 * Requires: MBEDTLS_SSL_DTLS_CONNECTION_ID
389 */
390#define MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT 0
Gilles Peskined3d02902020-03-04 21:35:27 +0100391
392/**
Gilles Peskineb74a1c72018-04-24 13:09:22 +0200393 * \def MBEDTLS_SSL_ASYNC_PRIVATE
394 *
395 * Enable asynchronous external private key operations in SSL. This allows
396 * you to configure an SSL connection to call an external cryptographic
397 * module to perform private key operations instead of performing the
398 * operation inside the library.
399 *
Valerio Setti8841d6b2023-01-05 08:40:24 +0100400 * Requires: MBEDTLS_X509_CRT_PARSE_C
Gilles Peskineb74a1c72018-04-24 13:09:22 +0200401 */
Jaeden Amerod9c71da2018-06-15 20:31:26 +0100402//#define MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskineb74a1c72018-04-24 13:09:22 +0200403
404/**
Gilles Peskined3d02902020-03-04 21:35:27 +0100405 * \def MBEDTLS_SSL_CONTEXT_SERIALIZATION
406 *
407 * Enable serialization of the TLS context structures, through use of the
408 * functions mbedtls_ssl_context_save() and mbedtls_ssl_context_load().
409 *
410 * This pair of functions allows one side of a connection to serialize the
411 * context associated with the connection, then free or re-use that context
412 * while the serialized state is persisted elsewhere, and finally deserialize
413 * that state to a live context for resuming read/write operations on the
414 * connection. From a protocol perspective, the state of the connection is
415 * unaffected, in particular this is entirely transparent to the peer.
416 *
417 * Note: this is distinct from TLS session resumption, which is part of the
418 * protocol and fully visible by the peer. TLS session resumption enables
419 * establishing new connections associated to a saved session with shorter,
420 * lighter handshakes, while context serialization is a local optimization in
421 * handling a single, potentially long-lived connection.
422 *
423 * Enabling these APIs makes some SSL structures larger, as 64 extra bytes are
424 * saved after the handshake to allow for more efficient serialization, so if
425 * you don't need this feature you'll save RAM by disabling it.
426 *
Przemek Stekiel460192e2022-10-03 08:55:29 +0200427 * Requires: MBEDTLS_GCM_C or MBEDTLS_CCM_C or MBEDTLS_CHACHAPOLY_C
428 *
Gilles Peskined3d02902020-03-04 21:35:27 +0100429 * Comment to disable the context serialization APIs.
430 */
431#define MBEDTLS_SSL_CONTEXT_SERIALIZATION
432
433/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200434 * \def MBEDTLS_SSL_DEBUG_ALL
Paul Bakkerd66f0702013-01-31 16:57:45 +0100435 *
436 * Enable the debug messages in SSL module for all issues.
437 * Debug messages have been disabled in some places to prevent timing
438 * attacks due to (unbalanced) debugging function calls.
439 *
440 * If you need all error reporting you should enable this during debugging,
441 * but remove this for production servers that should log as well.
442 *
443 * Uncomment this macro to report all debug messages on errors introducing
444 * a timing side-channel.
445 *
Paul Bakkerd66f0702013-01-31 16:57:45 +0100446 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200447//#define MBEDTLS_SSL_DEBUG_ALL
Paul Bakkerd66f0702013-01-31 16:57:45 +0100448
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200449/** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100450 *
451 * Enable support for Encrypt-then-MAC, RFC 7366.
452 *
453 * This allows peers that both support it to use a more robust protection for
454 * ciphersuites using CBC, providing deep resistance against timing attacks
455 * on the padding or underlying cipher.
456 *
457 * This only affects CBC ciphersuites, and is useless if none is defined.
458 *
TRodziewicz0f82ec62021-05-12 17:49:18 +0200459 * Requires: MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100460 *
461 * Comment this macro to disable support for Encrypt-then-MAC
462 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200463#define MBEDTLS_SSL_ENCRYPT_THEN_MAC
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100464
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200465/** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +0200466 *
Manuel Pégourié-Gonnardbca8aa02020-03-24 12:11:49 +0100467 * Enable support for RFC 7627: Session Hash and Extended Master Secret
468 * Extension.
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +0200469 *
Shaun Case8b0ecbc2021-12-20 21:14:10 -0800470 * This was introduced as "the proper fix" to the Triple Handshake family of
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +0200471 * attacks, but it is recommended to always use it (even if you disable
472 * renegotiation), since it actually fixes a more fundamental issue in the
473 * original SSL/TLS design, and has implications beyond Triple Handshake.
474 *
TRodziewicz0f82ec62021-05-12 17:49:18 +0200475 * Requires: MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard769c6b62014-10-28 14:13:55 +0100476 *
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +0200477 * Comment this macro to disable support for Extended Master Secret.
478 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200479#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +0200480
Paul Bakkerd66f0702013-01-31 16:57:45 +0100481/**
Hanno Beckerbb278f52019-02-05 17:04:00 +0000482 * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
483 *
Hanno Beckerfd7f2982019-02-25 10:13:33 +0000484 * This option controls the availability of the API mbedtls_ssl_get_peer_cert()
Hanno Beckerbb278f52019-02-05 17:04:00 +0000485 * giving access to the peer's certificate after completion of the handshake.
486 *
487 * Unless you need mbedtls_ssl_peer_cert() in your application, it is
488 * recommended to disable this option for reduced RAM usage.
489 *
490 * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still
491 * defined, but always returns \c NULL.
492 *
493 * \note This option has no influence on the protection against the
494 * triple handshake attack. Even if it is disabled, Mbed TLS will
495 * still ensure that certificates do not change during renegotiation,
Shaun Case8b0ecbc2021-12-20 21:14:10 -0800496 * for example by keeping a hash of the peer's certificate.
Hanno Beckerbb278f52019-02-05 17:04:00 +0000497 *
Tom Cosgroveafb2fe12022-06-29 16:36:12 +0100498 * \note This option is required if MBEDTLS_SSL_PROTO_TLS1_3 is set.
Hanno Beckerbb278f52019-02-05 17:04:00 +0000499 *
500 * Comment this macro to disable storing the peer's certificate
501 * after the handshake.
502 */
503#define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
504
505/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200506 * \def MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +0100507 *
Hanno Becker0eb8fb82018-10-26 09:53:16 +0100508 * Enable support for TLS renegotiation.
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +0100509 *
510 * The two main uses of renegotiation are (1) refresh keys on long-lived
511 * connections and (2) client authentication after the initial handshake.
512 * If you don't need renegotiation, it's probably better to disable it, since
513 * it has been associated with security issues in the past and is easy to
514 * misuse/misunderstand.
Manuel Pégourié-Gonnard03717042014-11-04 19:52:10 +0100515 *
jnmeurisse83f0a652023-09-16 18:12:18 +0200516 * Requires: MBEDTLS_SSL_PROTO_TLS1_2
517 *
Manuel Pégourié-Gonnard55f968b2015-03-09 16:23:15 +0000518 * Comment this to disable support for renegotiation.
Hanno Becker6851b102017-10-12 14:57:48 +0100519 *
520 * \note Even if this option is disabled, both client and server are aware
521 * of the Renegotiation Indication Extension (RFC 5746) used to
522 * prevent the SSL renegotiation attack (see RFC 5746 Sect. 1).
523 * (See \c mbedtls_ssl_conf_legacy_renegotiation for the
524 * configuration of this extension).
525 *
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +0100526 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200527#define MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard615e6772014-11-03 08:23:14 +0100528
529/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200530 * \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Paul Bakker05decb22013-08-15 13:33:48 +0200531 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200532 * Enable support for RFC 6066 max_fragment_length extension in SSL.
Paul Bakker05decb22013-08-15 13:33:48 +0200533 *
534 * Comment this macro to disable support for the max_fragment_length extension
535 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200536#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Paul Bakker05decb22013-08-15 13:33:48 +0200537
538/**
Jan Bruckner151f6422023-02-10 12:45:19 +0100539 * \def MBEDTLS_SSL_RECORD_SIZE_LIMIT
540 *
Jan Brucknera0589e72023-03-15 11:04:45 +0100541 * Enable support for RFC 8449 record_size_limit extension in SSL (TLS 1.3 only).
Jan Bruckner151f6422023-02-10 12:45:19 +0100542 *
Jan Bruckner151f6422023-02-10 12:45:19 +0100543 * Requires: MBEDTLS_SSL_PROTO_TLS1_3
544 *
545 * Uncomment this macro to enable support for the record_size_limit extension
546 */
547//#define MBEDTLS_SSL_RECORD_SIZE_LIMIT
548
549/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200550 * \def MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200551 *
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +0100552 * Enable support for TLS 1.2 (and DTLS 1.2 if DTLS is enabled).
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200553 *
Janos Follath277bba82024-11-19 16:14:00 +0000554 * Requires: PSA_WANT_ALG_SHA_256 or PSA_WANT_ALG_SHA_384
Andrzej Kureke02da812022-08-17 17:04:49 -0400555 *
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +0100556 * Comment this macro to disable support for TLS 1.2 / DTLS 1.2
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200557 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200558#define MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakkerd2f068e2013-08-27 21:19:20 +0200559
560/**
Ronald Cron6f135e12021-12-08 16:57:54 +0100561 * \def MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker9fc15ea2020-05-04 12:00:47 +0100562 *
Ronald Cron6f135e12021-12-08 16:57:54 +0100563 * Enable support for TLS 1.3.
Hanno Becker9fc15ea2020-05-04 12:00:47 +0100564 *
Gilles Peskineda69eaa2023-09-05 20:54:17 +0200565 * \note See docs/architecture/tls13-support.md for a description of the TLS
Ronald Cron6f135e12021-12-08 16:57:54 +0100566 * 1.3 support that this option enables.
Hanno Becker9fc15ea2020-05-04 12:00:47 +0100567 *
Tom Cosgroveafb2fe12022-06-29 16:36:12 +0100568 * Requires: MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
Manuel Pégourié-Gonnard3e830982022-05-11 13:27:44 +0200569 * Requires: MBEDTLS_PSA_CRYPTO_C
Ronald Cron6f135e12021-12-08 16:57:54 +0100570 *
Hanno Becker9fc15ea2020-05-04 12:00:47 +0100571 * Uncomment this macro to enable the support for TLS 1.3.
Hanno Becker9fc15ea2020-05-04 12:00:47 +0100572 */
Ronald Cron27eb68d2024-03-15 16:13:37 +0100573#define MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker9fc15ea2020-05-04 12:00:47 +0100574
575/**
Ronald Cronab65c522021-11-24 10:47:20 +0100576 * \def MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
577 *
578 * Enable TLS 1.3 middlebox compatibility mode.
579 *
580 * As specified in Section D.4 of RFC 8446, TLS 1.3 offers a compatibility
581 * mode to make a TLS 1.3 connection more likely to pass through middle boxes
582 * expecting TLS 1.2 traffic.
583 *
584 * Turning on the compatibility mode comes at the cost of a few added bytes
585 * on the wire, but it doesn't affect compatibility with TLS 1.3 implementations
586 * that don't use it. Therefore, unless transmission bandwidth is critical and
587 * you know that middlebox compatibility issues won't occur, it is therefore
588 * recommended to set this option.
589 *
590 * Comment to disable compatibility mode for TLS 1.3. If
Ronald Cron6f135e12021-12-08 16:57:54 +0100591 * MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
592 * effect on the build.
Ronald Cronab65c522021-11-24 10:47:20 +0100593 *
594 */
Ronald Cron27eb68d2024-03-15 16:13:37 +0100595#define MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cronab65c522021-11-24 10:47:20 +0100596
597/**
Ronald Crond8d2ea52022-10-04 15:48:06 +0200598 * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
599 *
600 * Enable TLS 1.3 PSK key exchange mode.
601 *
602 * Comment to disable support for the PSK key exchange mode in TLS 1.3. If
603 * MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
604 * effect on the build.
605 *
606 */
607#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
608
609/**
610 * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
611 *
612 * Enable TLS 1.3 ephemeral key exchange mode.
613 *
Przemek Stekielce05f542023-06-15 16:44:08 +0200614 * Requires: PSA_WANT_ALG_ECDH or PSA_WANT_ALG_FFDH
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200615 * MBEDTLS_X509_CRT_PARSE_C
616 * and at least one of:
Janos Follath277bba82024-11-19 16:14:00 +0000617 * MBEDTLS_ECDSA_C or PSA_WANT_ALG_ECDSA
Manuel Pégourié-Gonnard4fa702a2023-03-29 12:15:24 +0200618 * MBEDTLS_PKCS1_V21
Ronald Crond8d2ea52022-10-04 15:48:06 +0200619 *
620 * Comment to disable support for the ephemeral key exchange mode in TLS 1.3.
621 * If MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
622 * effect on the build.
623 *
624 */
625#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
626
627/**
628 * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
629 *
630 * Enable TLS 1.3 PSK ephemeral key exchange mode.
631 *
Przemek Stekielce05f542023-06-15 16:44:08 +0200632 * Requires: PSA_WANT_ALG_ECDH or PSA_WANT_ALG_FFDH
Ronald Crond8d2ea52022-10-04 15:48:06 +0200633 *
634 * Comment to disable support for the PSK ephemeral key exchange mode in
635 * TLS 1.3. If MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not
636 * have any effect on the build.
637 *
638 */
639#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
640
641/**
Gilles Peskine449bd832023-01-11 14:50:10 +0100642 * \def MBEDTLS_SSL_EARLY_DATA
643 *
644 * Enable support for RFC 8446 TLS 1.3 early data.
645 *
646 * Requires: MBEDTLS_SSL_SESSION_TICKETS and either
647 * MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED or
648 * MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
649 *
650 * Comment this to disable support for early data. If MBEDTLS_SSL_PROTO_TLS1_3
651 * is not enabled, this option does not have any effect on the build.
652 *
Tom Cosgrovea63775b2023-09-14 13:31:19 +0100653 * \note The maximum amount of early data can be set with
654 * MBEDTLS_SSL_MAX_EARLY_DATA_SIZE.
655 *
Gilles Peskine449bd832023-01-11 14:50:10 +0100656 */
Ronald Cronc2e110f2022-11-22 09:01:46 +0100657//#define MBEDTLS_SSL_EARLY_DATA
Xiaokang Qian54413b12022-10-20 05:57:03 +0000658
659/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200660 * \def MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +0100661 *
662 * Enable support for DTLS (all available versions).
663 *
TRodziewicz0f82ec62021-05-12 17:49:18 +0200664 * Enable this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2.
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +0100665 *
TRodziewicz0f82ec62021-05-12 17:49:18 +0200666 * Requires: MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +0100667 *
668 * Comment this macro to disable support for DTLS
669 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200670#define MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard0b1ff292014-02-06 13:04:16 +0100671
672/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200673 * \def MBEDTLS_SSL_ALPN
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +0200674 *
Manuel Pégourié-Gonnard6b298e62014-11-20 18:28:50 +0100675 * Enable support for RFC 7301 Application Layer Protocol Negotiation.
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +0200676 *
Paul Bakker27e36d32014-04-08 12:33:37 +0200677 * Comment this macro to disable support for ALPN.
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +0200678 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200679#define MBEDTLS_SSL_ALPN
Manuel Pégourié-Gonnard7e250d42014-04-04 16:08:41 +0200680
681/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200682 * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +0200683 *
684 * Enable support for the anti-replay mechanism in DTLS.
685 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200686 * Requires: MBEDTLS_SSL_TLS_C
687 * MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +0200688 *
Manuel Pégourié-Gonnarda6fcffe2014-10-13 18:15:52 +0200689 * \warning Disabling this is often a security risk!
Manuel Pégourié-Gonnard6729e792015-05-11 09:50:24 +0200690 * See mbedtls_ssl_conf_dtls_anti_replay() for details.
Manuel Pégourié-Gonnarda6fcffe2014-10-13 18:15:52 +0200691 *
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +0200692 * Comment this to disable anti-replay in DTLS.
693 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200694#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
Manuel Pégourié-Gonnard8464a462014-09-24 14:05:32 +0200695
696/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200697 * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY
Manuel Pégourié-Gonnard82202f02014-07-23 00:28:58 +0200698 *
699 * Enable support for HelloVerifyRequest on DTLS servers.
700 *
701 * This feature is highly recommended to prevent DTLS servers being used as
702 * amplifiers in DoS attacks against other hosts. It should always be enabled
703 * unless you know for sure amplification cannot be a problem in the
704 * environment in which your server operates.
705 *
Andrzej Kurek5c65c572022-04-13 14:28:52 -0400706 * \warning Disabling this can be a security risk! (see above)
Manuel Pégourié-Gonnarda6fcffe2014-10-13 18:15:52 +0200707 *
Manuel Pégourié-Gonnarde057d3b2015-05-20 10:59:43 +0200708 * Requires: MBEDTLS_SSL_PROTO_DTLS
Manuel Pégourié-Gonnard82202f02014-07-23 00:28:58 +0200709 *
710 * Comment this to disable support for HelloVerifyRequest.
711 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200712#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
Manuel Pégourié-Gonnard82202f02014-07-23 00:28:58 +0200713
714/**
Johan Pascalb62bb512015-12-03 21:56:45 +0100715 * \def MBEDTLS_SSL_DTLS_SRTP
716 *
Tobias Nießen1e8ca122021-05-10 19:53:15 +0200717 * Enable support for negotiation of DTLS-SRTP (RFC 5764)
Johan Pascal842d6712020-09-23 13:34:40 +0200718 * through the use_srtp extension.
719 *
720 * \note This feature provides the minimum functionality required
721 * to negotiate the use of DTLS-SRTP and to allow the derivation of
722 * the associated SRTP packet protection key material.
723 * In particular, the SRTP packet protection itself, as well as the
724 * demultiplexing of RTP and DTLS packets at the datagram layer
725 * (see Section 5 of RFC 5764), are not handled by this feature.
726 * Instead, after successful completion of a handshake negotiating
727 * the use of DTLS-SRTP, the extended key exporter API
Hanno Becker2d6e6f82021-05-24 10:58:31 +0100728 * mbedtls_ssl_conf_export_keys_cb() should be used to implement
Johan Pascal842d6712020-09-23 13:34:40 +0200729 * the key exporter described in Section 4.2 of RFC 5764 and RFC 5705
730 * (this is implemented in the SSL example programs).
731 * The resulting key should then be passed to an SRTP stack.
732 *
733 * Setting this option enables the runtime API
734 * mbedtls_ssl_conf_dtls_srtp_protection_profiles()
735 * through which the supported DTLS-SRTP protection
736 * profiles can be configured. You must call this API at
737 * runtime if you wish to negotiate the use of DTLS-SRTP.
Johan Pascalb62bb512015-12-03 21:56:45 +0100738 *
739 * Requires: MBEDTLS_SSL_PROTO_DTLS
740 *
Ron Eldor9cfb5eb2018-12-10 15:30:14 +0200741 * Uncomment this to enable support for use_srtp extension.
Johan Pascalb62bb512015-12-03 21:56:45 +0100742 */
Ron Eldor9cfb5eb2018-12-10 15:30:14 +0200743//#define MBEDTLS_SSL_DTLS_SRTP
Johan Pascalb62bb512015-12-03 21:56:45 +0100744
745/**
Manuel Pégourié-Gonnard26d227d2015-09-04 10:53:25 +0200746 * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
747 *
748 * Enable server-side support for clients that reconnect from the same port.
749 *
750 * Some clients unexpectedly close the connection and try to reconnect using the
751 * same source port. This needs special support from the server to handle the
Simon Butcher4f6882a2015-09-11 17:12:46 +0100752 * new connection securely, as described in section 4.2.8 of RFC 6347. This
Manuel Pégourié-Gonnard26d227d2015-09-04 10:53:25 +0200753 * flag enables that support.
754 *
Manuel Pégourié-Gonnard62c74bb2015-09-08 17:50:29 +0200755 * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY
Manuel Pégourié-Gonnard62c74bb2015-09-08 17:50:29 +0200756 *
Manuel Pégourié-Gonnard26d227d2015-09-04 10:53:25 +0200757 * Comment this to disable support for clients reusing the source port.
758 */
759#define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
760
761/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200762 * \def MBEDTLS_SSL_SESSION_TICKETS
Paul Bakkera503a632013-08-14 13:48:06 +0200763 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200764 * Enable support for RFC 5077 session tickets in SSL.
Antonin Décimo36e89b52019-01-23 15:24:37 +0100765 * Client-side, provides full support for session tickets (maintenance of a
Manuel Pégourié-Gonnard0c0f11f2015-05-20 09:55:50 +0200766 * session store remains the responsibility of the application, though).
767 * Server-side, you also need to provide callbacks for writing and parsing
768 * tickets, including authenticated encryption and key management. Example
769 * callbacks are provided by MBEDTLS_SSL_TICKET_C.
Paul Bakkera503a632013-08-14 13:48:06 +0200770 *
771 * Comment this macro to disable support for SSL session tickets
772 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200773#define MBEDTLS_SSL_SESSION_TICKETS
Paul Bakkera503a632013-08-14 13:48:06 +0200774
775/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200776 * \def MBEDTLS_SSL_SERVER_NAME_INDICATION
Paul Bakker0be444a2013-08-27 21:55:01 +0200777 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200778 * Enable support for RFC 6066 server name indication (SNI) in SSL.
Paul Bakker0be444a2013-08-27 21:55:01 +0200779 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200780 * Requires: MBEDTLS_X509_CRT_PARSE_C
Manuel Pégourié-Gonnardbbbb3cf2015-01-28 16:44:37 +0000781 *
Paul Bakker0be444a2013-08-27 21:55:01 +0200782 * Comment this macro to disable support for server name indication in SSL
783 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200784#define MBEDTLS_SSL_SERVER_NAME_INDICATION
Paul Bakker0be444a2013-08-27 21:55:01 +0200785
786/**
Gilles Peskinef03bd812020-03-23 18:13:58 +0100787 * \def MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
788 *
Andrzej Kurek2a54a6f2021-01-07 08:13:49 -0500789 * When this option is enabled, the SSL buffer will be resized automatically
790 * based on the negotiated maximum fragment length in each direction.
Andrzej Kurek557289b2020-10-21 15:12:39 +0200791 *
792 * Requires: MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Gilles Peskinef03bd812020-03-23 18:13:58 +0100793 */
794//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
795
796/**
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +0200797 * \def MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
798 *
799 * Enable testing of the constant-flow nature of some sensitive functions with
800 * clang's MemorySanitizer. This causes some existing tests to also test
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +0200801 * this non-functional property of the code under test.
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +0200802 *
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +0200803 * This setting requires compiling with clang -fsanitize=memory. The test
804 * suites can then be run normally.
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +0200805 *
Manuel Pégourié-Gonnard8ff863b2020-07-31 12:59:34 +0200806 * \warning This macro is only used for extended testing; it is not considered
807 * part of the library's API, so it may change or disappear at any time.
808 *
Manuel Pégourié-Gonnard390fb4f2020-07-24 11:08:40 +0200809 * Uncomment to enable testing of the constant-flow nature of selected code.
Manuel Pégourié-Gonnard6240def2020-07-10 09:35:54 +0200810 */
811//#define MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
812
813/**
Manuel Pégourié-Gonnard73afa372020-08-19 10:27:38 +0200814 * \def MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
815 *
816 * Enable testing of the constant-flow nature of some sensitive functions with
817 * valgrind's memcheck tool. This causes some existing tests to also test
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +0200818 * this non-functional property of the code under test.
Manuel Pégourié-Gonnard73afa372020-08-19 10:27:38 +0200819 *
820 * This setting requires valgrind headers for building, and is only useful for
Manuel Pégourié-Gonnarddd00bfc2020-08-24 12:58:36 +0200821 * testing if the tests suites are run with valgrind's memcheck. This can be
822 * done for an individual test suite with 'valgrind ./test_suite_xxx', or when
823 * using CMake, this can be done for all test suites with 'make memcheck'.
Manuel Pégourié-Gonnard73afa372020-08-19 10:27:38 +0200824 *
825 * \warning This macro is only used for extended testing; it is not considered
826 * part of the library's API, so it may change or disappear at any time.
827 *
828 * Uncomment to enable testing of the constant-flow nature of selected code.
829 */
830//#define MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
831
832/**
Gilles Peskinefea6eaf2019-09-11 13:27:48 +0200833 * \def MBEDTLS_TEST_HOOKS
834 *
835 * Enable features for invasive testing such as introspection functions and
836 * hooks for fault injection. This enables additional unit tests.
837 *
838 * Merely enabling this feature should not change the behavior of the product.
839 * It only adds new code, and new branching points where the default behavior
840 * is the same as when this feature is disabled.
841 * However, this feature increases the attack surface: there is an added
842 * risk of vulnerabilities, and more gadgets that can make exploits easier.
843 * Therefore this feature must never be enabled in production.
844 *
845 * See `docs/architecture/testing/mbed-crypto-invasive-testing.md` for more
846 * information.
847 *
848 * Uncomment to enable invasive tests.
849 */
850//#define MBEDTLS_TEST_HOOKS
851
852/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200853 * \def MBEDTLS_VERSION_FEATURES
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200854 *
855 * Allow run-time checking of compile-time enabled features. Thus allowing users
856 * to check at run-time if the library is for instance compiled with threading
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200857 * support via mbedtls_version_check_feature().
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200858 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200859 * Requires: MBEDTLS_VERSION_C
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200860 *
861 * Comment this to disable run-time checking and save ROM space
862 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200863#define MBEDTLS_VERSION_FEATURES
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200864
865/**
Hanno Becker288dedc2019-03-27 11:00:53 +0000866 * \def MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
867 *
Jarno Lamsaf49fedc2019-04-01 14:58:30 +0300868 * If set, this enables the X.509 API `mbedtls_x509_crt_verify_with_ca_cb()`
Hanno Becker288dedc2019-03-27 11:00:53 +0000869 * and the SSL API `mbedtls_ssl_conf_ca_cb()` which allow users to configure
870 * the set of trusted certificates through a callback instead of a linked
871 * list.
872 *
873 * This is useful for example in environments where a large number of trusted
874 * certificates is present and storing them in a linked list isn't efficient
875 * enough, or when the set of trusted certificates changes frequently.
876 *
Jarno Lamsaf49fedc2019-04-01 14:58:30 +0300877 * See the documentation of `mbedtls_x509_crt_verify_with_ca_cb()` and
Hanno Becker288dedc2019-03-27 11:00:53 +0000878 * `mbedtls_ssl_conf_ca_cb()` for more information.
879 *
Valerio Setti8e45cdd2023-01-05 09:32:29 +0100880 * Requires: MBEDTLS_X509_CRT_PARSE_C
881 *
Hanno Becker288dedc2019-03-27 11:00:53 +0000882 * Uncomment to enable trusted certificate callbacks.
883 */
884//#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
885
886/**
Hanno Becker612a2f12020-10-09 09:19:39 +0100887 * \def MBEDTLS_X509_REMOVE_INFO
Peter Kolbus9a969b62018-12-11 13:55:56 -0600888 *
Chris Jones2c745862020-12-16 11:41:06 +0000889 * Disable mbedtls_x509_*_info() and related APIs.
Peter Kolbus9a969b62018-12-11 13:55:56 -0600890 *
Chris Jones2c745862020-12-16 11:41:06 +0000891 * Uncomment to omit mbedtls_x509_*_info(), as well as mbedtls_debug_print_crt()
Peter Kolbus9a969b62018-12-11 13:55:56 -0600892 * and other functions/constants only used by these functions, thus reducing
893 * the code footprint by several KB.
894 */
Chris Jones2c745862020-12-16 11:41:06 +0000895//#define MBEDTLS_X509_REMOVE_INFO
Peter Kolbus9a969b62018-12-11 13:55:56 -0600896
897/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200898 * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT
Manuel Pégourié-Gonnardd1539b12014-06-06 16:42:37 +0200899 *
900 * Enable parsing and verification of X.509 certificates, CRLs and CSRS
901 * signed with RSASSA-PSS (aka PKCS#1 v2.1).
902 *
Tomi Fontanillesa70b3c22023-07-16 12:06:13 +0300903 * Requires: MBEDTLS_PKCS1_V21
904 *
Manuel Pégourié-Gonnardd1539b12014-06-06 16:42:37 +0200905 * Comment this macro to disallow using RSASSA-PSS in certificates.
906 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200907#define MBEDTLS_X509_RSASSA_PSS_SUPPORT
Gilles Peskinee820c0a2023-08-03 17:45:20 +0200908/** \} name SECTION: Mbed TLS feature support */
Paul Bakker0a62cd12011-01-21 11:00:08 +0000909
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000910/**
Gilles Peskinee820c0a2023-08-03 17:45:20 +0200911 * \name SECTION: Mbed TLS modules
Paul Bakker0a62cd12011-01-21 11:00:08 +0000912 *
Gilles Peskinee820c0a2023-08-03 17:45:20 +0200913 * This section enables or disables entire modules in Mbed TLS
Paul Bakker0a62cd12011-01-21 11:00:08 +0000914 * \{
915 */
Paul Bakker5121ce52009-01-03 21:22:43 +0000916
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000917/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200918 * \def MBEDTLS_DEBUG_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000919 *
920 * Enable the debug functions.
921 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000922 * Module: library/debug.c
Ronald Cronde1adee2022-03-07 16:20:30 +0100923 * Caller: library/ssl_msg.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000924 * library/ssl_tls.c
Ronald Cronde1adee2022-03-07 16:20:30 +0100925 * library/ssl_tls12_*.c
926 * library/ssl_tls13_*.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000927 *
928 * This module provides debugging functions.
929 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200930#define MBEDTLS_DEBUG_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000931
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000932/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200933 * \def MBEDTLS_ERROR_C
Paul Bakker9d781402011-05-09 16:17:09 +0000934 *
935 * Enable error code to error string conversion.
936 *
937 * Module: library/error.c
938 * Caller:
939 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200940 * This module enables mbedtls_strerror().
Paul Bakker9d781402011-05-09 16:17:09 +0000941 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200942#define MBEDTLS_ERROR_C
Paul Bakker9d781402011-05-09 16:17:09 +0000943
944/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200945 * \def MBEDTLS_MEMORY_BUFFER_ALLOC_C
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200946 *
947 * Enable the buffer allocator implementation that makes use of a (stack)
Manuel Pégourié-Gonnardb9ef1182015-05-26 16:15:20 +0200948 * based buffer to 'allocate' dynamic memory. (replaces calloc() and free()
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +0200949 * calls)
Paul Bakker6e339b52013-07-03 13:37:05 +0200950 *
951 * Module: library/memory_buffer_alloc.c
952 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200953 * Requires: MBEDTLS_PLATFORM_C
Gilles Peskinee820c0a2023-08-03 17:45:20 +0200954 * MBEDTLS_PLATFORM_MEMORY (to use it within Mbed TLS)
Paul Bakker6e339b52013-07-03 13:37:05 +0200955 *
956 * Enable this module to enable the buffer memory allocator.
Paul Bakker6e339b52013-07-03 13:37:05 +0200957 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200958//#define MBEDTLS_MEMORY_BUFFER_ALLOC_C
Paul Bakker6e339b52013-07-03 13:37:05 +0200959
960/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200961 * \def MBEDTLS_NET_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000962 *
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +0100963 * Enable the TCP and UDP over IPv6/IPv4 networking routines.
964 *
Simon Butcherd567a232016-03-09 20:19:21 +0000965 * \note This module only works on POSIX/Unix (including Linux, BSD and OS X)
966 * and Windows. For other platforms, you'll want to disable it, and write your
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +0100967 * own networking callbacks to be passed to \c mbedtls_ssl_set_bio().
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000968 *
Manuel Pégourié-Gonnard02049dc2016-02-22 16:42:51 +0000969 * \note See also our Knowledge Base article about porting to a new
970 * environment:
Dave Rodgmanb3196842022-10-12 16:47:08 +0100971 * 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 +0000972 *
Andres AG788aa4a2016-09-14 14:32:09 +0100973 * Module: library/net_sockets.c
Paul Bakker5121ce52009-01-03 21:22:43 +0000974 *
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +0100975 * This module provides networking routines.
Paul Bakker5121ce52009-01-03 21:22:43 +0000976 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200977#define MBEDTLS_NET_C
Paul Bakker5121ce52009-01-03 21:22:43 +0000978
Paul Bakkerf3b86c12011-01-27 15:24:17 +0000979/**
Nayna Jainc9deb182020-11-16 19:03:12 +0000980 * \def MBEDTLS_PKCS7_C
981 *
Dave Rodgman3fe2abf2023-03-10 17:05:54 +0000982 * Enable PKCS #7 core for using PKCS #7-formatted signatures.
Nayna Jainc9deb182020-11-16 19:03:12 +0000983 * RFC Link - https://tools.ietf.org/html/rfc2315
984 *
985 * Module: library/pkcs7.c
986 *
987 * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
Nick Child89e82e12022-11-09 10:36:10 -0600988 * MBEDTLS_X509_CRT_PARSE_C MBEDTLS_X509_CRL_PARSE_C,
989 * MBEDTLS_BIGNUM_C, MBEDTLS_MD_C
Nayna Jainc9deb182020-11-16 19:03:12 +0000990 *
Dave Rodgmanefbc5f72023-03-13 12:15:49 +0000991 * This module is required for the PKCS #7 parsing modules.
Nayna Jainc9deb182020-11-16 19:03:12 +0000992 */
Dave Rodgman7c33b0c2023-03-10 15:07:15 +0000993#define MBEDTLS_PKCS7_C
Nayna Jainc9deb182020-11-16 19:03:12 +0000994
995/**
Valerio Setti678e0fb2024-06-14 07:49:05 +0200996 * \def MBEDTLS_PSA_STATIC_KEY_SLOTS
997 *
Valerio Setti933b7692024-08-13 11:08:26 +0200998 * Statically preallocate memory to store keys' material in PSA instead
999 * of allocating it dynamically when required. This allows builds without a
1000 * heap, if none of the enabled cryptographic implementations or other features
1001 * require it.
1002 * This feature affects both volatile and persistent keys which means that
1003 * it's not possible to persistently store a key which is larger than
Valerio Settic2a6e8b2024-08-16 07:58:02 +02001004 * #MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE.
Valerio Setti678e0fb2024-06-14 07:49:05 +02001005 *
1006 * \note This feature comes with a (potentially) higher RAM usage since:
Valerio Setti83778d72024-10-04 13:46:37 +02001007 * - All the key slots are allocated no matter if they are used or not.
Valerio Settic2a6e8b2024-08-16 07:58:02 +02001008 * - Each key buffer's length is #MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE bytes.
Valerio Setti678e0fb2024-06-14 07:49:05 +02001009 *
1010 * Requires: MBEDTLS_PSA_CRYPTO_C
1011 *
1012 */
1013//#define MBEDTLS_PSA_STATIC_KEY_SLOTS
1014
1015/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001016 * \def MBEDTLS_SSL_CACHE_C
Paul Bakker0a597072012-09-25 21:55:46 +00001017 *
1018 * Enable simple SSL cache implementation.
1019 *
1020 * Module: library/ssl_cache.c
1021 * Caller:
1022 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001023 * Requires: MBEDTLS_SSL_CACHE_C
Paul Bakker0a597072012-09-25 21:55:46 +00001024 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001025#define MBEDTLS_SSL_CACHE_C
Paul Bakker0a597072012-09-25 21:55:46 +00001026
1027/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001028 * \def MBEDTLS_SSL_COOKIE_C
Manuel Pégourié-Gonnarda64acd42014-07-23 18:30:45 +02001029 *
1030 * Enable basic implementation of DTLS cookies for hello verification.
1031 *
1032 * Module: library/ssl_cookie.c
1033 * Caller:
Manuel Pégourié-Gonnarda64acd42014-07-23 18:30:45 +02001034 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001035#define MBEDTLS_SSL_COOKIE_C
Manuel Pégourié-Gonnarda64acd42014-07-23 18:30:45 +02001036
1037/**
Manuel Pégourié-Gonnardfd6d8972015-05-15 12:09:00 +02001038 * \def MBEDTLS_SSL_TICKET_C
1039 *
1040 * Enable an implementation of TLS server-side callbacks for session tickets.
1041 *
1042 * Module: library/ssl_ticket.c
1043 * Caller:
Manuel Pégourié-Gonnard0c0f11f2015-05-20 09:55:50 +02001044 *
Przemek Stekiel52a428b2022-10-10 08:47:13 +02001045 * Requires: (MBEDTLS_CIPHER_C || MBEDTLS_USE_PSA_CRYPTO) &&
1046 * (MBEDTLS_GCM_C || MBEDTLS_CCM_C || MBEDTLS_CHACHAPOLY_C)
Manuel Pégourié-Gonnardfd6d8972015-05-15 12:09:00 +02001047 */
1048#define MBEDTLS_SSL_TICKET_C
1049
1050/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001051 * \def MBEDTLS_SSL_CLI_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001052 *
1053 * Enable the SSL/TLS client code.
1054 *
Ronald Cronde1adee2022-03-07 16:20:30 +01001055 * Module: library/ssl*_client.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001056 * Caller:
1057 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001058 * Requires: MBEDTLS_SSL_TLS_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001059 *
Janos Follath745e5612024-12-02 13:22:34 +00001060 * \warning You must call psa_crypto_init() before doing any TLS operations.
1061 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001062 * This module is required for SSL/TLS client support.
1063 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001064#define MBEDTLS_SSL_CLI_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001065
Paul Bakker9a736322012-11-14 12:39:52 +00001066/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001067 * \def MBEDTLS_SSL_SRV_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001068 *
1069 * Enable the SSL/TLS server code.
1070 *
Ronald Cronde1adee2022-03-07 16:20:30 +01001071 * Module: library/ssl*_server.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001072 * Caller:
1073 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001074 * Requires: MBEDTLS_SSL_TLS_C
Paul Bakker5690efc2011-05-26 13:16:06 +00001075 *
Janos Follath745e5612024-12-02 13:22:34 +00001076 * \warning You must call psa_crypto_init() before doing any TLS operations.
1077 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001078 * This module is required for SSL/TLS server support.
1079 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001080#define MBEDTLS_SSL_SRV_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001081
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001082/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001083 * \def MBEDTLS_SSL_TLS_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001084 *
Paul Bakkere29ab062011-05-18 13:26:54 +00001085 * Enable the generic SSL/TLS code.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001086 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001087 * Module: library/ssl_tls.c
Ronald Cronde1adee2022-03-07 16:20:30 +01001088 * Caller: library/ssl*_client.c
1089 * library/ssl*_server.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001090 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001091 * Requires: MBEDTLS_CIPHER_C, MBEDTLS_MD_C
1092 * and at least one of the MBEDTLS_SSL_PROTO_XXX defines
Paul Bakker5690efc2011-05-26 13:16:06 +00001093 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001094 * This module is required for SSL/TLS.
1095 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001096#define MBEDTLS_SSL_TLS_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001097
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001098/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001099 * \def MBEDTLS_TIMING_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001100 *
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +01001101 * Enable the semi-portable timing interface.
1102 *
Simon Butcherd567a232016-03-09 20:19:21 +00001103 * \note The provided implementation only works on POSIX/Unix (including Linux,
1104 * BSD and OS X) and Windows. On other platforms, you can either disable that
Manuel Pégourié-Gonnard325ce092016-02-22 10:33:34 +01001105 * module and provide your own implementations of the callbacks needed by
1106 * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide
1107 * your own implementation of the whole module by setting
1108 * \c MBEDTLS_TIMING_ALT in the current file.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001109 *
Andrzej Kurek57353692022-04-07 08:08:21 -04001110 * \note The timing module will include time.h on suitable platforms
1111 * regardless of the setting of MBEDTLS_HAVE_TIME, unless
1112 * MBEDTLS_TIMING_ALT is used. See timing.c for more information.
1113 *
Manuel Pégourié-Gonnard02049dc2016-02-22 16:42:51 +00001114 * \note See also our Knowledge Base article about porting to a new
1115 * environment:
Dave Rodgmanb3196842022-10-12 16:47:08 +01001116 * 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 +00001117 *
Paul Bakker5121ce52009-01-03 21:22:43 +00001118 * Module: library/timing.c
Paul Bakkerecd54fb2013-07-03 14:48:29 +02001119 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001120#define MBEDTLS_TIMING_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001121
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001122/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001123 * \def MBEDTLS_VERSION_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001124 *
1125 * Enable run-time version information.
1126 *
Paul Bakker0a62cd12011-01-21 11:00:08 +00001127 * Module: library/version.c
1128 *
1129 * This module provides run-time version information.
1130 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001131#define MBEDTLS_VERSION_C
Paul Bakker0a62cd12011-01-21 11:00:08 +00001132
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001133/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001134 * \def MBEDTLS_X509_USE_C
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001135 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001136 * Enable X.509 core for using certificates.
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001137 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001138 * Module: library/x509.c
Simon Butcher2cb47392016-11-04 12:23:11 +00001139 * Caller: library/x509_crl.c
1140 * library/x509_crt.c
1141 * library/x509_csr.c
Paul Bakker5121ce52009-01-03 21:22:43 +00001142 *
Janos Follath277bba82024-11-19 16:14:00 +00001143 * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C
Przemek Stekiel278b6672022-08-03 09:50:38 +02001144 *
Janos Follath277bba82024-11-19 16:14:00 +00001145 * \warning You must call psa_crypto_init() before doing any X.509 operation.
Paul Bakker5690efc2011-05-26 13:16:06 +00001146 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001147 * This module is required for the X.509 parsing modules.
Paul Bakker5121ce52009-01-03 21:22:43 +00001148 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001149#define MBEDTLS_X509_USE_C
Paul Bakker5121ce52009-01-03 21:22:43 +00001150
Paul Bakkerf3b86c12011-01-27 15:24:17 +00001151/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001152 * \def MBEDTLS_X509_CRT_PARSE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001153 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001154 * Enable X.509 certificate parsing.
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001155 *
Simon Butcher2cb47392016-11-04 12:23:11 +00001156 * Module: library/x509_crt.c
Ronald Cronde1adee2022-03-07 16:20:30 +01001157 * Caller: library/ssl_tls.c
1158 * library/ssl*_client.c
1159 * library/ssl*_server.c
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001160 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001161 * Requires: MBEDTLS_X509_USE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001162 *
1163 * This module is required for X.509 certificate parsing.
1164 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001165#define MBEDTLS_X509_CRT_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001166
1167/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001168 * \def MBEDTLS_X509_CRL_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001169 *
1170 * Enable X.509 CRL parsing.
1171 *
Simon Butcher2cb47392016-11-04 12:23:11 +00001172 * Module: library/x509_crl.c
1173 * Caller: library/x509_crt.c
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001174 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001175 * Requires: MBEDTLS_X509_USE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001176 *
1177 * This module is required for X.509 CRL parsing.
1178 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001179#define MBEDTLS_X509_CRL_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001180
1181/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001182 * \def MBEDTLS_X509_CSR_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001183 *
1184 * Enable X.509 Certificate Signing Request (CSR) parsing.
1185 *
Simon Butcher2cb47392016-11-04 12:23:11 +00001186 * Module: library/x509_csr.c
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001187 * Caller: library/x509_crt_write.c
1188 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001189 * Requires: MBEDTLS_X509_USE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001190 *
1191 * This module is used for reading X.509 certificate request.
1192 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001193#define MBEDTLS_X509_CSR_PARSE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001194
1195/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001196 * \def MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001197 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001198 * Enable X.509 core for creating certificates.
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001199 *
1200 * Module: library/x509_create.c
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001201 *
Przemek Stekiel10836a02022-08-19 08:45:34 +02001202 * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
Przemek Stekiel278b6672022-08-03 09:50:38 +02001203 *
Janos Follath277bba82024-11-19 16:14:00 +00001204 * \warning You must call psa_crypto_init() before doing any X.509 operation.
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001205 *
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001206 * This module is the basis for creating X.509 certificates and CSRs.
1207 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001208#define MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001209
1210/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001211 * \def MBEDTLS_X509_CRT_WRITE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001212 *
1213 * Enable creating X.509 certificates.
1214 *
1215 * Module: library/x509_crt_write.c
1216 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001217 * Requires: MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001218 *
1219 * This module is required for X.509 certificate creation.
1220 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001221#define MBEDTLS_X509_CRT_WRITE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001222
1223/**
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001224 * \def MBEDTLS_X509_CSR_WRITE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001225 *
Manuel Pégourié-Gonnard09fff7e2013-09-20 13:45:36 +02001226 * Enable creating X.509 Certificate Signing Requests (CSR).
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001227 *
1228 * Module: library/x509_csr_write.c
1229 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001230 * Requires: MBEDTLS_X509_CREATE_C
Paul Bakker7c6b2c32013-09-16 13:49:26 +02001231 *
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001232 * This module is required for X.509 certificate request writing.
1233 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001234#define MBEDTLS_X509_CSR_WRITE_C
Paul Bakkerbdb912d2012-02-13 23:11:30 +00001235
Gilles Peskinee820c0a2023-08-03 17:45:20 +02001236/** \} name SECTION: Mbed TLS modules */
Paul Bakker7a7c78f2009-01-04 18:15:48 +00001237
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001238/**
Gilles Peskineba4162a2022-04-11 17:04:38 +02001239 * \name SECTION: General configuration options
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001240 *
Gilles Peskined5793ce2022-04-13 23:05:10 +02001241 * This section contains Mbed TLS build settings that are not associated
1242 * with a particular module.
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001243 *
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001244 * \{
1245 */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001246
Gilles Peskinea02c1242022-03-16 17:03:19 +01001247/**
1248 * \def MBEDTLS_CONFIG_FILE
1249 *
1250 * If defined, this is a header which will be included instead of
1251 * `"mbedtls/mbedtls_config.h"`.
1252 * This header file specifies the compile-time configuration of Mbed TLS.
Gilles Peskineefffd642022-04-26 18:13:01 +02001253 * Unlike other configuration options, this one must be defined on the
1254 * compiler command line: a definition in `mbedtls_config.h` would have
1255 * no effect.
Gilles Peskinea02c1242022-03-16 17:03:19 +01001256 *
Gilles Peskine6457ef92022-04-11 16:42:37 +02001257 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
Gilles Peskinea02c1242022-03-16 17:03:19 +01001258 * non-standard feature of the C language, so this feature is only available
Gilles Peskine6457ef92022-04-11 16:42:37 +02001259 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
Gilles Peskinea02c1242022-03-16 17:03:19 +01001260 *
Gilles Peskine58ffcba2022-04-14 12:44:16 +02001261 * The value of this symbol is typically a path in double quotes, either
1262 * absolute or relative to a directory on the include search path.
Gilles Peskinea02c1242022-03-16 17:03:19 +01001263 */
1264//#define MBEDTLS_CONFIG_FILE "mbedtls/mbedtls_config.h"
1265
1266/**
1267 * \def MBEDTLS_USER_CONFIG_FILE
1268 *
1269 * If defined, this is a header which will be included after
1270 * `"mbedtls/mbedtls_config.h"` or #MBEDTLS_CONFIG_FILE.
Gilles Peskinef68f43a2022-04-13 23:22:20 +02001271 * This allows you to modify the default configuration, including the ability
1272 * to undefine options that are enabled by default.
Gilles Peskinea02c1242022-03-16 17:03:19 +01001273 *
Gilles Peskine6457ef92022-04-11 16:42:37 +02001274 * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
Gilles Peskinea02c1242022-03-16 17:03:19 +01001275 * non-standard feature of the C language, so this feature is only available
Gilles Peskine6457ef92022-04-11 16:42:37 +02001276 * with compilers that perform macro expansion on an <tt>\#include</tt> line.
Gilles Peskinea02c1242022-03-16 17:03:19 +01001277 *
Gilles Peskine58ffcba2022-04-14 12:44:16 +02001278 * The value of this symbol is typically a path in double quotes, either
1279 * absolute or relative to a directory on the include search path.
Gilles Peskinea02c1242022-03-16 17:03:19 +01001280 */
1281//#define MBEDTLS_USER_CONFIG_FILE "/dev/null"
1282
Gilles Peskineba4162a2022-04-11 17:04:38 +02001283/** \} name SECTION: General configuration options */
1284
1285/**
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001286 * \name SECTION: Module configuration options
1287 *
1288 * This section allows for the setting of module specific sizes and
1289 * configuration options. The default values are already present in the
1290 * relevant header files and should suffice for the regular use cases.
1291 *
1292 * Our advice is to enable options and change their values here
1293 * only if you have a good reason and know the consequences.
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001294 * \{
1295 */
Gilles Peskine3f49cc12022-04-13 23:21:16 +02001296/* The Doxygen documentation here is used when a user comments out a
1297 * setting and runs doxygen themselves. On the other hand, when we typeset
1298 * the full documentation including disabled settings, the documentation
1299 * in specific modules' header files is used if present. When editing this
1300 * file, make sure that each option is documented in exactly one place,
1301 * plus optionally a same-line Doxygen comment here if there is a Doxygen
1302 * comment in the specific module. */
Paul Bakker9bcf16c2013-06-24 19:31:17 +02001303
Valerio Settia7ce5892024-08-13 10:44:02 +02001304/**
Valerio Setti933b7692024-08-13 11:08:26 +02001305 * \def MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE
Valerio Settia7ce5892024-08-13 10:44:02 +02001306 *
Valerio Settic2a6e8b2024-08-16 07:58:02 +02001307 * Define the size (in bytes) of each static key buffer when
1308 * #MBEDTLS_PSA_STATIC_KEY_SLOTS is set. If not
1309 * explicitly defined then it's automatically guessed from available PSA keys
1310 * enabled in the build through PSA_WANT_xxx symbols.
Valerio Settia7ce5892024-08-13 10:44:02 +02001311 * If required by the application this parameter can be set to higher values
1312 * in order to store larger objects (ex: raw keys), but please note that this
1313 * will increase RAM usage.
Valerio Settia7ce5892024-08-13 10:44:02 +02001314 */
1315//#define MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE 256
1316
Paul Bakker088c5c52014-04-25 11:11:10 +02001317/* SSL Cache options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001318//#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */
1319//#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */
Paul Bakker6e339b52013-07-03 13:37:05 +02001320
Paul Bakker088c5c52014-04-25 11:11:10 +02001321/* SSL options */
Angus Grattond8213d02016-05-25 20:56:48 +10001322
Angus Grattond8213d02016-05-25 20:56:48 +10001323/** \def MBEDTLS_SSL_IN_CONTENT_LEN
1324 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05001325 * Maximum length (in bytes) of incoming plaintext fragments.
Angus Grattond8213d02016-05-25 20:56:48 +10001326 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05001327 * This determines the size of the incoming TLS I/O buffer in such a way
1328 * that it is capable of holding the specified amount of plaintext data,
1329 * regardless of the protection mechanism used.
1330 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05001331 * \note When using a value less than the default of 16KB on the client, it is
1332 * recommended to use the Maximum Fragment Length (MFL) extension to
1333 * inform the server about this limitation. On the server, there
1334 * is no supported, standardized way of informing the client about
1335 * restriction on the maximum size of incoming messages, and unless
1336 * the limitation has been communicated by other means, it is recommended
1337 * to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN
1338 * while keeping the default value of 16KB for the incoming buffer.
1339 *
David Horstmann95d516f2021-05-04 18:36:56 +01001340 * Uncomment to set the maximum plaintext size of the incoming I/O buffer.
Angus Grattond8213d02016-05-25 20:56:48 +10001341 */
1342//#define MBEDTLS_SSL_IN_CONTENT_LEN 16384
1343
Gilles Peskined3d02902020-03-04 21:35:27 +01001344/** \def MBEDTLS_SSL_CID_IN_LEN_MAX
1345 *
1346 * The maximum length of CIDs used for incoming DTLS messages.
1347 *
1348 */
1349//#define MBEDTLS_SSL_CID_IN_LEN_MAX 32
1350
1351/** \def MBEDTLS_SSL_CID_OUT_LEN_MAX
1352 *
1353 * The maximum length of CIDs used for outgoing DTLS messages.
1354 *
1355 */
1356//#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32
1357
TRodziewicze8dd7092021-05-12 14:19:11 +02001358/** \def MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY
Gilles Peskined3d02902020-03-04 21:35:27 +01001359 *
1360 * This option controls the use of record plaintext padding
TRodziewicz1e660ed2021-05-26 17:08:54 +02001361 * in TLS 1.3 and when using the Connection ID extension in DTLS 1.2.
Hanno Becker13996922020-05-28 16:15:19 +01001362 *
1363 * The padding will always be chosen so that the length of the
1364 * padded plaintext is a multiple of the value of this option.
1365 *
1366 * Note: A value of \c 1 means that no padding will be used
1367 * for outgoing records.
1368 *
1369 * Note: On systems lacking division instructions,
1370 * a power of two should be preferred.
1371 */
TRodziewicze8dd7092021-05-12 14:19:11 +02001372//#define MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY 16
Hanno Becker13996922020-05-28 16:15:19 +01001373
Angus Grattond8213d02016-05-25 20:56:48 +10001374/** \def MBEDTLS_SSL_OUT_CONTENT_LEN
1375 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05001376 * Maximum length (in bytes) of outgoing plaintext fragments.
Angus Grattond8213d02016-05-25 20:56:48 +10001377 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05001378 * This determines the size of the outgoing TLS I/O buffer in such a way
1379 * that it is capable of holding the specified amount of plaintext data,
1380 * regardless of the protection mechanism used.
1381 *
Angus Grattond8213d02016-05-25 20:56:48 +10001382 * It is possible to save RAM by setting a smaller outward buffer, while keeping
1383 * the default inward 16384 byte buffer to conform to the TLS specification.
1384 *
1385 * The minimum required outward buffer size is determined by the handshake
1386 * protocol's usage. Handshaking will fail if the outward buffer is too small.
1387 * The specific size requirement depends on the configured ciphers and any
1388 * certificate data which is sent during the handshake.
1389 *
David Horstmann95d516f2021-05-04 18:36:56 +01001390 * Uncomment to set the maximum plaintext size of the outgoing I/O buffer.
Angus Grattond8213d02016-05-25 20:56:48 +10001391 */
1392//#define MBEDTLS_SSL_OUT_CONTENT_LEN 16384
1393
Hanno Beckere0b150f2018-08-21 15:51:03 +01001394/** \def MBEDTLS_SSL_DTLS_MAX_BUFFERING
1395 *
1396 * Maximum number of heap-allocated bytes for the purpose of
1397 * DTLS handshake message reassembly and future message buffering.
1398 *
Yuto Takano7828ca22021-08-10 11:26:15 +01001399 * This should be at least 9/8 * MBEDTLS_SSL_IN_CONTENT_LEN
Hanno Becker28007512018-08-28 09:46:44 +01001400 * to account for a reassembled handshake message of maximum size,
1401 * together with its reassembly bitmap.
1402 *
Hanno Becker97a1c132018-08-28 14:42:15 +01001403 * A value of 2 * MBEDTLS_SSL_IN_CONTENT_LEN (32768 by default)
Hanno Becker28007512018-08-28 09:46:44 +01001404 * should be sufficient for all practical situations as it allows
1405 * to reassembly a large handshake message (such as a certificate)
1406 * while buffering multiple smaller handshake messages.
1407 *
Hanno Beckere0b150f2018-08-21 15:51:03 +01001408 */
Hanno Becker159a37f2018-08-24 15:07:29 +01001409//#define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768
Hanno Beckere0b150f2018-08-21 15:51:03 +01001410
Ronald Cron1aa6e8d2023-02-23 09:46:54 +01001411//#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 +02001412//#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 +02001413
Manuel Pégourié-Gonnarddfc7df02014-06-30 17:59:55 +02001414/**
1415 * Complete list of ciphersuites to use, in order of preference.
1416 *
1417 * \warning No dependency checking is done on that field! This option can only
1418 * be used to restrict the set of available ciphersuites. It is your
1419 * responsibility to make sure the needed modules are active.
1420 *
1421 * Use this to save a few hundred bytes of ROM (default ordering of all
1422 * available ciphersuites) and a few to a few hundred bytes of RAM.
1423 *
1424 * The value below is only an example, not the default.
1425 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001426//#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 +02001427
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001428/**
Tom Cosgrovea63775b2023-09-14 13:31:19 +01001429 * \def MBEDTLS_SSL_MAX_EARLY_DATA_SIZE
1430 *
1431 * The default maximum amount of 0-RTT data. See the documentation of
Yanray Wang07517612023-11-07 11:47:36 +08001432 * \c mbedtls_ssl_conf_max_early_data_size() for more information.
Tom Cosgrovea63775b2023-09-14 13:31:19 +01001433 *
1434 * It must be positive and smaller than UINT32_MAX.
1435 *
1436 * If MBEDTLS_SSL_EARLY_DATA is not defined, this default value does not
1437 * have any impact on the build.
Tom Cosgrovea63775b2023-09-14 13:31:19 +01001438 */
1439//#define MBEDTLS_SSL_MAX_EARLY_DATA_SIZE 1024
1440
1441/**
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001442 * \def MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE
1443 *
Jerry Yucf913512023-11-14 11:06:52 +08001444 * Maximum allowed ticket age difference in milliseconds tolerated between
Jerry Yu034a8b72023-11-10 12:20:19 +08001445 * server and client. Default value is 6000. This is not used in TLS 1.2.
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001446 *
Jerry Yu034a8b72023-11-10 12:20:19 +08001447 * - The client ticket age is the time difference between the time when the
1448 * client proposes to the server to use the ticket and the time the client
1449 * received the ticket from the server.
1450 * - The server ticket age is the time difference between the time when the
1451 * server receives a proposition from the client to use the ticket and the
1452 * time when the ticket was created by the server.
1453 *
Jerry Yucf913512023-11-14 11:06:52 +08001454 * The ages might be different due to the client and server clocks not running
1455 * at the same pace. The typical accuracy of an RTC crystal is ±100 to ±20 parts
1456 * per million (360 to 72 milliseconds per hour). Default tolerance window is
1457 * 6s, thus in the worst case clients and servers must sync up their system time
1458 * every 6000/360/2~=8 hours.
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001459 *
Jerry Yu04fceb72023-11-15 09:52:46 +08001460 * See section 8.3 of the TLS 1.3 specification(RFC 8446) for more information.
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001461 */
Gilles Peskined65ea422023-09-05 21:07:32 +02001462//#define MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE 6000
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001463
1464/**
1465 * \def MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH
1466 *
1467 * Size in bytes of a ticket nonce. This is not used in TLS 1.2.
1468 *
1469 * This must be less than 256.
1470 */
Gilles Peskined65ea422023-09-05 21:07:32 +02001471//#define MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH 32
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001472
1473/**
1474 * \def MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS
1475 *
1476 * Default number of NewSessionTicket messages to be sent by a TLS 1.3 server
1477 * after handshake completion. This is not used in TLS 1.2 and relevant only if
1478 * the MBEDTLS_SSL_SESSION_TICKETS option is enabled.
1479 *
1480 */
Gilles Peskined65ea422023-09-05 21:07:32 +02001481//#define MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS 1
Gilles Peskinea8d7e432022-08-04 23:39:41 +02001482
Manuel Pégourié-Gonnardfd6c85c2014-11-20 16:34:20 +01001483/* X509 options */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001484//#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */
Andres AGf9113192016-09-02 14:06:04 +01001485//#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 +01001486
Gilles Peskine611179c2022-04-13 23:04:48 +02001487/** \} name SECTION: Module configuration options */