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