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