mbed TLS v2.23.0: check_config.h Source File

mbed TLS v2.23.0

check_config.h
Go to the documentation of this file.
1
6 /*
7 * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved
8 * SPDX-License-Identifier: Apache-2.0
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License"); you may
11 * not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
18 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 *
22 * This file is part of mbed TLS (https://tls.mbed.org)
23 */
24
25 /*
26 * It is recommended to include this file from your config.h
27 * in order to catch dependency issues early.
28 */
29
30 #ifndef MBEDTLS_CHECK_CONFIG_H
31 #define MBEDTLS_CHECK_CONFIG_H
32
33 /*
34 * We assume CHAR_BIT is 8 in many places. In practice, this is true on our
35 * target platforms, so not an issue, but let's just be extra sure.
36 */
37 #include <limits.h>
38 #if CHAR_BIT != 8
39 #error "mbed TLS requires a platform with 8-bit chars"
40 #endif
41
42 #if defined(_WIN32)
43 #if !defined(MBEDTLS_PLATFORM_C)
44 #error "MBEDTLS_PLATFORM_C is required on Windows"
45 #endif
46
47 /* Fix the config here. Not convenient to put an #ifdef _WIN32 in config.h as
48 * it would confuse config.py. */
49 #if !defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && \
50 !defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
51 #define MBEDTLS_PLATFORM_SNPRINTF_ALT
52 #endif
53
54 #if !defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT) && \
55 !defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
56 #define MBEDTLS_PLATFORM_VSNPRINTF_ALT
57 #endif
58 #endif /* _WIN32 */
59
60 #if defined(TARGET_LIKE_MBED) && \
61 ( defined(MBEDTLS_NET_C) || defined(MBEDTLS_TIMING_C) )
62 #error "The NET and TIMING modules are not available for mbed OS - please use the network and timing functions provided by mbed OS"
63 #endif
64
65 #if defined(MBEDTLS_DEPRECATED_WARNING) && \
66 !defined(__GNUC__) && !defined(__clang__)
67 #error "MBEDTLS_DEPRECATED_WARNING only works with GCC and Clang"
68 #endif
69
70 #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_HAVE_TIME)
71 #error "MBEDTLS_HAVE_TIME_DATE without MBEDTLS_HAVE_TIME does not make sense"
72 #endif
73
74 #if defined(MBEDTLS_AESNI_C) && !defined(MBEDTLS_HAVE_ASM)
75 #error "MBEDTLS_AESNI_C defined, but not all prerequisites"
76 #endif
77
78 #if defined(MBEDTLS_CTR_DRBG_C) && !defined(MBEDTLS_AES_C)
79 #error "MBEDTLS_CTR_DRBG_C defined, but not all prerequisites"
80 #endif
81
82 #if defined(MBEDTLS_DHM_C) && !defined(MBEDTLS_BIGNUM_C)
83 #error "MBEDTLS_DHM_C defined, but not all prerequisites"
84 #endif
85
86 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT) && !defined(MBEDTLS_SSL_TRUNCATED_HMAC)
87 #error "MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT defined, but not all prerequisites"
88 #endif
89
90 #if defined(MBEDTLS_CMAC_C) && \
91 !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_DES_C)
92 #error "MBEDTLS_CMAC_C defined, but not all prerequisites"
93 #endif
94
95 #if defined(MBEDTLS_NIST_KW_C) && \
96 ( !defined(MBEDTLS_AES_C) || !defined(MBEDTLS_CIPHER_C) )
97 #error "MBEDTLS_NIST_KW_C defined, but not all prerequisites"
98 #endif
99
100 #if defined(MBEDTLS_ECDH_C) && !defined(MBEDTLS_ECP_C)
101 #error "MBEDTLS_ECDH_C defined, but not all prerequisites"
102 #endif
103
104 #if defined(MBEDTLS_ECDSA_C) && \
105 ( !defined(MBEDTLS_ECP_C) || \
106 !defined(MBEDTLS_ASN1_PARSE_C) || \
107 !defined(MBEDTLS_ASN1_WRITE_C) )
108 #error "MBEDTLS_ECDSA_C defined, but not all prerequisites"
109 #endif
110
111 #if defined(MBEDTLS_ECJPAKE_C) && \
112 ( !defined(MBEDTLS_ECP_C) || !defined(MBEDTLS_MD_C) )
113 #error "MBEDTLS_ECJPAKE_C defined, but not all prerequisites"
114 #endif
115
116 #if defined(MBEDTLS_ECP_RESTARTABLE) && \
117 ( defined(MBEDTLS_USE_PSA_CRYPTO) || \
118 defined(MBEDTLS_ECDH_COMPUTE_SHARED_ALT) || \
119 defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT) || \
120 defined(MBEDTLS_ECDSA_SIGN_ALT) || \
121 defined(MBEDTLS_ECDSA_VERIFY_ALT) || \
122 defined(MBEDTLS_ECDSA_GENKEY_ALT) || \
123 defined(MBEDTLS_ECP_INTERNAL_ALT) || \
124 defined(MBEDTLS_ECP_ALT) )
125 #error "MBEDTLS_ECP_RESTARTABLE defined, but it cannot coexist with an alternative or PSA-based ECP implementation"
126 #endif
127
128 #if defined(MBEDTLS_ECP_RESTARTABLE) && \
129 ! defined(MBEDTLS_ECDH_LEGACY_CONTEXT)
130 #error "MBEDTLS_ECP_RESTARTABLE defined, but not MBEDTLS_ECDH_LEGACY_CONTEXT"
131 #endif
132
133 #if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) && \
134 defined(MBEDTLS_ECDH_LEGACY_CONTEXT)
135 #error "MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED defined, but MBEDTLS_ECDH_LEGACY_CONTEXT not disabled"
136 #endif
137
138 #if defined(MBEDTLS_ECDSA_DETERMINISTIC) && !defined(MBEDTLS_HMAC_DRBG_C)
139 #error "MBEDTLS_ECDSA_DETERMINISTIC defined, but not all prerequisites"
140 #endif
141
142 #if defined(MBEDTLS_ECP_C) && ( !defined(MBEDTLS_BIGNUM_C) || ( \
143 !defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) && \
144 !defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) && \
145 !defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) && \
146 !defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) && \
147 !defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) && \
148 !defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) && \
149 !defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) && \
150 !defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) && \
151 !defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) && \
152 !defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) && \
153 !defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) && \
154 !defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) && \
155 !defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) ) )
156 #error "MBEDTLS_ECP_C defined, but not all prerequisites"
157 #endif
158
159 #if defined(MBEDTLS_ECP_C) && !( \
160 defined(MBEDTLS_ECP_ALT) || \
161 defined(MBEDTLS_CTR_DRBG_C) || \
162 defined(MBEDTLS_HMAC_DRBG_C) || \
163 defined(MBEDTLS_ECP_NO_INTERNAL_RNG))
164 #error "MBEDTLS_ECP_C requires a DRBG module unless MBEDTLS_ECP_NO_INTERNAL_RNG is defined or an alternative implementation is used"
165 #endif
166
167 #if defined(MBEDTLS_PK_PARSE_C) && !defined(MBEDTLS_ASN1_PARSE_C)
168 #error "MBEDTLS_PK_PARSE_C defined, but not all prerequesites"
169 #endif
170
171 #if defined(MBEDTLS_ENTROPY_C) && (!defined(MBEDTLS_SHA512_C) && \
172 !defined(MBEDTLS_SHA256_C))
173 #error "MBEDTLS_ENTROPY_C defined, but not all prerequisites"
174 #endif
175 #if defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_SHA512_C) && \
176 defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 64)
177 #error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
178 #endif
179 #if defined(MBEDTLS_ENTROPY_C) && \
180 ( !defined(MBEDTLS_SHA512_C) || defined(MBEDTLS_ENTROPY_FORCE_SHA256) ) \
181 && defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 32)
182 #error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
183 #endif
184 #if defined(MBEDTLS_ENTROPY_C) && \
185 defined(MBEDTLS_ENTROPY_FORCE_SHA256) && !defined(MBEDTLS_SHA256_C)
186 #error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites"
187 #endif
188
189 #if defined(MBEDTLS_TEST_NULL_ENTROPY) && \
190 ( !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) )
191 #error "MBEDTLS_TEST_NULL_ENTROPY defined, but not all prerequisites"
192 #endif
193 #if defined(MBEDTLS_TEST_NULL_ENTROPY) && \
194 ( defined(MBEDTLS_ENTROPY_NV_SEED) || defined(MBEDTLS_ENTROPY_HARDWARE_ALT) || \
195 defined(MBEDTLS_HAVEGE_C) )
196 #error "MBEDTLS_TEST_NULL_ENTROPY defined, but entropy sources too"
197 #endif
198
199 #if defined(MBEDTLS_GCM_C) && ( \
200 !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) && !defined(MBEDTLS_ARIA_C) )
201 #error "MBEDTLS_GCM_C defined, but not all prerequisites"
202 #endif
203
204 #if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
205 #error "MBEDTLS_ECP_RANDOMIZE_JAC_ALT defined, but not all prerequisites"
206 #endif
207
208 #if defined(MBEDTLS_ECP_ADD_MIXED_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
209 #error "MBEDTLS_ECP_ADD_MIXED_ALT defined, but not all prerequisites"
210 #endif
211
212 #if defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
213 #error "MBEDTLS_ECP_DOUBLE_JAC_ALT defined, but not all prerequisites"
214 #endif
215
216 #if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
217 #error "MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT defined, but not all prerequisites"
218 #endif
219
220 #if defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
221 #error "MBEDTLS_ECP_NORMALIZE_JAC_ALT defined, but not all prerequisites"
222 #endif
223
224 #if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
225 #error "MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT defined, but not all prerequisites"
226 #endif
227
228 #if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
229 #error "MBEDTLS_ECP_RANDOMIZE_MXZ_ALT defined, but not all prerequisites"
230 #endif
231
232 #if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) && !defined(MBEDTLS_ECP_INTERNAL_ALT)
233 #error "MBEDTLS_ECP_NORMALIZE_MXZ_ALT defined, but not all prerequisites"
234 #endif
235
236 #if defined(MBEDTLS_HAVEGE_C) && !defined(MBEDTLS_TIMING_C)
237 #error "MBEDTLS_HAVEGE_C defined, but not all prerequisites"
238 #endif
239
240 #if defined(MBEDTLS_HKDF_C) && !defined(MBEDTLS_MD_C)
241 #error "MBEDTLS_HKDF_C defined, but not all prerequisites"
242 #endif
243
244 #if defined(MBEDTLS_HMAC_DRBG_C) && !defined(MBEDTLS_MD_C)
245 #error "MBEDTLS_HMAC_DRBG_C defined, but not all prerequisites"
246 #endif
247
248 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) && \
249 ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) )
250 #error "MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED defined, but not all prerequisites"
251 #endif
252
253 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \
254 ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) )
255 #error "MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED defined, but not all prerequisites"
256 #endif
257
258 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) && !defined(MBEDTLS_DHM_C)
259 #error "MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED defined, but not all prerequisites"
260 #endif
261
262 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) && \
263 !defined(MBEDTLS_ECDH_C)
264 #error "MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED defined, but not all prerequisites"
265 #endif
266
267 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \
268 ( !defined(MBEDTLS_DHM_C) || !defined(MBEDTLS_RSA_C) || \
269 !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) )
270 #error "MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED defined, but not all prerequisites"
271 #endif
272
273 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \
274 ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_RSA_C) || \
275 !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) )
276 #error "MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED defined, but not all prerequisites"
277 #endif
278
279 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) && \
280 ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_ECDSA_C) || \
281 !defined(MBEDTLS_X509_CRT_PARSE_C) )
282 #error "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED defined, but not all prerequisites"
283 #endif
284
285 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) && \
286 ( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) || \
287 !defined(MBEDTLS_PKCS1_V15) )
288 #error "MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED defined, but not all prerequisites"
289 #endif
290
291 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) && \
292 ( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) || \
293 !defined(MBEDTLS_PKCS1_V15) )
294 #error "MBEDTLS_KEY_EXCHANGE_RSA_ENABLED defined, but not all prerequisites"
295 #endif
296
297 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) && \
298 ( !defined(MBEDTLS_ECJPAKE_C) || !defined(MBEDTLS_SHA256_C) || \
299 !defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) )
300 #error "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED defined, but not all prerequisites"
301 #endif
302
303 #if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) && \
304 !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) && \
305 ( !defined(MBEDTLS_SHA256_C) && \
306 !defined(MBEDTLS_SHA512_C) && \
307 !defined(MBEDTLS_SHA1_C) )
308 #error "!MBEDTLS_SSL_KEEP_PEER_CERTIFICATE requires MBEDTLS_SHA512_C, MBEDTLS_SHA256_C or MBEDTLS_SHA1_C"
309 #endif
310
311 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \
312 ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) )
313 #error "MBEDTLS_MEMORY_BUFFER_ALLOC_C defined, but not all prerequisites"
314 #endif
315
316 #if defined(MBEDTLS_MEMORY_BACKTRACE) && !defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
317 #error "MBEDTLS_MEMORY_BACKTRACE defined, but not all prerequesites"
318 #endif
319
320 #if defined(MBEDTLS_MEMORY_DEBUG) && !defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
321 #error "MBEDTLS_MEMORY_DEBUG defined, but not all prerequesites"
322 #endif
323
324 #if defined(MBEDTLS_PADLOCK_C) && !defined(MBEDTLS_HAVE_ASM)
325 #error "MBEDTLS_PADLOCK_C defined, but not all prerequisites"
326 #endif
327
328 #if defined(MBEDTLS_PEM_PARSE_C) && !defined(MBEDTLS_BASE64_C)
329 #error "MBEDTLS_PEM_PARSE_C defined, but not all prerequisites"
330 #endif
331
332 #if defined(MBEDTLS_PEM_WRITE_C) && !defined(MBEDTLS_BASE64_C)
333 #error "MBEDTLS_PEM_WRITE_C defined, but not all prerequisites"
334 #endif
335
336 #if defined(MBEDTLS_PK_C) && \
337 ( !defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_ECP_C) )
338 #error "MBEDTLS_PK_C defined, but not all prerequisites"
339 #endif
340
341 #if defined(MBEDTLS_PK_PARSE_C) && !defined(MBEDTLS_PK_C)
342 #error "MBEDTLS_PK_PARSE_C defined, but not all prerequisites"
343 #endif
344
345 #if defined(MBEDTLS_PK_WRITE_C) && !defined(MBEDTLS_PK_C)
346 #error "MBEDTLS_PK_WRITE_C defined, but not all prerequisites"
347 #endif
348
349 #if defined(MBEDTLS_PKCS11_C) && !defined(MBEDTLS_PK_C)
350 #error "MBEDTLS_PKCS11_C defined, but not all prerequisites"
351 #endif
352
353 #if defined(MBEDTLS_PKCS11_C)
354 #if defined(MBEDTLS_DEPRECATED_REMOVED)
355 #error "MBEDTLS_PKCS11_C is deprecated and will be removed in a future version of Mbed TLS"
356 #elif defined(MBEDTLS_DEPRECATED_WARNING)
357 #warning "MBEDTLS_PKCS11_C is deprecated and will be removed in a future version of Mbed TLS"
358 #endif
359 #endif /* MBEDTLS_PKCS11_C */
360
361 #if defined(MBEDTLS_PLATFORM_EXIT_ALT) && !defined(MBEDTLS_PLATFORM_C)
362 #error "MBEDTLS_PLATFORM_EXIT_ALT defined, but not all prerequisites"
363 #endif
364
365 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO) && !defined(MBEDTLS_PLATFORM_C)
366 #error "MBEDTLS_PLATFORM_EXIT_MACRO defined, but not all prerequisites"
367 #endif
368
369 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO) &&\
370 ( defined(MBEDTLS_PLATFORM_STD_EXIT) ||\
371 defined(MBEDTLS_PLATFORM_EXIT_ALT) )
372 #error "MBEDTLS_PLATFORM_EXIT_MACRO and MBEDTLS_PLATFORM_STD_EXIT/MBEDTLS_PLATFORM_EXIT_ALT cannot be defined simultaneously"
373 #endif
374
375 #if defined(MBEDTLS_PLATFORM_TIME_ALT) &&\
376 ( !defined(MBEDTLS_PLATFORM_C) ||\
377 !defined(MBEDTLS_HAVE_TIME) )
378 #error "MBEDTLS_PLATFORM_TIME_ALT defined, but not all prerequisites"
379 #endif
380
381 #if defined(MBEDTLS_PLATFORM_TIME_MACRO) &&\
382 ( !defined(MBEDTLS_PLATFORM_C) ||\
383 !defined(MBEDTLS_HAVE_TIME) )
384 #error "MBEDTLS_PLATFORM_TIME_MACRO defined, but not all prerequisites"
385 #endif
386
387 #if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\
388 ( !defined(MBEDTLS_PLATFORM_C) ||\
389 !defined(MBEDTLS_HAVE_TIME) )
390 #error "MBEDTLS_PLATFORM_TIME_TYPE_MACRO defined, but not all prerequisites"
391 #endif
392
393 #if defined(MBEDTLS_PLATFORM_TIME_MACRO) &&\
394 ( defined(MBEDTLS_PLATFORM_STD_TIME) ||\
395 defined(MBEDTLS_PLATFORM_TIME_ALT) )
396 #error "MBEDTLS_PLATFORM_TIME_MACRO and MBEDTLS_PLATFORM_STD_TIME/MBEDTLS_PLATFORM_TIME_ALT cannot be defined simultaneously"
397 #endif
398
399 #if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\
400 ( defined(MBEDTLS_PLATFORM_STD_TIME) ||\
401 defined(MBEDTLS_PLATFORM_TIME_ALT) )
402 #error "MBEDTLS_PLATFORM_TIME_TYPE_MACRO and MBEDTLS_PLATFORM_STD_TIME/MBEDTLS_PLATFORM_TIME_ALT cannot be defined simultaneously"
403 #endif
404
405 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C)
406 #error "MBEDTLS_PLATFORM_FPRINTF_ALT defined, but not all prerequisites"
407 #endif
408
409 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C)
410 #error "MBEDTLS_PLATFORM_FPRINTF_MACRO defined, but not all prerequisites"
411 #endif
412
413 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) &&\
414 ( defined(MBEDTLS_PLATFORM_STD_FPRINTF) ||\
415 defined(MBEDTLS_PLATFORM_FPRINTF_ALT) )
416 #error "MBEDTLS_PLATFORM_FPRINTF_MACRO and MBEDTLS_PLATFORM_STD_FPRINTF/MBEDTLS_PLATFORM_FPRINTF_ALT cannot be defined simultaneously"
417 #endif
418
419 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) &&\
420 ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) )
421 #error "MBEDTLS_PLATFORM_FREE_MACRO defined, but not all prerequisites"
422 #endif
423
424 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) &&\
425 defined(MBEDTLS_PLATFORM_STD_FREE)
426 #error "MBEDTLS_PLATFORM_FREE_MACRO and MBEDTLS_PLATFORM_STD_FREE cannot be defined simultaneously"
427 #endif
428
429 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
430 #error "MBEDTLS_PLATFORM_CALLOC_MACRO must be defined if MBEDTLS_PLATFORM_FREE_MACRO is"
431 #endif
432
433 #if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) &&\
434 ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) )
435 #error "MBEDTLS_PLATFORM_CALLOC_MACRO defined, but not all prerequisites"
436 #endif
437
438 #if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) &&\
439 defined(MBEDTLS_PLATFORM_STD_CALLOC)
440 #error "MBEDTLS_PLATFORM_CALLOC_MACRO and MBEDTLS_PLATFORM_STD_CALLOC cannot be defined simultaneously"
441 #endif
442
443 #if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) && !defined(MBEDTLS_PLATFORM_FREE_MACRO)
444 #error "MBEDTLS_PLATFORM_FREE_MACRO must be defined if MBEDTLS_PLATFORM_CALLOC_MACRO is"
445 #endif
446
447 #if defined(MBEDTLS_PLATFORM_MEMORY) && !defined(MBEDTLS_PLATFORM_C)
448 #error "MBEDTLS_PLATFORM_MEMORY defined, but not all prerequisites"
449 #endif
450
451 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C)
452 #error "MBEDTLS_PLATFORM_PRINTF_ALT defined, but not all prerequisites"
453 #endif
454
455 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C)
456 #error "MBEDTLS_PLATFORM_PRINTF_MACRO defined, but not all prerequisites"
457 #endif
458
459 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) &&\
460 ( defined(MBEDTLS_PLATFORM_STD_PRINTF) ||\
461 defined(MBEDTLS_PLATFORM_PRINTF_ALT) )
462 #error "MBEDTLS_PLATFORM_PRINTF_MACRO and MBEDTLS_PLATFORM_STD_PRINTF/MBEDTLS_PLATFORM_PRINTF_ALT cannot be defined simultaneously"
463 #endif
464
465 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C)
466 #error "MBEDTLS_PLATFORM_SNPRINTF_ALT defined, but not all prerequisites"
467 #endif
468
469 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C)
470 #error "MBEDTLS_PLATFORM_SNPRINTF_MACRO defined, but not all prerequisites"
471 #endif
472
473 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) &&\
474 ( defined(MBEDTLS_PLATFORM_STD_SNPRINTF) ||\
475 defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) )
476 #error "MBEDTLS_PLATFORM_SNPRINTF_MACRO and MBEDTLS_PLATFORM_STD_SNPRINTF/MBEDTLS_PLATFORM_SNPRINTF_ALT cannot be defined simultaneously"
477 #endif
478
479 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR) &&\
480 !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
481 #error "MBEDTLS_PLATFORM_STD_MEM_HDR defined, but not all prerequisites"
482 #endif
483
484 #if defined(MBEDTLS_PLATFORM_STD_CALLOC) && !defined(MBEDTLS_PLATFORM_MEMORY)
485 #error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites"
486 #endif
487
488 #if defined(MBEDTLS_PLATFORM_STD_CALLOC) && !defined(MBEDTLS_PLATFORM_MEMORY)
489 #error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites"
490 #endif
491
492 #if defined(MBEDTLS_PLATFORM_STD_FREE) && !defined(MBEDTLS_PLATFORM_MEMORY)
493 #error "MBEDTLS_PLATFORM_STD_FREE defined, but not all prerequisites"
494 #endif
495
496 #if defined(MBEDTLS_PLATFORM_STD_EXIT) &&\
497 !defined(MBEDTLS_PLATFORM_EXIT_ALT)
498 #error "MBEDTLS_PLATFORM_STD_EXIT defined, but not all prerequisites"
499 #endif
500
501 #if defined(MBEDTLS_PLATFORM_STD_TIME) &&\
502 ( !defined(MBEDTLS_PLATFORM_TIME_ALT) ||\
503 !defined(MBEDTLS_HAVE_TIME) )
504 #error "MBEDTLS_PLATFORM_STD_TIME defined, but not all prerequisites"
505 #endif
506
507 #if defined(MBEDTLS_PLATFORM_STD_FPRINTF) &&\
508 !defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
509 #error "MBEDTLS_PLATFORM_STD_FPRINTF defined, but not all prerequisites"
510 #endif
511
512 #if defined(MBEDTLS_PLATFORM_STD_PRINTF) &&\
513 !defined(MBEDTLS_PLATFORM_PRINTF_ALT)
514 #error "MBEDTLS_PLATFORM_STD_PRINTF defined, but not all prerequisites"
515 #endif
516
517 #if defined(MBEDTLS_PLATFORM_STD_SNPRINTF) &&\
518 !defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
519 #error "MBEDTLS_PLATFORM_STD_SNPRINTF defined, but not all prerequisites"
520 #endif
521
522 #if defined(MBEDTLS_ENTROPY_NV_SEED) &&\
523 ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_ENTROPY_C) )
524 #error "MBEDTLS_ENTROPY_NV_SEED defined, but not all prerequisites"
525 #endif
526
527 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT) &&\
528 !defined(MBEDTLS_ENTROPY_NV_SEED)
529 #error "MBEDTLS_PLATFORM_NV_SEED_ALT defined, but not all prerequisites"
530 #endif
531
532 #if defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) &&\
533 !defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
534 #error "MBEDTLS_PLATFORM_STD_NV_SEED_READ defined, but not all prerequisites"
535 #endif
536
537 #if defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) &&\
538 !defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
539 #error "MBEDTLS_PLATFORM_STD_NV_SEED_WRITE defined, but not all prerequisites"
540 #endif
541
542 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) &&\
543 ( defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) ||\
544 defined(MBEDTLS_PLATFORM_NV_SEED_ALT) )
545 #error "MBEDTLS_PLATFORM_NV_SEED_READ_MACRO and MBEDTLS_PLATFORM_STD_NV_SEED_READ cannot be defined simultaneously"
546 #endif
547
548 #if defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO) &&\
549 ( defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) ||\
550 defined(MBEDTLS_PLATFORM_NV_SEED_ALT) )
551 #error "MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO and MBEDTLS_PLATFORM_STD_NV_SEED_WRITE cannot be defined simultaneously"
552 #endif
553
554 #if defined(MBEDTLS_PSA_CRYPTO_C) && \
555 !( defined(MBEDTLS_CTR_DRBG_C) && \
556 defined(MBEDTLS_ENTROPY_C) )
557 #error "MBEDTLS_PSA_CRYPTO_C defined, but not all prerequisites"
558 #endif
559
560 #if defined(MBEDTLS_PSA_CRYPTO_SPM) && !defined(MBEDTLS_PSA_CRYPTO_C)
561 #error "MBEDTLS_PSA_CRYPTO_SPM defined, but not all prerequisites"
562 #endif
563
564 #if defined(MBEDTLS_PSA_CRYPTO_SE_C) && \
565 ! ( defined(MBEDTLS_PSA_CRYPTO_C) && \
566 defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) )
567 #error "MBEDTLS_PSA_CRYPTO_SE_C defined, but not all prerequisites"
568 #endif
569
570 #if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) && \
571 ! defined(MBEDTLS_PSA_CRYPTO_C)
572 #error "MBEDTLS_PSA_CRYPTO_STORAGE_C defined, but not all prerequisites"
573 #endif
574
575 #if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \
576 !( defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) && \
577 defined(MBEDTLS_ENTROPY_NV_SEED) )
578 #error "MBEDTLS_PSA_INJECT_ENTROPY defined, but not all prerequisites"
579 #endif
580
581 #if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \
582 !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
583 #error "MBEDTLS_PSA_INJECT_ENTROPY is not compatible with actual entropy sources"
584 #endif
585
586 #if defined(MBEDTLS_PSA_ITS_FILE_C) && \
587 !defined(MBEDTLS_FS_IO)
588 #error "MBEDTLS_PSA_ITS_FILE_C defined, but not all prerequisites"
589 #endif
590
591 #if defined(MBEDTLS_RSA_C) && ( !defined(MBEDTLS_BIGNUM_C) || \
592 !defined(MBEDTLS_OID_C) )
593 #error "MBEDTLS_RSA_C defined, but not all prerequisites"
594 #endif
595
596 #if defined(MBEDTLS_RSA_C) && ( !defined(MBEDTLS_PKCS1_V21) && \
597 !defined(MBEDTLS_PKCS1_V15) )
598 #error "MBEDTLS_RSA_C defined, but none of the PKCS1 versions enabled"
599 #endif
600
601 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) && \
602 ( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_PKCS1_V21) )
603 #error "MBEDTLS_X509_RSASSA_PSS_SUPPORT defined, but not all prerequisites"
604 #endif
605
606 #if defined(MBEDTLS_SHA512_NO_SHA384) && !defined(MBEDTLS_SHA512_C)
607 #error "MBEDTLS_SHA512_NO_SHA384 defined without MBEDTLS_SHA512_C"
608 #endif
609
610 #if defined(MBEDTLS_SSL_PROTO_SSL3) && ( !defined(MBEDTLS_MD5_C) || \
611 !defined(MBEDTLS_SHA1_C) )
612 #error "MBEDTLS_SSL_PROTO_SSL3 defined, but not all prerequisites"
613 #endif
614
615 #if defined(MBEDTLS_SSL_PROTO_TLS1) && ( !defined(MBEDTLS_MD5_C) || \
616 !defined(MBEDTLS_SHA1_C) )
617 #error "MBEDTLS_SSL_PROTO_TLS1 defined, but not all prerequisites"
618 #endif
619
620 #if defined(MBEDTLS_SSL_PROTO_TLS1_1) && ( !defined(MBEDTLS_MD5_C) || \
621 !defined(MBEDTLS_SHA1_C) )
622 #error "MBEDTLS_SSL_PROTO_TLS1_1 defined, but not all prerequisites"
623 #endif
624
625 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && ( !defined(MBEDTLS_SHA1_C) && \
626 !defined(MBEDTLS_SHA256_C) && !defined(MBEDTLS_SHA512_C) )
627 #error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites"
628 #endif
629
630 #if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) && ( !defined(MBEDTLS_HKDF_C) && \
631 !defined(MBEDTLS_SHA256_C) && !defined(MBEDTLS_SHA512_C) )
632 #error "MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL defined, but not all prerequisites"
633 #endif
634
635 #if (defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \
636 defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2)) && \
637 !(defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \
638 defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
639 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
640 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
641 defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \
642 defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \
643 defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \
644 defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \
645 defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \
646 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \
647 defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) )
648 #error "One or more versions of the TLS protocol are enabled " \
649 "but no key exchange methods defined with MBEDTLS_KEY_EXCHANGE_xxxx"
650 #endif
651
652 #if defined(MBEDTLS_SSL_PROTO_DTLS) && \
653 !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
654 !defined(MBEDTLS_SSL_PROTO_TLS1_2)
655 #error "MBEDTLS_SSL_PROTO_DTLS defined, but not all prerequisites"
656 #endif
657
658 #if defined(MBEDTLS_SSL_CLI_C) && !defined(MBEDTLS_SSL_TLS_C)
659 #error "MBEDTLS_SSL_CLI_C defined, but not all prerequisites"
660 #endif
661
662 #if defined(MBEDTLS_SSL_TLS_C) && ( !defined(MBEDTLS_CIPHER_C) || \
663 !defined(MBEDTLS_MD_C) )
664 #error "MBEDTLS_SSL_TLS_C defined, but not all prerequisites"
665 #endif
666
667 #if defined(MBEDTLS_SSL_SRV_C) && !defined(MBEDTLS_SSL_TLS_C)
668 #error "MBEDTLS_SSL_SRV_C defined, but not all prerequisites"
669 #endif
670
671 #if defined(MBEDTLS_SSL_TLS_C) && (!defined(MBEDTLS_SSL_PROTO_SSL3) && \
672 !defined(MBEDTLS_SSL_PROTO_TLS1) && !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
673 !defined(MBEDTLS_SSL_PROTO_TLS1_2))
674 #error "MBEDTLS_SSL_TLS_C defined, but no protocols are active"
675 #endif
676
677 #if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_SSL3) && \
678 defined(MBEDTLS_SSL_PROTO_TLS1_1) && !defined(MBEDTLS_SSL_PROTO_TLS1))
679 #error "Illegal protocol selection"
680 #endif
681
682 #if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_TLS1) && \
683 defined(MBEDTLS_SSL_PROTO_TLS1_2) && !defined(MBEDTLS_SSL_PROTO_TLS1_1))
684 #error "Illegal protocol selection"
685 #endif
686
687 #if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_SSL3) && \
688 defined(MBEDTLS_SSL_PROTO_TLS1_2) && (!defined(MBEDTLS_SSL_PROTO_TLS1) || \
689 !defined(MBEDTLS_SSL_PROTO_TLS1_1)))
690 #error "Illegal protocol selection"
691 #endif
692
693 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && !defined(MBEDTLS_SSL_PROTO_DTLS)
694 #error "MBEDTLS_SSL_DTLS_HELLO_VERIFY defined, but not all prerequisites"
695 #endif
696
697 #if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && \
698 !defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY)
699 #error "MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE defined, but not all prerequisites"
700 #endif
701
702 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) && \
703 ( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) )
704 #error "MBEDTLS_SSL_DTLS_ANTI_REPLAY defined, but not all prerequisites"
705 #endif
706
707 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) && \
708 ( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) )
709 #error "MBEDTLS_SSL_DTLS_CONNECTION_ID defined, but not all prerequisites"
710 #endif
711
712 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) && \
713 defined(MBEDTLS_SSL_CID_IN_LEN_MAX) && \
714 MBEDTLS_SSL_CID_IN_LEN_MAX > 255
715 #error "MBEDTLS_SSL_CID_IN_LEN_MAX too large (max 255)"
716 #endif
717
718 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) && \
719 defined(MBEDTLS_SSL_CID_OUT_LEN_MAX) && \
720 MBEDTLS_SSL_CID_OUT_LEN_MAX > 255
721 #error "MBEDTLS_SSL_CID_OUT_LEN_MAX too large (max 255)"
722 #endif
723
724 #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) && \
725 ( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) )
726 #error "MBEDTLS_SSL_DTLS_BADMAC_LIMIT defined, but not all prerequisites"
727 #endif
728
729 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) && \
730 !defined(MBEDTLS_SSL_PROTO_TLS1) && \
731 !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
732 !defined(MBEDTLS_SSL_PROTO_TLS1_2)
733 #error "MBEDTLS_SSL_ENCRYPT_THEN_MAC defined, but not all prerequsites"
734 #endif
735
736 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) && \
737 !defined(MBEDTLS_SSL_PROTO_TLS1) && \
738 !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \
739 !defined(MBEDTLS_SSL_PROTO_TLS1_2)
740 #error "MBEDTLS_SSL_EXTENDED_MASTER_SECRET defined, but not all prerequsites"
741 #endif
742
743 #if defined(MBEDTLS_SSL_TICKET_C) && !defined(MBEDTLS_CIPHER_C)
744 #error "MBEDTLS_SSL_TICKET_C defined, but not all prerequisites"
745 #endif
746
747 #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) && \
748 !defined(MBEDTLS_SSL_PROTO_SSL3) && !defined(MBEDTLS_SSL_PROTO_TLS1)
749 #error "MBEDTLS_SSL_CBC_RECORD_SPLITTING defined, but not all prerequisites"
750 #endif
751
752 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) && \
753 !defined(MBEDTLS_X509_CRT_PARSE_C)
754 #error "MBEDTLS_SSL_SERVER_NAME_INDICATION defined, but not all prerequisites"
755 #endif
756
757 #if defined(MBEDTLS_THREADING_PTHREAD)
758 #if !defined(MBEDTLS_THREADING_C) || defined(MBEDTLS_THREADING_IMPL)
759 #error "MBEDTLS_THREADING_PTHREAD defined, but not all prerequisites"
760 #endif
761 #define MBEDTLS_THREADING_IMPL
762 #endif
763
764 #if defined(MBEDTLS_THREADING_ALT)
765 #if !defined(MBEDTLS_THREADING_C) || defined(MBEDTLS_THREADING_IMPL)
766 #error "MBEDTLS_THREADING_ALT defined, but not all prerequisites"
767 #endif
768 #define MBEDTLS_THREADING_IMPL
769 #endif
770
771 #if defined(MBEDTLS_THREADING_C) && !defined(MBEDTLS_THREADING_IMPL)
772 #error "MBEDTLS_THREADING_C defined, single threading implementation required"
773 #endif
774 #undef MBEDTLS_THREADING_IMPL
775
776 #if defined(MBEDTLS_USE_PSA_CRYPTO) && !defined(MBEDTLS_PSA_CRYPTO_C)
777 #error "MBEDTLS_USE_PSA_CRYPTO defined, but not all prerequisites"
778 #endif
779
780 #if defined(MBEDTLS_VERSION_FEATURES) && !defined(MBEDTLS_VERSION_C)
781 #error "MBEDTLS_VERSION_FEATURES defined, but not all prerequisites"
782 #endif
783
784 #if defined(MBEDTLS_X509_USE_C) && ( !defined(MBEDTLS_BIGNUM_C) || \
785 !defined(MBEDTLS_OID_C) || !defined(MBEDTLS_ASN1_PARSE_C) || \
786 !defined(MBEDTLS_PK_PARSE_C) )
787 #error "MBEDTLS_X509_USE_C defined, but not all prerequisites"
788 #endif
789
790 #if defined(MBEDTLS_X509_CREATE_C) && ( !defined(MBEDTLS_BIGNUM_C) || \
791 !defined(MBEDTLS_OID_C) || !defined(MBEDTLS_ASN1_WRITE_C) || \
792 !defined(MBEDTLS_PK_WRITE_C) )
793 #error "MBEDTLS_X509_CREATE_C defined, but not all prerequisites"
794 #endif
795
796 #if defined(MBEDTLS_CERTS_C) && !defined(MBEDTLS_X509_USE_C)
797 #error "MBEDTLS_CERTS_C defined, but not all prerequisites"
798 #endif
799
800 #if defined(MBEDTLS_X509_CRT_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) )
801 #error "MBEDTLS_X509_CRT_PARSE_C defined, but not all prerequisites"
802 #endif
803
804 #if defined(MBEDTLS_X509_CRL_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) )
805 #error "MBEDTLS_X509_CRL_PARSE_C defined, but not all prerequisites"
806 #endif
807
808 #if defined(MBEDTLS_X509_CSR_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) )
809 #error "MBEDTLS_X509_CSR_PARSE_C defined, but not all prerequisites"
810 #endif
811
812 #if defined(MBEDTLS_X509_CRT_WRITE_C) && ( !defined(MBEDTLS_X509_CREATE_C) )
813 #error "MBEDTLS_X509_CRT_WRITE_C defined, but not all prerequisites"
814 #endif
815
816 #if defined(MBEDTLS_X509_CSR_WRITE_C) && ( !defined(MBEDTLS_X509_CREATE_C) )
817 #error "MBEDTLS_X509_CSR_WRITE_C defined, but not all prerequisites"
818 #endif
819
820 #if defined(MBEDTLS_HAVE_INT32) && defined(MBEDTLS_HAVE_INT64)
821 #error "MBEDTLS_HAVE_INT32 and MBEDTLS_HAVE_INT64 cannot be defined simultaneously"
822 #endif /* MBEDTLS_HAVE_INT32 && MBEDTLS_HAVE_INT64 */
823
824 #if ( defined(MBEDTLS_HAVE_INT32) || defined(MBEDTLS_HAVE_INT64) ) && \
825 defined(MBEDTLS_HAVE_ASM)
826 #error "MBEDTLS_HAVE_INT32/MBEDTLS_HAVE_INT64 and MBEDTLS_HAVE_ASM cannot be defined simultaneously"
827 #endif /* (MBEDTLS_HAVE_INT32 || MBEDTLS_HAVE_INT64) && MBEDTLS_HAVE_ASM */
828
829 #if defined(MBEDTLS_SSL_PROTO_SSL3)
830 #if defined(MBEDTLS_DEPRECATED_REMOVED)
831 #error "MBEDTLS_SSL_PROTO_SSL3 is deprecated and will be removed in a future version of Mbed TLS"
832 #elif defined(MBEDTLS_DEPRECATED_WARNING)
833 #warning "MBEDTLS_SSL_PROTO_SSL3 is deprecated and will be removed in a future version of Mbed TLS"
834 #endif
835 #endif /* MBEDTLS_SSL_PROTO_SSL3 */
836
837 #if defined(MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO)
838 #if defined(MBEDTLS_DEPRECATED_REMOVED)
839 #error "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is deprecated and will be removed in a future version of Mbed TLS"
840 #elif defined(MBEDTLS_DEPRECATED_WARNING)
841 #warning "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is deprecated and will be removed in a future version of Mbed TLS"
842 #endif
843 #endif /* MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */
844
845 #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL)
846 #if defined(MBEDTLS_DEPRECATED_REMOVED)
847 #error "MBEDTLS_SSL_HW_RECORD_ACCEL is deprecated and will be removed in a future version of Mbed TLS"
848 #elif defined(MBEDTLS_DEPRECATED_WARNING)
849 #warning "MBEDTLS_SSL_HW_RECORD_ACCEL is deprecated and will be removed in a future version of Mbed TLS"
850 #endif /* MBEDTLS_DEPRECATED_REMOVED */
851 #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */
852
853 /*
854 * Avoid warning from -pedantic. This is a convenient place for this
855 * workaround since this is included by every single file before the
856 * #if defined(MBEDTLS_xxx_C) that results in empty translation units.
857 */
858 typedef int mbedtls_iso_c_forbids_empty_translation_units;
859
860 #endif /* MBEDTLS_CHECK_CONFIG_H */
mbedtls_iso_c_forbids_empty_translation_units
int mbedtls_iso_c_forbids_empty_translation_units
Definition: check_config.h:858