mbedtls ported to mbed-classic

Fork of mbedtls by Christopher Haster

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers version_features.c Source File

version_features.c

00001 /*
00002  *  Version feature information
00003  *
00004  *  Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
00005  *  SPDX-License-Identifier: Apache-2.0
00006  *
00007  *  Licensed under the Apache License, Version 2.0 (the "License"); you may
00008  *  not use this file except in compliance with the License.
00009  *  You may obtain a copy of the License at
00010  *
00011  *  http://www.apache.org/licenses/LICENSE-2.0
00012  *
00013  *  Unless required by applicable law or agreed to in writing, software
00014  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00015  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00016  *  See the License for the specific language governing permissions and
00017  *  limitations under the License.
00018  *
00019  *  This file is part of mbed TLS (https://tls.mbed.org)
00020  */
00021 
00022 #if !defined(MBEDTLS_CONFIG_FILE)
00023 #include "mbedtls/config.h"
00024 #else
00025 #include MBEDTLS_CONFIG_FILE
00026 #endif
00027 
00028 #if defined(MBEDTLS_VERSION_C)
00029 
00030 #include "mbedtls/version.h"
00031 
00032 #include <string.h>
00033 
00034 static const char *features[] = {
00035 #if defined(MBEDTLS_VERSION_FEATURES)
00036 #if defined(MBEDTLS_HAVE_ASM)
00037     "MBEDTLS_HAVE_ASM",
00038 #endif /* MBEDTLS_HAVE_ASM */
00039 #if defined(MBEDTLS_HAVE_SSE2)
00040     "MBEDTLS_HAVE_SSE2",
00041 #endif /* MBEDTLS_HAVE_SSE2 */
00042 #if defined(MBEDTLS_HAVE_TIME)
00043     "MBEDTLS_HAVE_TIME",
00044 #endif /* MBEDTLS_HAVE_TIME */
00045 #if defined(MBEDTLS_HAVE_TIME_DATE)
00046     "MBEDTLS_HAVE_TIME_DATE",
00047 #endif /* MBEDTLS_HAVE_TIME_DATE */
00048 #if defined(MBEDTLS_PLATFORM_MEMORY)
00049     "MBEDTLS_PLATFORM_MEMORY",
00050 #endif /* MBEDTLS_PLATFORM_MEMORY */
00051 #if defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
00052     "MBEDTLS_PLATFORM_NO_STD_FUNCTIONS",
00053 #endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
00054 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
00055     "MBEDTLS_PLATFORM_EXIT_ALT",
00056 #endif /* MBEDTLS_PLATFORM_EXIT_ALT */
00057 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
00058     "MBEDTLS_PLATFORM_FPRINTF_ALT",
00059 #endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
00060 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
00061     "MBEDTLS_PLATFORM_PRINTF_ALT",
00062 #endif /* MBEDTLS_PLATFORM_PRINTF_ALT */
00063 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
00064     "MBEDTLS_PLATFORM_SNPRINTF_ALT",
00065 #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
00066 #if defined(MBEDTLS_DEPRECATED_WARNING)
00067     "MBEDTLS_DEPRECATED_WARNING",
00068 #endif /* MBEDTLS_DEPRECATED_WARNING */
00069 #if defined(MBEDTLS_DEPRECATED_REMOVED)
00070     "MBEDTLS_DEPRECATED_REMOVED",
00071 #endif /* MBEDTLS_DEPRECATED_REMOVED */
00072 #if defined(MBEDTLS_TIMING_ALT)
00073     "MBEDTLS_TIMING_ALT",
00074 #endif /* MBEDTLS_TIMING_ALT */
00075 #if defined(MBEDTLS_AES_ALT)
00076     "MBEDTLS_AES_ALT",
00077 #endif /* MBEDTLS_AES_ALT */
00078 #if defined(MBEDTLS_ARC4_ALT)
00079     "MBEDTLS_ARC4_ALT",
00080 #endif /* MBEDTLS_ARC4_ALT */
00081 #if defined(MBEDTLS_BLOWFISH_ALT)
00082     "MBEDTLS_BLOWFISH_ALT",
00083 #endif /* MBEDTLS_BLOWFISH_ALT */
00084 #if defined(MBEDTLS_CAMELLIA_ALT)
00085     "MBEDTLS_CAMELLIA_ALT",
00086 #endif /* MBEDTLS_CAMELLIA_ALT */
00087 #if defined(MBEDTLS_DES_ALT)
00088     "MBEDTLS_DES_ALT",
00089 #endif /* MBEDTLS_DES_ALT */
00090 #if defined(MBEDTLS_XTEA_ALT)
00091     "MBEDTLS_XTEA_ALT",
00092 #endif /* MBEDTLS_XTEA_ALT */
00093 #if defined(MBEDTLS_MD2_ALT)
00094     "MBEDTLS_MD2_ALT",
00095 #endif /* MBEDTLS_MD2_ALT */
00096 #if defined(MBEDTLS_MD4_ALT)
00097     "MBEDTLS_MD4_ALT",
00098 #endif /* MBEDTLS_MD4_ALT */
00099 #if defined(MBEDTLS_MD5_ALT)
00100     "MBEDTLS_MD5_ALT",
00101 #endif /* MBEDTLS_MD5_ALT */
00102 #if defined(MBEDTLS_RIPEMD160_ALT)
00103     "MBEDTLS_RIPEMD160_ALT",
00104 #endif /* MBEDTLS_RIPEMD160_ALT */
00105 #if defined(MBEDTLS_SHA1_ALT)
00106     "MBEDTLS_SHA1_ALT",
00107 #endif /* MBEDTLS_SHA1_ALT */
00108 #if defined(MBEDTLS_SHA256_ALT)
00109     "MBEDTLS_SHA256_ALT",
00110 #endif /* MBEDTLS_SHA256_ALT */
00111 #if defined(MBEDTLS_SHA512_ALT)
00112     "MBEDTLS_SHA512_ALT",
00113 #endif /* MBEDTLS_SHA512_ALT */
00114 #if defined(MBEDTLS_MD2_PROCESS_ALT)
00115     "MBEDTLS_MD2_PROCESS_ALT",
00116 #endif /* MBEDTLS_MD2_PROCESS_ALT */
00117 #if defined(MBEDTLS_MD4_PROCESS_ALT)
00118     "MBEDTLS_MD4_PROCESS_ALT",
00119 #endif /* MBEDTLS_MD4_PROCESS_ALT */
00120 #if defined(MBEDTLS_MD5_PROCESS_ALT)
00121     "MBEDTLS_MD5_PROCESS_ALT",
00122 #endif /* MBEDTLS_MD5_PROCESS_ALT */
00123 #if defined(MBEDTLS_RIPEMD160_PROCESS_ALT)
00124     "MBEDTLS_RIPEMD160_PROCESS_ALT",
00125 #endif /* MBEDTLS_RIPEMD160_PROCESS_ALT */
00126 #if defined(MBEDTLS_SHA1_PROCESS_ALT)
00127     "MBEDTLS_SHA1_PROCESS_ALT",
00128 #endif /* MBEDTLS_SHA1_PROCESS_ALT */
00129 #if defined(MBEDTLS_SHA256_PROCESS_ALT)
00130     "MBEDTLS_SHA256_PROCESS_ALT",
00131 #endif /* MBEDTLS_SHA256_PROCESS_ALT */
00132 #if defined(MBEDTLS_SHA512_PROCESS_ALT)
00133     "MBEDTLS_SHA512_PROCESS_ALT",
00134 #endif /* MBEDTLS_SHA512_PROCESS_ALT */
00135 #if defined(MBEDTLS_DES_SETKEY_ALT)
00136     "MBEDTLS_DES_SETKEY_ALT",
00137 #endif /* MBEDTLS_DES_SETKEY_ALT */
00138 #if defined(MBEDTLS_DES_CRYPT_ECB_ALT)
00139     "MBEDTLS_DES_CRYPT_ECB_ALT",
00140 #endif /* MBEDTLS_DES_CRYPT_ECB_ALT */
00141 #if defined(MBEDTLS_DES3_CRYPT_ECB_ALT)
00142     "MBEDTLS_DES3_CRYPT_ECB_ALT",
00143 #endif /* MBEDTLS_DES3_CRYPT_ECB_ALT */
00144 #if defined(MBEDTLS_AES_SETKEY_ENC_ALT)
00145     "MBEDTLS_AES_SETKEY_ENC_ALT",
00146 #endif /* MBEDTLS_AES_SETKEY_ENC_ALT */
00147 #if defined(MBEDTLS_AES_SETKEY_DEC_ALT)
00148     "MBEDTLS_AES_SETKEY_DEC_ALT",
00149 #endif /* MBEDTLS_AES_SETKEY_DEC_ALT */
00150 #if defined(MBEDTLS_AES_ENCRYPT_ALT)
00151     "MBEDTLS_AES_ENCRYPT_ALT",
00152 #endif /* MBEDTLS_AES_ENCRYPT_ALT */
00153 #if defined(MBEDTLS_AES_DECRYPT_ALT)
00154     "MBEDTLS_AES_DECRYPT_ALT",
00155 #endif /* MBEDTLS_AES_DECRYPT_ALT */
00156 #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
00157     "MBEDTLS_ENTROPY_HARDWARE_ALT",
00158 #endif /* MBEDTLS_ENTROPY_HARDWARE_ALT */
00159 #if defined(MBEDTLS_AES_ROM_TABLES)
00160     "MBEDTLS_AES_ROM_TABLES",
00161 #endif /* MBEDTLS_AES_ROM_TABLES */
00162 #if defined(MBEDTLS_CAMELLIA_SMALL_MEMORY)
00163     "MBEDTLS_CAMELLIA_SMALL_MEMORY",
00164 #endif /* MBEDTLS_CAMELLIA_SMALL_MEMORY */
00165 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00166     "MBEDTLS_CIPHER_MODE_CBC",
00167 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00168 #if defined(MBEDTLS_CIPHER_MODE_CFB)
00169     "MBEDTLS_CIPHER_MODE_CFB",
00170 #endif /* MBEDTLS_CIPHER_MODE_CFB */
00171 #if defined(MBEDTLS_CIPHER_MODE_CTR)
00172     "MBEDTLS_CIPHER_MODE_CTR",
00173 #endif /* MBEDTLS_CIPHER_MODE_CTR */
00174 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
00175     "MBEDTLS_CIPHER_NULL_CIPHER",
00176 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
00177 #if defined(MBEDTLS_CIPHER_PADDING_PKCS7)
00178     "MBEDTLS_CIPHER_PADDING_PKCS7",
00179 #endif /* MBEDTLS_CIPHER_PADDING_PKCS7 */
00180 #if defined(MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS)
00181     "MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS",
00182 #endif /* MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS */
00183 #if defined(MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN)
00184     "MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN",
00185 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN */
00186 #if defined(MBEDTLS_CIPHER_PADDING_ZEROS)
00187     "MBEDTLS_CIPHER_PADDING_ZEROS",
00188 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS */
00189 #if defined(MBEDTLS_ENABLE_WEAK_CIPHERSUITES)
00190     "MBEDTLS_ENABLE_WEAK_CIPHERSUITES",
00191 #endif /* MBEDTLS_ENABLE_WEAK_CIPHERSUITES */
00192 #if defined(MBEDTLS_REMOVE_ARC4_CIPHERSUITES)
00193     "MBEDTLS_REMOVE_ARC4_CIPHERSUITES",
00194 #endif /* MBEDTLS_REMOVE_ARC4_CIPHERSUITES */
00195 #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
00196     "MBEDTLS_ECP_DP_SECP192R1_ENABLED",
00197 #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
00198 #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
00199     "MBEDTLS_ECP_DP_SECP224R1_ENABLED",
00200 #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
00201 #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
00202     "MBEDTLS_ECP_DP_SECP256R1_ENABLED",
00203 #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
00204 #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
00205     "MBEDTLS_ECP_DP_SECP384R1_ENABLED",
00206 #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
00207 #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
00208     "MBEDTLS_ECP_DP_SECP521R1_ENABLED",
00209 #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
00210 #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
00211     "MBEDTLS_ECP_DP_SECP192K1_ENABLED",
00212 #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
00213 #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
00214     "MBEDTLS_ECP_DP_SECP224K1_ENABLED",
00215 #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
00216 #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
00217     "MBEDTLS_ECP_DP_SECP256K1_ENABLED",
00218 #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
00219 #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
00220     "MBEDTLS_ECP_DP_BP256R1_ENABLED",
00221 #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
00222 #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
00223     "MBEDTLS_ECP_DP_BP384R1_ENABLED",
00224 #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
00225 #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
00226     "MBEDTLS_ECP_DP_BP512R1_ENABLED",
00227 #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
00228 #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
00229     "MBEDTLS_ECP_DP_CURVE25519_ENABLED",
00230 #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
00231 #if defined(MBEDTLS_ECP_NIST_OPTIM)
00232     "MBEDTLS_ECP_NIST_OPTIM",
00233 #endif /* MBEDTLS_ECP_NIST_OPTIM */
00234 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
00235     "MBEDTLS_ECDSA_DETERMINISTIC",
00236 #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
00237 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)
00238     "MBEDTLS_KEY_EXCHANGE_PSK_ENABLED",
00239 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */
00240 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)
00241     "MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED",
00242 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */
00243 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
00244     "MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED",
00245 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
00246 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)
00247     "MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED",
00248 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */
00249 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
00250     "MBEDTLS_KEY_EXCHANGE_RSA_ENABLED",
00251 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */
00252 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
00253     "MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED",
00254 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */
00255 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
00256     "MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED",
00257 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
00258 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
00259     "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED",
00260 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
00261 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
00262     "MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED",
00263 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
00264 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED)
00265     "MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED",
00266 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */
00267 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
00268     "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED",
00269 #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */
00270 #if defined(MBEDTLS_PK_PARSE_EC_EXTENDED)
00271     "MBEDTLS_PK_PARSE_EC_EXTENDED",
00272 #endif /* MBEDTLS_PK_PARSE_EC_EXTENDED */
00273 #if defined(MBEDTLS_ERROR_STRERROR_DUMMY)
00274     "MBEDTLS_ERROR_STRERROR_DUMMY",
00275 #endif /* MBEDTLS_ERROR_STRERROR_DUMMY */
00276 #if defined(MBEDTLS_GENPRIME)
00277     "MBEDTLS_GENPRIME",
00278 #endif /* MBEDTLS_GENPRIME */
00279 #if defined(MBEDTLS_FS_IO)
00280     "MBEDTLS_FS_IO",
00281 #endif /* MBEDTLS_FS_IO */
00282 #if defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
00283     "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES",
00284 #endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */
00285 #if defined(MBEDTLS_NO_PLATFORM_ENTROPY)
00286     "MBEDTLS_NO_PLATFORM_ENTROPY",
00287 #endif /* MBEDTLS_NO_PLATFORM_ENTROPY */
00288 #if defined(MBEDTLS_ENTROPY_FORCE_SHA256)
00289     "MBEDTLS_ENTROPY_FORCE_SHA256",
00290 #endif /* MBEDTLS_ENTROPY_FORCE_SHA256 */
00291 #if defined(MBEDTLS_MEMORY_DEBUG)
00292     "MBEDTLS_MEMORY_DEBUG",
00293 #endif /* MBEDTLS_MEMORY_DEBUG */
00294 #if defined(MBEDTLS_MEMORY_BACKTRACE)
00295     "MBEDTLS_MEMORY_BACKTRACE",
00296 #endif /* MBEDTLS_MEMORY_BACKTRACE */
00297 #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)
00298     "MBEDTLS_PK_RSA_ALT_SUPPORT",
00299 #endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */
00300 #if defined(MBEDTLS_PKCS1_V15)
00301     "MBEDTLS_PKCS1_V15",
00302 #endif /* MBEDTLS_PKCS1_V15 */
00303 #if defined(MBEDTLS_PKCS1_V21)
00304     "MBEDTLS_PKCS1_V21",
00305 #endif /* MBEDTLS_PKCS1_V21 */
00306 #if defined(MBEDTLS_RSA_NO_CRT)
00307     "MBEDTLS_RSA_NO_CRT",
00308 #endif /* MBEDTLS_RSA_NO_CRT */
00309 #if defined(MBEDTLS_SELF_TEST)
00310     "MBEDTLS_SELF_TEST",
00311 #endif /* MBEDTLS_SELF_TEST */
00312 #if defined(MBEDTLS_SHA256_SMALLER)
00313     "MBEDTLS_SHA256_SMALLER",
00314 #endif /* MBEDTLS_SHA256_SMALLER */
00315 #if defined(MBEDTLS_SSL_AEAD_RANDOM_IV)
00316     "MBEDTLS_SSL_AEAD_RANDOM_IV",
00317 #endif /* MBEDTLS_SSL_AEAD_RANDOM_IV */
00318 #if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES)
00319     "MBEDTLS_SSL_ALL_ALERT_MESSAGES",
00320 #endif /* MBEDTLS_SSL_ALL_ALERT_MESSAGES */
00321 #if defined(MBEDTLS_SSL_DEBUG_ALL)
00322     "MBEDTLS_SSL_DEBUG_ALL",
00323 #endif /* MBEDTLS_SSL_DEBUG_ALL */
00324 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
00325     "MBEDTLS_SSL_ENCRYPT_THEN_MAC",
00326 #endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */
00327 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET)
00328     "MBEDTLS_SSL_EXTENDED_MASTER_SECRET",
00329 #endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */
00330 #if defined(MBEDTLS_SSL_FALLBACK_SCSV)
00331     "MBEDTLS_SSL_FALLBACK_SCSV",
00332 #endif /* MBEDTLS_SSL_FALLBACK_SCSV */
00333 #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL)
00334     "MBEDTLS_SSL_HW_RECORD_ACCEL",
00335 #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */
00336 #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING)
00337     "MBEDTLS_SSL_CBC_RECORD_SPLITTING",
00338 #endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */
00339 #if defined(MBEDTLS_SSL_RENEGOTIATION)
00340     "MBEDTLS_SSL_RENEGOTIATION",
00341 #endif /* MBEDTLS_SSL_RENEGOTIATION */
00342 #if defined(MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO)
00343     "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO",
00344 #endif /* MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */
00345 #if defined(MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE)
00346     "MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE",
00347 #endif /* MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE */
00348 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
00349     "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH",
00350 #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */
00351 #if defined(MBEDTLS_SSL_PROTO_SSL3)
00352     "MBEDTLS_SSL_PROTO_SSL3",
00353 #endif /* MBEDTLS_SSL_PROTO_SSL3 */
00354 #if defined(MBEDTLS_SSL_PROTO_TLS1)
00355     "MBEDTLS_SSL_PROTO_TLS1",
00356 #endif /* MBEDTLS_SSL_PROTO_TLS1 */
00357 #if defined(MBEDTLS_SSL_PROTO_TLS1_1)
00358     "MBEDTLS_SSL_PROTO_TLS1_1",
00359 #endif /* MBEDTLS_SSL_PROTO_TLS1_1 */
00360 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
00361     "MBEDTLS_SSL_PROTO_TLS1_2",
00362 #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
00363 #if defined(MBEDTLS_SSL_PROTO_DTLS)
00364     "MBEDTLS_SSL_PROTO_DTLS",
00365 #endif /* MBEDTLS_SSL_PROTO_DTLS */
00366 #if defined(MBEDTLS_SSL_ALPN)
00367     "MBEDTLS_SSL_ALPN",
00368 #endif /* MBEDTLS_SSL_ALPN */
00369 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
00370     "MBEDTLS_SSL_DTLS_ANTI_REPLAY",
00371 #endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */
00372 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY)
00373     "MBEDTLS_SSL_DTLS_HELLO_VERIFY",
00374 #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY */
00375 #if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE)
00376     "MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE",
00377 #endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE */
00378 #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT)
00379     "MBEDTLS_SSL_DTLS_BADMAC_LIMIT",
00380 #endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */
00381 #if defined(MBEDTLS_SSL_SESSION_TICKETS)
00382     "MBEDTLS_SSL_SESSION_TICKETS",
00383 #endif /* MBEDTLS_SSL_SESSION_TICKETS */
00384 #if defined(MBEDTLS_SSL_EXPORT_KEYS)
00385     "MBEDTLS_SSL_EXPORT_KEYS",
00386 #endif /* MBEDTLS_SSL_EXPORT_KEYS */
00387 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
00388     "MBEDTLS_SSL_SERVER_NAME_INDICATION",
00389 #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */
00390 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
00391     "MBEDTLS_SSL_TRUNCATED_HMAC",
00392 #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */
00393 #if defined(MBEDTLS_THREADING_ALT)
00394     "MBEDTLS_THREADING_ALT",
00395 #endif /* MBEDTLS_THREADING_ALT */
00396 #if defined(MBEDTLS_THREADING_PTHREAD)
00397     "MBEDTLS_THREADING_PTHREAD",
00398 #endif /* MBEDTLS_THREADING_PTHREAD */
00399 #if defined(MBEDTLS_VERSION_FEATURES)
00400     "MBEDTLS_VERSION_FEATURES",
00401 #endif /* MBEDTLS_VERSION_FEATURES */
00402 #if defined(MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3)
00403     "MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3",
00404 #endif /* MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 */
00405 #if defined(MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION)
00406     "MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION",
00407 #endif /* MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION */
00408 #if defined(MBEDTLS_X509_CHECK_KEY_USAGE)
00409     "MBEDTLS_X509_CHECK_KEY_USAGE",
00410 #endif /* MBEDTLS_X509_CHECK_KEY_USAGE */
00411 #if defined(MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE)
00412     "MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE",
00413 #endif /* MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE */
00414 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT)
00415     "MBEDTLS_X509_RSASSA_PSS_SUPPORT",
00416 #endif /* MBEDTLS_X509_RSASSA_PSS_SUPPORT */
00417 #if defined(MBEDTLS_ZLIB_SUPPORT)
00418     "MBEDTLS_ZLIB_SUPPORT",
00419 #endif /* MBEDTLS_ZLIB_SUPPORT */
00420 #if defined(MBEDTLS_AESNI_C)
00421     "MBEDTLS_AESNI_C",
00422 #endif /* MBEDTLS_AESNI_C */
00423 #if defined(MBEDTLS_AES_C)
00424     "MBEDTLS_AES_C",
00425 #endif /* MBEDTLS_AES_C */
00426 #if defined(MBEDTLS_ARC4_C)
00427     "MBEDTLS_ARC4_C",
00428 #endif /* MBEDTLS_ARC4_C */
00429 #if defined(MBEDTLS_ASN1_PARSE_C)
00430     "MBEDTLS_ASN1_PARSE_C",
00431 #endif /* MBEDTLS_ASN1_PARSE_C */
00432 #if defined(MBEDTLS_ASN1_WRITE_C)
00433     "MBEDTLS_ASN1_WRITE_C",
00434 #endif /* MBEDTLS_ASN1_WRITE_C */
00435 #if defined(MBEDTLS_BASE64_C)
00436     "MBEDTLS_BASE64_C",
00437 #endif /* MBEDTLS_BASE64_C */
00438 #if defined(MBEDTLS_BIGNUM_C)
00439     "MBEDTLS_BIGNUM_C",
00440 #endif /* MBEDTLS_BIGNUM_C */
00441 #if defined(MBEDTLS_BLOWFISH_C)
00442     "MBEDTLS_BLOWFISH_C",
00443 #endif /* MBEDTLS_BLOWFISH_C */
00444 #if defined(MBEDTLS_CAMELLIA_C)
00445     "MBEDTLS_CAMELLIA_C",
00446 #endif /* MBEDTLS_CAMELLIA_C */
00447 #if defined(MBEDTLS_CCM_C)
00448     "MBEDTLS_CCM_C",
00449 #endif /* MBEDTLS_CCM_C */
00450 #if defined(MBEDTLS_CERTS_C)
00451     "MBEDTLS_CERTS_C",
00452 #endif /* MBEDTLS_CERTS_C */
00453 #if defined(MBEDTLS_CIPHER_C)
00454     "MBEDTLS_CIPHER_C",
00455 #endif /* MBEDTLS_CIPHER_C */
00456 #if defined(MBEDTLS_CTR_DRBG_C)
00457     "MBEDTLS_CTR_DRBG_C",
00458 #endif /* MBEDTLS_CTR_DRBG_C */
00459 #if defined(MBEDTLS_DEBUG_C)
00460     "MBEDTLS_DEBUG_C",
00461 #endif /* MBEDTLS_DEBUG_C */
00462 #if defined(MBEDTLS_DES_C)
00463     "MBEDTLS_DES_C",
00464 #endif /* MBEDTLS_DES_C */
00465 #if defined(MBEDTLS_DHM_C)
00466     "MBEDTLS_DHM_C",
00467 #endif /* MBEDTLS_DHM_C */
00468 #if defined(MBEDTLS_ECDH_C)
00469     "MBEDTLS_ECDH_C",
00470 #endif /* MBEDTLS_ECDH_C */
00471 #if defined(MBEDTLS_ECDSA_C)
00472     "MBEDTLS_ECDSA_C",
00473 #endif /* MBEDTLS_ECDSA_C */
00474 #if defined(MBEDTLS_ECJPAKE_C)
00475     "MBEDTLS_ECJPAKE_C",
00476 #endif /* MBEDTLS_ECJPAKE_C */
00477 #if defined(MBEDTLS_ECP_C)
00478     "MBEDTLS_ECP_C",
00479 #endif /* MBEDTLS_ECP_C */
00480 #if defined(MBEDTLS_ENTROPY_C)
00481     "MBEDTLS_ENTROPY_C",
00482 #endif /* MBEDTLS_ENTROPY_C */
00483 #if defined(MBEDTLS_ERROR_C)
00484     "MBEDTLS_ERROR_C",
00485 #endif /* MBEDTLS_ERROR_C */
00486 #if defined(MBEDTLS_GCM_C)
00487     "MBEDTLS_GCM_C",
00488 #endif /* MBEDTLS_GCM_C */
00489 #if defined(MBEDTLS_HAVEGE_C)
00490     "MBEDTLS_HAVEGE_C",
00491 #endif /* MBEDTLS_HAVEGE_C */
00492 #if defined(MBEDTLS_HMAC_DRBG_C)
00493     "MBEDTLS_HMAC_DRBG_C",
00494 #endif /* MBEDTLS_HMAC_DRBG_C */
00495 #if defined(MBEDTLS_MD_C)
00496     "MBEDTLS_MD_C",
00497 #endif /* MBEDTLS_MD_C */
00498 #if defined(MBEDTLS_MD2_C)
00499     "MBEDTLS_MD2_C",
00500 #endif /* MBEDTLS_MD2_C */
00501 #if defined(MBEDTLS_MD4_C)
00502     "MBEDTLS_MD4_C",
00503 #endif /* MBEDTLS_MD4_C */
00504 #if defined(MBEDTLS_MD5_C)
00505     "MBEDTLS_MD5_C",
00506 #endif /* MBEDTLS_MD5_C */
00507 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
00508     "MBEDTLS_MEMORY_BUFFER_ALLOC_C",
00509 #endif /* MBEDTLS_MEMORY_BUFFER_ALLOC_C */
00510 #if defined(MBEDTLS_NET_C)
00511     "MBEDTLS_NET_C",
00512 #endif /* MBEDTLS_NET_C */
00513 #if defined(MBEDTLS_OID_C)
00514     "MBEDTLS_OID_C",
00515 #endif /* MBEDTLS_OID_C */
00516 #if defined(MBEDTLS_PADLOCK_C)
00517     "MBEDTLS_PADLOCK_C",
00518 #endif /* MBEDTLS_PADLOCK_C */
00519 #if defined(MBEDTLS_PEM_PARSE_C)
00520     "MBEDTLS_PEM_PARSE_C",
00521 #endif /* MBEDTLS_PEM_PARSE_C */
00522 #if defined(MBEDTLS_PEM_WRITE_C)
00523     "MBEDTLS_PEM_WRITE_C",
00524 #endif /* MBEDTLS_PEM_WRITE_C */
00525 #if defined(MBEDTLS_PK_C)
00526     "MBEDTLS_PK_C",
00527 #endif /* MBEDTLS_PK_C */
00528 #if defined(MBEDTLS_PK_PARSE_C)
00529     "MBEDTLS_PK_PARSE_C",
00530 #endif /* MBEDTLS_PK_PARSE_C */
00531 #if defined(MBEDTLS_PK_WRITE_C)
00532     "MBEDTLS_PK_WRITE_C",
00533 #endif /* MBEDTLS_PK_WRITE_C */
00534 #if defined(MBEDTLS_PKCS5_C)
00535     "MBEDTLS_PKCS5_C",
00536 #endif /* MBEDTLS_PKCS5_C */
00537 #if defined(MBEDTLS_PKCS11_C)
00538     "MBEDTLS_PKCS11_C",
00539 #endif /* MBEDTLS_PKCS11_C */
00540 #if defined(MBEDTLS_PKCS12_C)
00541     "MBEDTLS_PKCS12_C",
00542 #endif /* MBEDTLS_PKCS12_C */
00543 #if defined(MBEDTLS_PLATFORM_C)
00544     "MBEDTLS_PLATFORM_C",
00545 #endif /* MBEDTLS_PLATFORM_C */
00546 #if defined(MBEDTLS_RIPEMD160_C)
00547     "MBEDTLS_RIPEMD160_C",
00548 #endif /* MBEDTLS_RIPEMD160_C */
00549 #if defined(MBEDTLS_RSA_C)
00550     "MBEDTLS_RSA_C",
00551 #endif /* MBEDTLS_RSA_C */
00552 #if defined(MBEDTLS_SHA1_C)
00553     "MBEDTLS_SHA1_C",
00554 #endif /* MBEDTLS_SHA1_C */
00555 #if defined(MBEDTLS_SHA256_C)
00556     "MBEDTLS_SHA256_C",
00557 #endif /* MBEDTLS_SHA256_C */
00558 #if defined(MBEDTLS_SHA512_C)
00559     "MBEDTLS_SHA512_C",
00560 #endif /* MBEDTLS_SHA512_C */
00561 #if defined(MBEDTLS_SSL_CACHE_C)
00562     "MBEDTLS_SSL_CACHE_C",
00563 #endif /* MBEDTLS_SSL_CACHE_C */
00564 #if defined(MBEDTLS_SSL_COOKIE_C)
00565     "MBEDTLS_SSL_COOKIE_C",
00566 #endif /* MBEDTLS_SSL_COOKIE_C */
00567 #if defined(MBEDTLS_SSL_TICKET_C)
00568     "MBEDTLS_SSL_TICKET_C",
00569 #endif /* MBEDTLS_SSL_TICKET_C */
00570 #if defined(MBEDTLS_SSL_CLI_C)
00571     "MBEDTLS_SSL_CLI_C",
00572 #endif /* MBEDTLS_SSL_CLI_C */
00573 #if defined(MBEDTLS_SSL_SRV_C)
00574     "MBEDTLS_SSL_SRV_C",
00575 #endif /* MBEDTLS_SSL_SRV_C */
00576 #if defined(MBEDTLS_SSL_TLS_C)
00577     "MBEDTLS_SSL_TLS_C",
00578 #endif /* MBEDTLS_SSL_TLS_C */
00579 #if defined(MBEDTLS_THREADING_C)
00580     "MBEDTLS_THREADING_C",
00581 #endif /* MBEDTLS_THREADING_C */
00582 #if defined(MBEDTLS_TIMING_C)
00583     "MBEDTLS_TIMING_C",
00584 #endif /* MBEDTLS_TIMING_C */
00585 #if defined(MBEDTLS_VERSION_C)
00586     "MBEDTLS_VERSION_C",
00587 #endif /* MBEDTLS_VERSION_C */
00588 #if defined(MBEDTLS_X509_USE_C)
00589     "MBEDTLS_X509_USE_C",
00590 #endif /* MBEDTLS_X509_USE_C */
00591 #if defined(MBEDTLS_X509_CRT_PARSE_C)
00592     "MBEDTLS_X509_CRT_PARSE_C",
00593 #endif /* MBEDTLS_X509_CRT_PARSE_C */
00594 #if defined(MBEDTLS_X509_CRL_PARSE_C)
00595     "MBEDTLS_X509_CRL_PARSE_C",
00596 #endif /* MBEDTLS_X509_CRL_PARSE_C */
00597 #if defined(MBEDTLS_X509_CSR_PARSE_C)
00598     "MBEDTLS_X509_CSR_PARSE_C",
00599 #endif /* MBEDTLS_X509_CSR_PARSE_C */
00600 #if defined(MBEDTLS_X509_CREATE_C)
00601     "MBEDTLS_X509_CREATE_C",
00602 #endif /* MBEDTLS_X509_CREATE_C */
00603 #if defined(MBEDTLS_X509_CRT_WRITE_C)
00604     "MBEDTLS_X509_CRT_WRITE_C",
00605 #endif /* MBEDTLS_X509_CRT_WRITE_C */
00606 #if defined(MBEDTLS_X509_CSR_WRITE_C)
00607     "MBEDTLS_X509_CSR_WRITE_C",
00608 #endif /* MBEDTLS_X509_CSR_WRITE_C */
00609 #if defined(MBEDTLS_XTEA_C)
00610     "MBEDTLS_XTEA_C",
00611 #endif /* MBEDTLS_XTEA_C */
00612 #endif /* MBEDTLS_VERSION_FEATURES */
00613     NULL
00614 };
00615 
00616 int mbedtls_version_check_feature( const char *feature )
00617 {
00618     const char **idx = features;
00619 
00620     if( *idx == NULL )
00621         return( -2 );
00622 
00623     if( feature == NULL )
00624         return( -1 );
00625 
00626     while( *idx != NULL )
00627     {
00628         if( !strcmp( *idx, feature ) )
00629             return( 0 );
00630         idx++;
00631     }
00632     return( -1 );
00633 }
00634 
00635 #endif /* MBEDTLS_VERSION_C */