1 // SPDX-License-Identifier: Apache-2.0 2 /* 3 * Version feature information 4 * 5 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); you may 8 * not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 * This file is part of mbed TLS (https://tls.mbed.org) 20 */ 21 22 #if !defined(MBEDTLS_CONFIG_FILE) 23 #include "mbedtls/config.h" 24 #else 25 #include MBEDTLS_CONFIG_FILE 26 #endif 27 28 #if defined(MBEDTLS_VERSION_C) 29 30 #include "mbedtls/version.h" 31 32 #include <string.h> 33 34 static const char *features[] = { 35 #if defined(MBEDTLS_VERSION_FEATURES) 36 #if defined(MBEDTLS_HAVE_ASM) 37 "MBEDTLS_HAVE_ASM", 38 #endif /* MBEDTLS_HAVE_ASM */ 39 #if defined(MBEDTLS_NO_UDBL_DIVISION) 40 "MBEDTLS_NO_UDBL_DIVISION", 41 #endif /* MBEDTLS_NO_UDBL_DIVISION */ 42 #if defined(MBEDTLS_HAVE_SSE2) 43 "MBEDTLS_HAVE_SSE2", 44 #endif /* MBEDTLS_HAVE_SSE2 */ 45 #if defined(MBEDTLS_HAVE_TIME) 46 "MBEDTLS_HAVE_TIME", 47 #endif /* MBEDTLS_HAVE_TIME */ 48 #if defined(MBEDTLS_HAVE_TIME_DATE) 49 "MBEDTLS_HAVE_TIME_DATE", 50 #endif /* MBEDTLS_HAVE_TIME_DATE */ 51 #if defined(MBEDTLS_PLATFORM_MEMORY) 52 "MBEDTLS_PLATFORM_MEMORY", 53 #endif /* MBEDTLS_PLATFORM_MEMORY */ 54 #if defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) 55 "MBEDTLS_PLATFORM_NO_STD_FUNCTIONS", 56 #endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */ 57 #if defined(MBEDTLS_PLATFORM_EXIT_ALT) 58 "MBEDTLS_PLATFORM_EXIT_ALT", 59 #endif /* MBEDTLS_PLATFORM_EXIT_ALT */ 60 #if defined(MBEDTLS_PLATFORM_TIME_ALT) 61 "MBEDTLS_PLATFORM_TIME_ALT", 62 #endif /* MBEDTLS_PLATFORM_TIME_ALT */ 63 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT) 64 "MBEDTLS_PLATFORM_FPRINTF_ALT", 65 #endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */ 66 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT) 67 "MBEDTLS_PLATFORM_PRINTF_ALT", 68 #endif /* MBEDTLS_PLATFORM_PRINTF_ALT */ 69 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) 70 "MBEDTLS_PLATFORM_SNPRINTF_ALT", 71 #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ 72 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT) 73 "MBEDTLS_PLATFORM_NV_SEED_ALT", 74 #endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */ 75 #if defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT) 76 "MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT", 77 #endif /* MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT */ 78 #if defined(MBEDTLS_DEPRECATED_WARNING) 79 "MBEDTLS_DEPRECATED_WARNING", 80 #endif /* MBEDTLS_DEPRECATED_WARNING */ 81 #if defined(MBEDTLS_DEPRECATED_REMOVED) 82 "MBEDTLS_DEPRECATED_REMOVED", 83 #endif /* MBEDTLS_DEPRECATED_REMOVED */ 84 #if defined(MBEDTLS_TIMING_ALT) 85 "MBEDTLS_TIMING_ALT", 86 #endif /* MBEDTLS_TIMING_ALT */ 87 #if defined(MBEDTLS_AES_ALT) 88 "MBEDTLS_AES_ALT", 89 #endif /* MBEDTLS_AES_ALT */ 90 #if defined(MBEDTLS_ARC4_ALT) 91 "MBEDTLS_ARC4_ALT", 92 #endif /* MBEDTLS_ARC4_ALT */ 93 #if defined(MBEDTLS_BLOWFISH_ALT) 94 "MBEDTLS_BLOWFISH_ALT", 95 #endif /* MBEDTLS_BLOWFISH_ALT */ 96 #if defined(MBEDTLS_CAMELLIA_ALT) 97 "MBEDTLS_CAMELLIA_ALT", 98 #endif /* MBEDTLS_CAMELLIA_ALT */ 99 #if defined(MBEDTLS_DES_ALT) 100 "MBEDTLS_DES_ALT", 101 #endif /* MBEDTLS_DES_ALT */ 102 #if defined(MBEDTLS_XTEA_ALT) 103 "MBEDTLS_XTEA_ALT", 104 #endif /* MBEDTLS_XTEA_ALT */ 105 #if defined(MBEDTLS_MD2_ALT) 106 "MBEDTLS_MD2_ALT", 107 #endif /* MBEDTLS_MD2_ALT */ 108 #if defined(MBEDTLS_MD4_ALT) 109 "MBEDTLS_MD4_ALT", 110 #endif /* MBEDTLS_MD4_ALT */ 111 #if defined(MBEDTLS_MD5_ALT) 112 "MBEDTLS_MD5_ALT", 113 #endif /* MBEDTLS_MD5_ALT */ 114 #if defined(MBEDTLS_RIPEMD160_ALT) 115 "MBEDTLS_RIPEMD160_ALT", 116 #endif /* MBEDTLS_RIPEMD160_ALT */ 117 #if defined(MBEDTLS_SHA1_ALT) 118 "MBEDTLS_SHA1_ALT", 119 #endif /* MBEDTLS_SHA1_ALT */ 120 #if defined(MBEDTLS_SHA256_ALT) 121 "MBEDTLS_SHA256_ALT", 122 #endif /* MBEDTLS_SHA256_ALT */ 123 #if defined(MBEDTLS_SHA512_ALT) 124 "MBEDTLS_SHA512_ALT", 125 #endif /* MBEDTLS_SHA512_ALT */ 126 #if defined(MBEDTLS_ECP_ALT) 127 "MBEDTLS_ECP_ALT", 128 #endif /* MBEDTLS_ECP_ALT */ 129 #if defined(MBEDTLS_MD2_PROCESS_ALT) 130 "MBEDTLS_MD2_PROCESS_ALT", 131 #endif /* MBEDTLS_MD2_PROCESS_ALT */ 132 #if defined(MBEDTLS_MD4_PROCESS_ALT) 133 "MBEDTLS_MD4_PROCESS_ALT", 134 #endif /* MBEDTLS_MD4_PROCESS_ALT */ 135 #if defined(MBEDTLS_MD5_PROCESS_ALT) 136 "MBEDTLS_MD5_PROCESS_ALT", 137 #endif /* MBEDTLS_MD5_PROCESS_ALT */ 138 #if defined(MBEDTLS_RIPEMD160_PROCESS_ALT) 139 "MBEDTLS_RIPEMD160_PROCESS_ALT", 140 #endif /* MBEDTLS_RIPEMD160_PROCESS_ALT */ 141 #if defined(MBEDTLS_SHA1_PROCESS_ALT) 142 "MBEDTLS_SHA1_PROCESS_ALT", 143 #endif /* MBEDTLS_SHA1_PROCESS_ALT */ 144 #if defined(MBEDTLS_SHA256_PROCESS_ALT) 145 "MBEDTLS_SHA256_PROCESS_ALT", 146 #endif /* MBEDTLS_SHA256_PROCESS_ALT */ 147 #if defined(MBEDTLS_SHA512_PROCESS_ALT) 148 "MBEDTLS_SHA512_PROCESS_ALT", 149 #endif /* MBEDTLS_SHA512_PROCESS_ALT */ 150 #if defined(MBEDTLS_DES_SETKEY_ALT) 151 "MBEDTLS_DES_SETKEY_ALT", 152 #endif /* MBEDTLS_DES_SETKEY_ALT */ 153 #if defined(MBEDTLS_DES_CRYPT_ECB_ALT) 154 "MBEDTLS_DES_CRYPT_ECB_ALT", 155 #endif /* MBEDTLS_DES_CRYPT_ECB_ALT */ 156 #if defined(MBEDTLS_DES3_CRYPT_ECB_ALT) 157 "MBEDTLS_DES3_CRYPT_ECB_ALT", 158 #endif /* MBEDTLS_DES3_CRYPT_ECB_ALT */ 159 #if defined(MBEDTLS_AES_SETKEY_ENC_ALT) 160 "MBEDTLS_AES_SETKEY_ENC_ALT", 161 #endif /* MBEDTLS_AES_SETKEY_ENC_ALT */ 162 #if defined(MBEDTLS_AES_SETKEY_DEC_ALT) 163 "MBEDTLS_AES_SETKEY_DEC_ALT", 164 #endif /* MBEDTLS_AES_SETKEY_DEC_ALT */ 165 #if defined(MBEDTLS_AES_ENCRYPT_ALT) 166 "MBEDTLS_AES_ENCRYPT_ALT", 167 #endif /* MBEDTLS_AES_ENCRYPT_ALT */ 168 #if defined(MBEDTLS_AES_DECRYPT_ALT) 169 "MBEDTLS_AES_DECRYPT_ALT", 170 #endif /* MBEDTLS_AES_DECRYPT_ALT */ 171 #if defined(MBEDTLS_ECP_INTERNAL_ALT) 172 "MBEDTLS_ECP_INTERNAL_ALT", 173 #endif /* MBEDTLS_ECP_INTERNAL_ALT */ 174 #if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) 175 "MBEDTLS_ECP_RANDOMIZE_JAC_ALT", 176 #endif /* MBEDTLS_ECP_RANDOMIZE_JAC_ALT */ 177 #if defined(MBEDTLS_ECP_ADD_MIXED_ALT) 178 "MBEDTLS_ECP_ADD_MIXED_ALT", 179 #endif /* MBEDTLS_ECP_ADD_MIXED_ALT */ 180 #if defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) 181 "MBEDTLS_ECP_DOUBLE_JAC_ALT", 182 #endif /* MBEDTLS_ECP_DOUBLE_JAC_ALT */ 183 #if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) 184 "MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT", 185 #endif /* MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT */ 186 #if defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT) 187 "MBEDTLS_ECP_NORMALIZE_JAC_ALT", 188 #endif /* MBEDTLS_ECP_NORMALIZE_JAC_ALT */ 189 #if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) 190 "MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT", 191 #endif /* MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT */ 192 #if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) 193 "MBEDTLS_ECP_RANDOMIZE_MXZ_ALT", 194 #endif /* MBEDTLS_ECP_RANDOMIZE_MXZ_ALT */ 195 #if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) 196 "MBEDTLS_ECP_NORMALIZE_MXZ_ALT", 197 #endif /* MBEDTLS_ECP_NORMALIZE_MXZ_ALT */ 198 #if defined(MBEDTLS_TEST_NULL_ENTROPY) 199 "MBEDTLS_TEST_NULL_ENTROPY", 200 #endif /* MBEDTLS_TEST_NULL_ENTROPY */ 201 #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) 202 "MBEDTLS_ENTROPY_HARDWARE_ALT", 203 #endif /* MBEDTLS_ENTROPY_HARDWARE_ALT */ 204 #if defined(MBEDTLS_AES_ROM_TABLES) 205 "MBEDTLS_AES_ROM_TABLES", 206 #endif /* MBEDTLS_AES_ROM_TABLES */ 207 #if defined(MBEDTLS_CAMELLIA_SMALL_MEMORY) 208 "MBEDTLS_CAMELLIA_SMALL_MEMORY", 209 #endif /* MBEDTLS_CAMELLIA_SMALL_MEMORY */ 210 #if defined(MBEDTLS_CIPHER_MODE_CBC) 211 "MBEDTLS_CIPHER_MODE_CBC", 212 #endif /* MBEDTLS_CIPHER_MODE_CBC */ 213 #if defined(MBEDTLS_CIPHER_MODE_CFB) 214 "MBEDTLS_CIPHER_MODE_CFB", 215 #endif /* MBEDTLS_CIPHER_MODE_CFB */ 216 #if defined(MBEDTLS_CIPHER_MODE_CTR) 217 "MBEDTLS_CIPHER_MODE_CTR", 218 #endif /* MBEDTLS_CIPHER_MODE_CTR */ 219 #if defined(MBEDTLS_CIPHER_NULL_CIPHER) 220 "MBEDTLS_CIPHER_NULL_CIPHER", 221 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */ 222 #if defined(MBEDTLS_CIPHER_PADDING_PKCS7) 223 "MBEDTLS_CIPHER_PADDING_PKCS7", 224 #endif /* MBEDTLS_CIPHER_PADDING_PKCS7 */ 225 #if defined(MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS) 226 "MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS", 227 #endif /* MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS */ 228 #if defined(MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN) 229 "MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN", 230 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN */ 231 #if defined(MBEDTLS_CIPHER_PADDING_ZEROS) 232 "MBEDTLS_CIPHER_PADDING_ZEROS", 233 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS */ 234 #if defined(MBEDTLS_ENABLE_WEAK_CIPHERSUITES) 235 "MBEDTLS_ENABLE_WEAK_CIPHERSUITES", 236 #endif /* MBEDTLS_ENABLE_WEAK_CIPHERSUITES */ 237 #if defined(MBEDTLS_REMOVE_ARC4_CIPHERSUITES) 238 "MBEDTLS_REMOVE_ARC4_CIPHERSUITES", 239 #endif /* MBEDTLS_REMOVE_ARC4_CIPHERSUITES */ 240 #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) 241 "MBEDTLS_ECP_DP_SECP192R1_ENABLED", 242 #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */ 243 #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) 244 "MBEDTLS_ECP_DP_SECP224R1_ENABLED", 245 #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */ 246 #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) 247 "MBEDTLS_ECP_DP_SECP256R1_ENABLED", 248 #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */ 249 #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) 250 "MBEDTLS_ECP_DP_SECP384R1_ENABLED", 251 #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */ 252 #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) 253 "MBEDTLS_ECP_DP_SECP521R1_ENABLED", 254 #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */ 255 #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) 256 "MBEDTLS_ECP_DP_SECP192K1_ENABLED", 257 #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ 258 #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) 259 "MBEDTLS_ECP_DP_SECP224K1_ENABLED", 260 #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */ 261 #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) 262 "MBEDTLS_ECP_DP_SECP256K1_ENABLED", 263 #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ 264 #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) 265 "MBEDTLS_ECP_DP_BP256R1_ENABLED", 266 #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */ 267 #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) 268 "MBEDTLS_ECP_DP_BP384R1_ENABLED", 269 #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */ 270 #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) 271 "MBEDTLS_ECP_DP_BP512R1_ENABLED", 272 #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ 273 #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) 274 "MBEDTLS_ECP_DP_CURVE25519_ENABLED", 275 #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */ 276 #if defined(MBEDTLS_ECP_NIST_OPTIM) 277 "MBEDTLS_ECP_NIST_OPTIM", 278 #endif /* MBEDTLS_ECP_NIST_OPTIM */ 279 #if defined(MBEDTLS_ECDSA_DETERMINISTIC) 280 "MBEDTLS_ECDSA_DETERMINISTIC", 281 #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ 282 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) 283 "MBEDTLS_KEY_EXCHANGE_PSK_ENABLED", 284 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */ 285 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) 286 "MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED", 287 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */ 288 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) 289 "MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED", 290 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */ 291 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) 292 "MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED", 293 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */ 294 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) 295 "MBEDTLS_KEY_EXCHANGE_RSA_ENABLED", 296 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */ 297 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) 298 "MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED", 299 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */ 300 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) 301 "MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED", 302 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */ 303 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) 304 "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED", 305 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */ 306 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) 307 "MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED", 308 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ 309 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) 310 "MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED", 311 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */ 312 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) 313 "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED", 314 #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ 315 #if defined(MBEDTLS_PK_PARSE_EC_EXTENDED) 316 "MBEDTLS_PK_PARSE_EC_EXTENDED", 317 #endif /* MBEDTLS_PK_PARSE_EC_EXTENDED */ 318 #if defined(MBEDTLS_ERROR_STRERROR_DUMMY) 319 "MBEDTLS_ERROR_STRERROR_DUMMY", 320 #endif /* MBEDTLS_ERROR_STRERROR_DUMMY */ 321 #if defined(MBEDTLS_GENPRIME) 322 "MBEDTLS_GENPRIME", 323 #endif /* MBEDTLS_GENPRIME */ 324 #if defined(MBEDTLS_FS_IO) 325 "MBEDTLS_FS_IO", 326 #endif /* MBEDTLS_FS_IO */ 327 #if defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) 328 "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES", 329 #endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */ 330 #if defined(MBEDTLS_NO_PLATFORM_ENTROPY) 331 "MBEDTLS_NO_PLATFORM_ENTROPY", 332 #endif /* MBEDTLS_NO_PLATFORM_ENTROPY */ 333 #if defined(MBEDTLS_ENTROPY_FORCE_SHA256) 334 "MBEDTLS_ENTROPY_FORCE_SHA256", 335 #endif /* MBEDTLS_ENTROPY_FORCE_SHA256 */ 336 #if defined(MBEDTLS_ENTROPY_NV_SEED) 337 "MBEDTLS_ENTROPY_NV_SEED", 338 #endif /* MBEDTLS_ENTROPY_NV_SEED */ 339 #if defined(MBEDTLS_MEMORY_DEBUG) 340 "MBEDTLS_MEMORY_DEBUG", 341 #endif /* MBEDTLS_MEMORY_DEBUG */ 342 #if defined(MBEDTLS_MEMORY_BACKTRACE) 343 "MBEDTLS_MEMORY_BACKTRACE", 344 #endif /* MBEDTLS_MEMORY_BACKTRACE */ 345 #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) 346 "MBEDTLS_PK_RSA_ALT_SUPPORT", 347 #endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */ 348 #if defined(MBEDTLS_PKCS1_V15) 349 "MBEDTLS_PKCS1_V15", 350 #endif /* MBEDTLS_PKCS1_V15 */ 351 #if defined(MBEDTLS_PKCS1_V21) 352 "MBEDTLS_PKCS1_V21", 353 #endif /* MBEDTLS_PKCS1_V21 */ 354 #if defined(MBEDTLS_RSA_NO_CRT) 355 "MBEDTLS_RSA_NO_CRT", 356 #endif /* MBEDTLS_RSA_NO_CRT */ 357 #if defined(MBEDTLS_SELF_TEST) 358 "MBEDTLS_SELF_TEST", 359 #endif /* MBEDTLS_SELF_TEST */ 360 #if defined(MBEDTLS_SHA256_SMALLER) 361 "MBEDTLS_SHA256_SMALLER", 362 #endif /* MBEDTLS_SHA256_SMALLER */ 363 #if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES) 364 "MBEDTLS_SSL_ALL_ALERT_MESSAGES", 365 #endif /* MBEDTLS_SSL_ALL_ALERT_MESSAGES */ 366 #if defined(MBEDTLS_SSL_DEBUG_ALL) 367 "MBEDTLS_SSL_DEBUG_ALL", 368 #endif /* MBEDTLS_SSL_DEBUG_ALL */ 369 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) 370 "MBEDTLS_SSL_ENCRYPT_THEN_MAC", 371 #endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ 372 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) 373 "MBEDTLS_SSL_EXTENDED_MASTER_SECRET", 374 #endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */ 375 #if defined(MBEDTLS_SSL_FALLBACK_SCSV) 376 "MBEDTLS_SSL_FALLBACK_SCSV", 377 #endif /* MBEDTLS_SSL_FALLBACK_SCSV */ 378 #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) 379 "MBEDTLS_SSL_HW_RECORD_ACCEL", 380 #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ 381 #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) 382 "MBEDTLS_SSL_CBC_RECORD_SPLITTING", 383 #endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */ 384 #if defined(MBEDTLS_SSL_RENEGOTIATION) 385 "MBEDTLS_SSL_RENEGOTIATION", 386 #endif /* MBEDTLS_SSL_RENEGOTIATION */ 387 #if defined(MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO) 388 "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO", 389 #endif /* MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */ 390 #if defined(MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE) 391 "MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE", 392 #endif /* MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE */ 393 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) 394 "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH", 395 #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ 396 #if defined(MBEDTLS_SSL_PROTO_SSL3) 397 "MBEDTLS_SSL_PROTO_SSL3", 398 #endif /* MBEDTLS_SSL_PROTO_SSL3 */ 399 #if defined(MBEDTLS_SSL_PROTO_TLS1) 400 "MBEDTLS_SSL_PROTO_TLS1", 401 #endif /* MBEDTLS_SSL_PROTO_TLS1 */ 402 #if defined(MBEDTLS_SSL_PROTO_TLS1_1) 403 "MBEDTLS_SSL_PROTO_TLS1_1", 404 #endif /* MBEDTLS_SSL_PROTO_TLS1_1 */ 405 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) 406 "MBEDTLS_SSL_PROTO_TLS1_2", 407 #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ 408 #if defined(MBEDTLS_SSL_PROTO_DTLS) 409 "MBEDTLS_SSL_PROTO_DTLS", 410 #endif /* MBEDTLS_SSL_PROTO_DTLS */ 411 #if defined(MBEDTLS_SSL_ALPN) 412 "MBEDTLS_SSL_ALPN", 413 #endif /* MBEDTLS_SSL_ALPN */ 414 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) 415 "MBEDTLS_SSL_DTLS_ANTI_REPLAY", 416 #endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ 417 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) 418 "MBEDTLS_SSL_DTLS_HELLO_VERIFY", 419 #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY */ 420 #if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) 421 "MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE", 422 #endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE */ 423 #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) 424 "MBEDTLS_SSL_DTLS_BADMAC_LIMIT", 425 #endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ 426 #if defined(MBEDTLS_SSL_SESSION_TICKETS) 427 "MBEDTLS_SSL_SESSION_TICKETS", 428 #endif /* MBEDTLS_SSL_SESSION_TICKETS */ 429 #if defined(MBEDTLS_SSL_EXPORT_KEYS) 430 "MBEDTLS_SSL_EXPORT_KEYS", 431 #endif /* MBEDTLS_SSL_EXPORT_KEYS */ 432 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) 433 "MBEDTLS_SSL_SERVER_NAME_INDICATION", 434 #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ 435 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC) 436 "MBEDTLS_SSL_TRUNCATED_HMAC", 437 #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ 438 #if defined(MBEDTLS_THREADING_ALT) 439 "MBEDTLS_THREADING_ALT", 440 #endif /* MBEDTLS_THREADING_ALT */ 441 #if defined(MBEDTLS_THREADING_PTHREAD) 442 "MBEDTLS_THREADING_PTHREAD", 443 #endif /* MBEDTLS_THREADING_PTHREAD */ 444 #if defined(MBEDTLS_VERSION_FEATURES) 445 "MBEDTLS_VERSION_FEATURES", 446 #endif /* MBEDTLS_VERSION_FEATURES */ 447 #if defined(MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3) 448 "MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3", 449 #endif /* MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 */ 450 #if defined(MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION) 451 "MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION", 452 #endif /* MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION */ 453 #if defined(MBEDTLS_X509_CHECK_KEY_USAGE) 454 "MBEDTLS_X509_CHECK_KEY_USAGE", 455 #endif /* MBEDTLS_X509_CHECK_KEY_USAGE */ 456 #if defined(MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE) 457 "MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE", 458 #endif /* MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE */ 459 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) 460 "MBEDTLS_X509_RSASSA_PSS_SUPPORT", 461 #endif /* MBEDTLS_X509_RSASSA_PSS_SUPPORT */ 462 #if defined(MBEDTLS_ZLIB_SUPPORT) 463 "MBEDTLS_ZLIB_SUPPORT", 464 #endif /* MBEDTLS_ZLIB_SUPPORT */ 465 #if defined(MBEDTLS_AESNI_C) 466 "MBEDTLS_AESNI_C", 467 #endif /* MBEDTLS_AESNI_C */ 468 #if defined(MBEDTLS_AES_C) 469 "MBEDTLS_AES_C", 470 #endif /* MBEDTLS_AES_C */ 471 #if defined(MBEDTLS_ARC4_C) 472 "MBEDTLS_ARC4_C", 473 #endif /* MBEDTLS_ARC4_C */ 474 #if defined(MBEDTLS_ASN1_PARSE_C) 475 "MBEDTLS_ASN1_PARSE_C", 476 #endif /* MBEDTLS_ASN1_PARSE_C */ 477 #if defined(MBEDTLS_ASN1_WRITE_C) 478 "MBEDTLS_ASN1_WRITE_C", 479 #endif /* MBEDTLS_ASN1_WRITE_C */ 480 #if defined(MBEDTLS_BASE64_C) 481 "MBEDTLS_BASE64_C", 482 #endif /* MBEDTLS_BASE64_C */ 483 #if defined(MBEDTLS_BIGNUM_C) 484 "MBEDTLS_BIGNUM_C", 485 #endif /* MBEDTLS_BIGNUM_C */ 486 #if defined(MBEDTLS_BLOWFISH_C) 487 "MBEDTLS_BLOWFISH_C", 488 #endif /* MBEDTLS_BLOWFISH_C */ 489 #if defined(MBEDTLS_CAMELLIA_C) 490 "MBEDTLS_CAMELLIA_C", 491 #endif /* MBEDTLS_CAMELLIA_C */ 492 #if defined(MBEDTLS_CCM_C) 493 "MBEDTLS_CCM_C", 494 #endif /* MBEDTLS_CCM_C */ 495 #if defined(MBEDTLS_CERTS_C) 496 "MBEDTLS_CERTS_C", 497 #endif /* MBEDTLS_CERTS_C */ 498 #if defined(MBEDTLS_CIPHER_C) 499 "MBEDTLS_CIPHER_C", 500 #endif /* MBEDTLS_CIPHER_C */ 501 #if defined(MBEDTLS_CMAC_C) 502 "MBEDTLS_CMAC_C", 503 #endif /* MBEDTLS_CMAC_C */ 504 #if defined(MBEDTLS_CTR_DRBG_C) 505 "MBEDTLS_CTR_DRBG_C", 506 #endif /* MBEDTLS_CTR_DRBG_C */ 507 #if defined(MBEDTLS_DEBUG_C) 508 "MBEDTLS_DEBUG_C", 509 #endif /* MBEDTLS_DEBUG_C */ 510 #if defined(MBEDTLS_DES_C) 511 "MBEDTLS_DES_C", 512 #endif /* MBEDTLS_DES_C */ 513 #if defined(MBEDTLS_DHM_C) 514 "MBEDTLS_DHM_C", 515 #endif /* MBEDTLS_DHM_C */ 516 #if defined(MBEDTLS_ECDH_C) 517 "MBEDTLS_ECDH_C", 518 #endif /* MBEDTLS_ECDH_C */ 519 #if defined(MBEDTLS_ECDSA_C) 520 "MBEDTLS_ECDSA_C", 521 #endif /* MBEDTLS_ECDSA_C */ 522 #if defined(MBEDTLS_ECJPAKE_C) 523 "MBEDTLS_ECJPAKE_C", 524 #endif /* MBEDTLS_ECJPAKE_C */ 525 #if defined(MBEDTLS_ECP_C) 526 "MBEDTLS_ECP_C", 527 #endif /* MBEDTLS_ECP_C */ 528 #if defined(MBEDTLS_ENTROPY_C) 529 "MBEDTLS_ENTROPY_C", 530 #endif /* MBEDTLS_ENTROPY_C */ 531 #if defined(MBEDTLS_ERROR_C) 532 "MBEDTLS_ERROR_C", 533 #endif /* MBEDTLS_ERROR_C */ 534 #if defined(MBEDTLS_GCM_C) 535 "MBEDTLS_GCM_C", 536 #endif /* MBEDTLS_GCM_C */ 537 #if defined(MBEDTLS_HAVEGE_C) 538 "MBEDTLS_HAVEGE_C", 539 #endif /* MBEDTLS_HAVEGE_C */ 540 #if defined(MBEDTLS_HMAC_DRBG_C) 541 "MBEDTLS_HMAC_DRBG_C", 542 #endif /* MBEDTLS_HMAC_DRBG_C */ 543 #if defined(MBEDTLS_MD_C) 544 "MBEDTLS_MD_C", 545 #endif /* MBEDTLS_MD_C */ 546 #if defined(MBEDTLS_MD2_C) 547 "MBEDTLS_MD2_C", 548 #endif /* MBEDTLS_MD2_C */ 549 #if defined(MBEDTLS_MD4_C) 550 "MBEDTLS_MD4_C", 551 #endif /* MBEDTLS_MD4_C */ 552 #if defined(MBEDTLS_MD5_C) 553 "MBEDTLS_MD5_C", 554 #endif /* MBEDTLS_MD5_C */ 555 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) 556 "MBEDTLS_MEMORY_BUFFER_ALLOC_C", 557 #endif /* MBEDTLS_MEMORY_BUFFER_ALLOC_C */ 558 #if defined(MBEDTLS_NET_C) 559 "MBEDTLS_NET_C", 560 #endif /* MBEDTLS_NET_C */ 561 #if defined(MBEDTLS_OID_C) 562 "MBEDTLS_OID_C", 563 #endif /* MBEDTLS_OID_C */ 564 #if defined(MBEDTLS_PADLOCK_C) 565 "MBEDTLS_PADLOCK_C", 566 #endif /* MBEDTLS_PADLOCK_C */ 567 #if defined(MBEDTLS_PEM_PARSE_C) 568 "MBEDTLS_PEM_PARSE_C", 569 #endif /* MBEDTLS_PEM_PARSE_C */ 570 #if defined(MBEDTLS_PEM_WRITE_C) 571 "MBEDTLS_PEM_WRITE_C", 572 #endif /* MBEDTLS_PEM_WRITE_C */ 573 #if defined(MBEDTLS_PK_C) 574 "MBEDTLS_PK_C", 575 #endif /* MBEDTLS_PK_C */ 576 #if defined(MBEDTLS_PK_PARSE_C) 577 "MBEDTLS_PK_PARSE_C", 578 #endif /* MBEDTLS_PK_PARSE_C */ 579 #if defined(MBEDTLS_PK_WRITE_C) 580 "MBEDTLS_PK_WRITE_C", 581 #endif /* MBEDTLS_PK_WRITE_C */ 582 #if defined(MBEDTLS_PKCS5_C) 583 "MBEDTLS_PKCS5_C", 584 #endif /* MBEDTLS_PKCS5_C */ 585 #if defined(MBEDTLS_PKCS11_C) 586 "MBEDTLS_PKCS11_C", 587 #endif /* MBEDTLS_PKCS11_C */ 588 #if defined(MBEDTLS_PKCS12_C) 589 "MBEDTLS_PKCS12_C", 590 #endif /* MBEDTLS_PKCS12_C */ 591 #if defined(MBEDTLS_PLATFORM_C) 592 "MBEDTLS_PLATFORM_C", 593 #endif /* MBEDTLS_PLATFORM_C */ 594 #if defined(MBEDTLS_RIPEMD160_C) 595 "MBEDTLS_RIPEMD160_C", 596 #endif /* MBEDTLS_RIPEMD160_C */ 597 #if defined(MBEDTLS_RSA_C) 598 "MBEDTLS_RSA_C", 599 #endif /* MBEDTLS_RSA_C */ 600 #if defined(MBEDTLS_SHA1_C) 601 "MBEDTLS_SHA1_C", 602 #endif /* MBEDTLS_SHA1_C */ 603 #if defined(MBEDTLS_SHA256_C) 604 "MBEDTLS_SHA256_C", 605 #endif /* MBEDTLS_SHA256_C */ 606 #if defined(MBEDTLS_SHA512_C) 607 "MBEDTLS_SHA512_C", 608 #endif /* MBEDTLS_SHA512_C */ 609 #if defined(MBEDTLS_SSL_CACHE_C) 610 "MBEDTLS_SSL_CACHE_C", 611 #endif /* MBEDTLS_SSL_CACHE_C */ 612 #if defined(MBEDTLS_SSL_COOKIE_C) 613 "MBEDTLS_SSL_COOKIE_C", 614 #endif /* MBEDTLS_SSL_COOKIE_C */ 615 #if defined(MBEDTLS_SSL_TICKET_C) 616 "MBEDTLS_SSL_TICKET_C", 617 #endif /* MBEDTLS_SSL_TICKET_C */ 618 #if defined(MBEDTLS_SSL_CLI_C) 619 "MBEDTLS_SSL_CLI_C", 620 #endif /* MBEDTLS_SSL_CLI_C */ 621 #if defined(MBEDTLS_SSL_SRV_C) 622 "MBEDTLS_SSL_SRV_C", 623 #endif /* MBEDTLS_SSL_SRV_C */ 624 #if defined(MBEDTLS_SSL_TLS_C) 625 "MBEDTLS_SSL_TLS_C", 626 #endif /* MBEDTLS_SSL_TLS_C */ 627 #if defined(MBEDTLS_THREADING_C) 628 "MBEDTLS_THREADING_C", 629 #endif /* MBEDTLS_THREADING_C */ 630 #if defined(MBEDTLS_TIMING_C) 631 "MBEDTLS_TIMING_C", 632 #endif /* MBEDTLS_TIMING_C */ 633 #if defined(MBEDTLS_VERSION_C) 634 "MBEDTLS_VERSION_C", 635 #endif /* MBEDTLS_VERSION_C */ 636 #if defined(MBEDTLS_X509_USE_C) 637 "MBEDTLS_X509_USE_C", 638 #endif /* MBEDTLS_X509_USE_C */ 639 #if defined(MBEDTLS_X509_CRT_PARSE_C) 640 "MBEDTLS_X509_CRT_PARSE_C", 641 #endif /* MBEDTLS_X509_CRT_PARSE_C */ 642 #if defined(MBEDTLS_X509_CRL_PARSE_C) 643 "MBEDTLS_X509_CRL_PARSE_C", 644 #endif /* MBEDTLS_X509_CRL_PARSE_C */ 645 #if defined(MBEDTLS_X509_CSR_PARSE_C) 646 "MBEDTLS_X509_CSR_PARSE_C", 647 #endif /* MBEDTLS_X509_CSR_PARSE_C */ 648 #if defined(MBEDTLS_X509_CREATE_C) 649 "MBEDTLS_X509_CREATE_C", 650 #endif /* MBEDTLS_X509_CREATE_C */ 651 #if defined(MBEDTLS_X509_CRT_WRITE_C) 652 "MBEDTLS_X509_CRT_WRITE_C", 653 #endif /* MBEDTLS_X509_CRT_WRITE_C */ 654 #if defined(MBEDTLS_X509_CSR_WRITE_C) 655 "MBEDTLS_X509_CSR_WRITE_C", 656 #endif /* MBEDTLS_X509_CSR_WRITE_C */ 657 #if defined(MBEDTLS_XTEA_C) 658 "MBEDTLS_XTEA_C", 659 #endif /* MBEDTLS_XTEA_C */ 660 #endif /* MBEDTLS_VERSION_FEATURES */ 661 NULL 662 }; 663 664 int mbedtls_version_check_feature( const char *feature ) 665 { 666 const char **idx = features; 667 668 if( *idx == NULL ) 669 return( -2 ); 670 671 if( feature == NULL ) 672 return( -1 ); 673 674 while( *idx != NULL ) 675 { 676 if( !strcmp( *idx, feature ) ) 677 return( 0 ); 678 idx++; 679 } 680 return( -1 ); 681 } 682 683 #endif /* MBEDTLS_VERSION_C */ 684