mbed TLS library

Dependents:   HTTPClient-SSL WS_SERVER

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-2014, ARM Limited, All Rights Reserved
00005  *
00006  *  This file is part of mbed TLS (https://tls.mbed.org)
00007  *
00008  *  This program is free software; you can redistribute it and/or modify
00009  *  it under the terms of the GNU General Public License as published by
00010  *  the Free Software Foundation; either version 2 of the License, or
00011  *  (at your option) any later version.
00012  *
00013  *  This program is distributed in the hope that it will be useful,
00014  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  *  GNU General Public License for more details.
00017  *
00018  *  You should have received a copy of the GNU General Public License along
00019  *  with this program; if not, write to the Free Software Foundation, Inc.,
00020  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00021  */
00022 
00023 #if !defined(POLARSSL_CONFIG_FILE)
00024 #include "polarssl/config.h"
00025 #else
00026 #include POLARSSL_CONFIG_FILE
00027 #endif
00028 
00029 #if defined(POLARSSL_VERSION_C)
00030 
00031 #include "polarssl/version.h"
00032 
00033 #include <string.h>
00034 
00035 #if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
00036     !defined(EFI32)
00037 #define strcasecmp _stricmp
00038 #endif
00039 
00040 static const char *features[] = {
00041 #if defined(POLARSSL_VERSION_FEATURES)
00042 #if defined(POLARSSL_HAVE_INT8)
00043     "POLARSSL_HAVE_INT8",
00044 #endif /* POLARSSL_HAVE_INT8 */
00045 #if defined(POLARSSL_HAVE_INT16)
00046     "POLARSSL_HAVE_INT16",
00047 #endif /* POLARSSL_HAVE_INT16 */
00048 #if defined(POLARSSL_HAVE_LONGLONG)
00049     "POLARSSL_HAVE_LONGLONG",
00050 #endif /* POLARSSL_HAVE_LONGLONG */
00051 #if defined(POLARSSL_HAVE_ASM)
00052     "POLARSSL_HAVE_ASM",
00053 #endif /* POLARSSL_HAVE_ASM */
00054 #if defined(POLARSSL_HAVE_SSE2)
00055     "POLARSSL_HAVE_SSE2",
00056 #endif /* POLARSSL_HAVE_SSE2 */
00057 #if defined(POLARSSL_HAVE_TIME)
00058     "POLARSSL_HAVE_TIME",
00059 #endif /* POLARSSL_HAVE_TIME */
00060 #if defined(POLARSSL_HAVE_IPV6)
00061     "POLARSSL_HAVE_IPV6",
00062 #endif /* POLARSSL_HAVE_IPV6 */
00063 #if defined(POLARSSL_PLATFORM_MEMORY)
00064     "POLARSSL_PLATFORM_MEMORY",
00065 #endif /* POLARSSL_PLATFORM_MEMORY */
00066 #if defined(POLARSSL_PLATFORM_NO_STD_FUNCTIONS)
00067     "POLARSSL_PLATFORM_NO_STD_FUNCTIONS",
00068 #endif /* POLARSSL_PLATFORM_NO_STD_FUNCTIONS */
00069 #if defined(POLARSSL_PLATFORM_EXIT_ALT)
00070     "POLARSSL_PLATFORM_EXIT_ALT",
00071 #endif /* POLARSSL_PLATFORM_EXIT_ALT */
00072 #if defined(POLARSSL_PLATFORM_FPRINTF_ALT)
00073     "POLARSSL_PLATFORM_FPRINTF_ALT",
00074 #endif /* POLARSSL_PLATFORM_FPRINTF_ALT */
00075 #if defined(POLARSSL_PLATFORM_PRINTF_ALT)
00076     "POLARSSL_PLATFORM_PRINTF_ALT",
00077 #endif /* POLARSSL_PLATFORM_PRINTF_ALT */
00078 #if defined(POLARSSL_PLATFORM_SNPRINTF_ALT)
00079     "POLARSSL_PLATFORM_SNPRINTF_ALT",
00080 #endif /* POLARSSL_PLATFORM_SNPRINTF_ALT */
00081 #if defined(POLARSSL_DEPRECATED_WARNING)
00082     "POLARSSL_DEPRECATED_WARNING",
00083 #endif /* POLARSSL_DEPRECATED_WARNING */
00084 #if defined(POLARSSL_DEPRECATED_REMOVED)
00085     "POLARSSL_DEPRECATED_REMOVED",
00086 #endif /* POLARSSL_DEPRECATED_REMOVED */
00087 #if defined(POLARSSL_TIMING_ALT)
00088     "POLARSSL_TIMING_ALT",
00089 #endif /* POLARSSL_TIMING_ALT */
00090 #if defined(POLARSSL_AES_ALT)
00091     "POLARSSL_AES_ALT",
00092 #endif /* POLARSSL_AES_ALT */
00093 #if defined(POLARSSL_ARC4_ALT)
00094     "POLARSSL_ARC4_ALT",
00095 #endif /* POLARSSL_ARC4_ALT */
00096 #if defined(POLARSSL_BLOWFISH_ALT)
00097     "POLARSSL_BLOWFISH_ALT",
00098 #endif /* POLARSSL_BLOWFISH_ALT */
00099 #if defined(POLARSSL_CAMELLIA_ALT)
00100     "POLARSSL_CAMELLIA_ALT",
00101 #endif /* POLARSSL_CAMELLIA_ALT */
00102 #if defined(POLARSSL_DES_ALT)
00103     "POLARSSL_DES_ALT",
00104 #endif /* POLARSSL_DES_ALT */
00105 #if defined(POLARSSL_XTEA_ALT)
00106     "POLARSSL_XTEA_ALT",
00107 #endif /* POLARSSL_XTEA_ALT */
00108 #if defined(POLARSSL_MD2_ALT)
00109     "POLARSSL_MD2_ALT",
00110 #endif /* POLARSSL_MD2_ALT */
00111 #if defined(POLARSSL_MD4_ALT)
00112     "POLARSSL_MD4_ALT",
00113 #endif /* POLARSSL_MD4_ALT */
00114 #if defined(POLARSSL_MD5_ALT)
00115     "POLARSSL_MD5_ALT",
00116 #endif /* POLARSSL_MD5_ALT */
00117 #if defined(POLARSSL_RIPEMD160_ALT)
00118     "POLARSSL_RIPEMD160_ALT",
00119 #endif /* POLARSSL_RIPEMD160_ALT */
00120 #if defined(POLARSSL_SHA1_ALT)
00121     "POLARSSL_SHA1_ALT",
00122 #endif /* POLARSSL_SHA1_ALT */
00123 #if defined(POLARSSL_SHA256_ALT)
00124     "POLARSSL_SHA256_ALT",
00125 #endif /* POLARSSL_SHA256_ALT */
00126 #if defined(POLARSSL_SHA512_ALT)
00127     "POLARSSL_SHA512_ALT",
00128 #endif /* POLARSSL_SHA512_ALT */
00129 #if defined(POLARSSL_AES_ROM_TABLES)
00130     "POLARSSL_AES_ROM_TABLES",
00131 #endif /* POLARSSL_AES_ROM_TABLES */
00132 #if defined(POLARSSL_CAMELLIA_SMALL_MEMORY)
00133     "POLARSSL_CAMELLIA_SMALL_MEMORY",
00134 #endif /* POLARSSL_CAMELLIA_SMALL_MEMORY */
00135 #if defined(POLARSSL_CIPHER_MODE_CBC)
00136     "POLARSSL_CIPHER_MODE_CBC",
00137 #endif /* POLARSSL_CIPHER_MODE_CBC */
00138 #if defined(POLARSSL_CIPHER_MODE_CFB)
00139     "POLARSSL_CIPHER_MODE_CFB",
00140 #endif /* POLARSSL_CIPHER_MODE_CFB */
00141 #if defined(POLARSSL_CIPHER_MODE_CTR)
00142     "POLARSSL_CIPHER_MODE_CTR",
00143 #endif /* POLARSSL_CIPHER_MODE_CTR */
00144 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
00145     "POLARSSL_CIPHER_NULL_CIPHER",
00146 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
00147 #if defined(POLARSSL_CIPHER_PADDING_PKCS7)
00148     "POLARSSL_CIPHER_PADDING_PKCS7",
00149 #endif /* POLARSSL_CIPHER_PADDING_PKCS7 */
00150 #if defined(POLARSSL_CIPHER_PADDING_ONE_AND_ZEROS)
00151     "POLARSSL_CIPHER_PADDING_ONE_AND_ZEROS",
00152 #endif /* POLARSSL_CIPHER_PADDING_ONE_AND_ZEROS */
00153 #if defined(POLARSSL_CIPHER_PADDING_ZEROS_AND_LEN)
00154     "POLARSSL_CIPHER_PADDING_ZEROS_AND_LEN",
00155 #endif /* POLARSSL_CIPHER_PADDING_ZEROS_AND_LEN */
00156 #if defined(POLARSSL_CIPHER_PADDING_ZEROS)
00157     "POLARSSL_CIPHER_PADDING_ZEROS",
00158 #endif /* POLARSSL_CIPHER_PADDING_ZEROS */
00159 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
00160     "POLARSSL_ENABLE_WEAK_CIPHERSUITES",
00161 #endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
00162 #if defined(POLARSSL_REMOVE_ARC4_CIPHERSUITES)
00163     "POLARSSL_REMOVE_ARC4_CIPHERSUITES",
00164 #endif /* POLARSSL_REMOVE_ARC4_CIPHERSUITES */
00165 #if defined(POLARSSL_ECP_DP_SECP192R1_ENABLED)
00166     "POLARSSL_ECP_DP_SECP192R1_ENABLED",
00167 #endif /* POLARSSL_ECP_DP_SECP192R1_ENABLED */
00168 #if defined(POLARSSL_ECP_DP_SECP224R1_ENABLED)
00169     "POLARSSL_ECP_DP_SECP224R1_ENABLED",
00170 #endif /* POLARSSL_ECP_DP_SECP224R1_ENABLED */
00171 #if defined(POLARSSL_ECP_DP_SECP256R1_ENABLED)
00172     "POLARSSL_ECP_DP_SECP256R1_ENABLED",
00173 #endif /* POLARSSL_ECP_DP_SECP256R1_ENABLED */
00174 #if defined(POLARSSL_ECP_DP_SECP384R1_ENABLED)
00175     "POLARSSL_ECP_DP_SECP384R1_ENABLED",
00176 #endif /* POLARSSL_ECP_DP_SECP384R1_ENABLED */
00177 #if defined(POLARSSL_ECP_DP_SECP521R1_ENABLED)
00178     "POLARSSL_ECP_DP_SECP521R1_ENABLED",
00179 #endif /* POLARSSL_ECP_DP_SECP521R1_ENABLED */
00180 #if defined(POLARSSL_ECP_DP_SECP192K1_ENABLED)
00181     "POLARSSL_ECP_DP_SECP192K1_ENABLED",
00182 #endif /* POLARSSL_ECP_DP_SECP192K1_ENABLED */
00183 #if defined(POLARSSL_ECP_DP_SECP224K1_ENABLED)
00184     "POLARSSL_ECP_DP_SECP224K1_ENABLED",
00185 #endif /* POLARSSL_ECP_DP_SECP224K1_ENABLED */
00186 #if defined(POLARSSL_ECP_DP_SECP256K1_ENABLED)
00187     "POLARSSL_ECP_DP_SECP256K1_ENABLED",
00188 #endif /* POLARSSL_ECP_DP_SECP256K1_ENABLED */
00189 #if defined(POLARSSL_ECP_DP_BP256R1_ENABLED)
00190     "POLARSSL_ECP_DP_BP256R1_ENABLED",
00191 #endif /* POLARSSL_ECP_DP_BP256R1_ENABLED */
00192 #if defined(POLARSSL_ECP_DP_BP384R1_ENABLED)
00193     "POLARSSL_ECP_DP_BP384R1_ENABLED",
00194 #endif /* POLARSSL_ECP_DP_BP384R1_ENABLED */
00195 #if defined(POLARSSL_ECP_DP_BP512R1_ENABLED)
00196     "POLARSSL_ECP_DP_BP512R1_ENABLED",
00197 #endif /* POLARSSL_ECP_DP_BP512R1_ENABLED */
00198 #if defined(POLARSSL_ECP_DP_M221_ENABLED)
00199     "POLARSSL_ECP_DP_M221_ENABLED",
00200 #endif /* POLARSSL_ECP_DP_M221_ENABLED */
00201 #if defined(POLARSSL_ECP_DP_M255_ENABLED)
00202     "POLARSSL_ECP_DP_M255_ENABLED",
00203 #endif /* POLARSSL_ECP_DP_M255_ENABLED */
00204 #if defined(POLARSSL_ECP_DP_M383_ENABLED)
00205     "POLARSSL_ECP_DP_M383_ENABLED",
00206 #endif /* POLARSSL_ECP_DP_M383_ENABLED */
00207 #if defined(POLARSSL_ECP_DP_M511_ENABLED)
00208     "POLARSSL_ECP_DP_M511_ENABLED",
00209 #endif /* POLARSSL_ECP_DP_M511_ENABLED */
00210 #if defined(POLARSSL_ECP_NIST_OPTIM)
00211     "POLARSSL_ECP_NIST_OPTIM",
00212 #endif /* POLARSSL_ECP_NIST_OPTIM */
00213 #if defined(POLARSSL_ECDSA_DETERMINISTIC)
00214     "POLARSSL_ECDSA_DETERMINISTIC",
00215 #endif /* POLARSSL_ECDSA_DETERMINISTIC */
00216 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
00217     "POLARSSL_KEY_EXCHANGE_PSK_ENABLED",
00218 #endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
00219 #if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
00220     "POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED",
00221 #endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
00222 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
00223     "POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED",
00224 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
00225 #if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
00226     "POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED",
00227 #endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
00228 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
00229     "POLARSSL_KEY_EXCHANGE_RSA_ENABLED",
00230 #endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
00231 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
00232     "POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED",
00233 #endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
00234 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
00235     "POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED",
00236 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
00237 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
00238     "POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED",
00239 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
00240 #if defined(POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
00241     "POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED",
00242 #endif /* POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
00243 #if defined(POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED)
00244     "POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED",
00245 #endif /* POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED */
00246 #if defined(POLARSSL_PK_PARSE_EC_EXTENDED)
00247     "POLARSSL_PK_PARSE_EC_EXTENDED",
00248 #endif /* POLARSSL_PK_PARSE_EC_EXTENDED */
00249 #if defined(POLARSSL_ERROR_STRERROR_BC)
00250     "POLARSSL_ERROR_STRERROR_BC",
00251 #endif /* POLARSSL_ERROR_STRERROR_BC */
00252 #if defined(POLARSSL_ERROR_STRERROR_DUMMY)
00253     "POLARSSL_ERROR_STRERROR_DUMMY",
00254 #endif /* POLARSSL_ERROR_STRERROR_DUMMY */
00255 #if defined(POLARSSL_GENPRIME)
00256     "POLARSSL_GENPRIME",
00257 #endif /* POLARSSL_GENPRIME */
00258 #if defined(POLARSSL_FS_IO)
00259     "POLARSSL_FS_IO",
00260 #endif /* POLARSSL_FS_IO */
00261 #if defined(POLARSSL_NO_DEFAULT_ENTROPY_SOURCES)
00262     "POLARSSL_NO_DEFAULT_ENTROPY_SOURCES",
00263 #endif /* POLARSSL_NO_DEFAULT_ENTROPY_SOURCES */
00264 #if defined(POLARSSL_NO_PLATFORM_ENTROPY)
00265     "POLARSSL_NO_PLATFORM_ENTROPY",
00266 #endif /* POLARSSL_NO_PLATFORM_ENTROPY */
00267 #if defined(POLARSSL_ENTROPY_FORCE_SHA256)
00268     "POLARSSL_ENTROPY_FORCE_SHA256",
00269 #endif /* POLARSSL_ENTROPY_FORCE_SHA256 */
00270 #if defined(POLARSSL_MEMORY_DEBUG)
00271     "POLARSSL_MEMORY_DEBUG",
00272 #endif /* POLARSSL_MEMORY_DEBUG */
00273 #if defined(POLARSSL_MEMORY_BACKTRACE)
00274     "POLARSSL_MEMORY_BACKTRACE",
00275 #endif /* POLARSSL_MEMORY_BACKTRACE */
00276 #if defined(POLARSSL_PKCS1_V15)
00277     "POLARSSL_PKCS1_V15",
00278 #endif /* POLARSSL_PKCS1_V15 */
00279 #if defined(POLARSSL_PKCS1_V21)
00280     "POLARSSL_PKCS1_V21",
00281 #endif /* POLARSSL_PKCS1_V21 */
00282 #if defined(POLARSSL_RSA_NO_CRT)
00283     "POLARSSL_RSA_NO_CRT",
00284 #endif /* POLARSSL_RSA_NO_CRT */
00285 #if defined(POLARSSL_SELF_TEST)
00286     "POLARSSL_SELF_TEST",
00287 #endif /* POLARSSL_SELF_TEST */
00288 #if defined(POLARSSL_SSL_AEAD_RANDOM_IV)
00289     "POLARSSL_SSL_AEAD_RANDOM_IV",
00290 #endif /* POLARSSL_SSL_AEAD_RANDOM_IV */
00291 #if defined(POLARSSL_SSL_ALERT_MESSAGES)
00292     "POLARSSL_SSL_ALERT_MESSAGES",
00293 #endif /* POLARSSL_SSL_ALERT_MESSAGES */
00294 #if defined(POLARSSL_SSL_DEBUG_ALL)
00295     "POLARSSL_SSL_DEBUG_ALL",
00296 #endif /* POLARSSL_SSL_DEBUG_ALL */
00297 #if defined(POLARSSL_SSL_ENCRYPT_THEN_MAC)
00298     "POLARSSL_SSL_ENCRYPT_THEN_MAC",
00299 #endif /* POLARSSL_SSL_ENCRYPT_THEN_MAC */
00300 #if defined(POLARSSL_SSL_EXTENDED_MASTER_SECRET)
00301     "POLARSSL_SSL_EXTENDED_MASTER_SECRET",
00302 #endif /* POLARSSL_SSL_EXTENDED_MASTER_SECRET */
00303 #if defined(POLARSSL_SSL_FALLBACK_SCSV)
00304     "POLARSSL_SSL_FALLBACK_SCSV",
00305 #endif /* POLARSSL_SSL_FALLBACK_SCSV */
00306 #if defined(POLARSSL_SSL_HW_RECORD_ACCEL)
00307     "POLARSSL_SSL_HW_RECORD_ACCEL",
00308 #endif /* POLARSSL_SSL_HW_RECORD_ACCEL */
00309 #if defined(POLARSSL_SSL_CBC_RECORD_SPLITTING)
00310     "POLARSSL_SSL_CBC_RECORD_SPLITTING",
00311 #endif /* POLARSSL_SSL_CBC_RECORD_SPLITTING */
00312 #if defined(POLARSSL_SSL_DISABLE_RENEGOTIATION)
00313     "POLARSSL_SSL_DISABLE_RENEGOTIATION",
00314 #endif /* POLARSSL_SSL_DISABLE_RENEGOTIATION */
00315 #if defined(POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO)
00316     "POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO",
00317 #endif /* POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */
00318 #if defined(POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE)
00319     "POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE",
00320 #endif /* POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE */
00321 #if defined(POLARSSL_SSL_MAX_FRAGMENT_LENGTH)
00322     "POLARSSL_SSL_MAX_FRAGMENT_LENGTH",
00323 #endif /* POLARSSL_SSL_MAX_FRAGMENT_LENGTH */
00324 #if defined(POLARSSL_SSL_PROTO_SSL3)
00325     "POLARSSL_SSL_PROTO_SSL3",
00326 #endif /* POLARSSL_SSL_PROTO_SSL3 */
00327 #if defined(POLARSSL_SSL_PROTO_TLS1)
00328     "POLARSSL_SSL_PROTO_TLS1",
00329 #endif /* POLARSSL_SSL_PROTO_TLS1 */
00330 #if defined(POLARSSL_SSL_PROTO_TLS1_1)
00331     "POLARSSL_SSL_PROTO_TLS1_1",
00332 #endif /* POLARSSL_SSL_PROTO_TLS1_1 */
00333 #if defined(POLARSSL_SSL_PROTO_TLS1_2)
00334     "POLARSSL_SSL_PROTO_TLS1_2",
00335 #endif /* POLARSSL_SSL_PROTO_TLS1_2 */
00336 #if defined(POLARSSL_SSL_ALPN)
00337     "POLARSSL_SSL_ALPN",
00338 #endif /* POLARSSL_SSL_ALPN */
00339 #if defined(POLARSSL_SSL_SESSION_TICKETS)
00340     "POLARSSL_SSL_SESSION_TICKETS",
00341 #endif /* POLARSSL_SSL_SESSION_TICKETS */
00342 #if defined(POLARSSL_SSL_SERVER_NAME_INDICATION)
00343     "POLARSSL_SSL_SERVER_NAME_INDICATION",
00344 #endif /* POLARSSL_SSL_SERVER_NAME_INDICATION */
00345 #if defined(POLARSSL_SSL_TRUNCATED_HMAC)
00346     "POLARSSL_SSL_TRUNCATED_HMAC",
00347 #endif /* POLARSSL_SSL_TRUNCATED_HMAC */
00348 #if defined(POLARSSL_SSL_SET_CURVES)
00349     "POLARSSL_SSL_SET_CURVES",
00350 #endif /* POLARSSL_SSL_SET_CURVES */
00351 #if defined(POLARSSL_THREADING_ALT)
00352     "POLARSSL_THREADING_ALT",
00353 #endif /* POLARSSL_THREADING_ALT */
00354 #if defined(POLARSSL_THREADING_PTHREAD)
00355     "POLARSSL_THREADING_PTHREAD",
00356 #endif /* POLARSSL_THREADING_PTHREAD */
00357 #if defined(POLARSSL_VERSION_FEATURES)
00358     "POLARSSL_VERSION_FEATURES",
00359 #endif /* POLARSSL_VERSION_FEATURES */
00360 #if defined(POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3)
00361     "POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3",
00362 #endif /* POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3 */
00363 #if defined(POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION)
00364     "POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION",
00365 #endif /* POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION */
00366 #if defined(POLARSSL_X509_CHECK_KEY_USAGE)
00367     "POLARSSL_X509_CHECK_KEY_USAGE",
00368 #endif /* POLARSSL_X509_CHECK_KEY_USAGE */
00369 #if defined(POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE)
00370     "POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE",
00371 #endif /* POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE */
00372 #if defined(POLARSSL_X509_RSASSA_PSS_SUPPORT)
00373     "POLARSSL_X509_RSASSA_PSS_SUPPORT",
00374 #endif /* POLARSSL_X509_RSASSA_PSS_SUPPORT */
00375 #if defined(POLARSSL_ZLIB_SUPPORT)
00376     "POLARSSL_ZLIB_SUPPORT",
00377 #endif /* POLARSSL_ZLIB_SUPPORT */
00378 #if defined(POLARSSL_AESNI_C)
00379     "POLARSSL_AESNI_C",
00380 #endif /* POLARSSL_AESNI_C */
00381 #if defined(POLARSSL_AES_C)
00382     "POLARSSL_AES_C",
00383 #endif /* POLARSSL_AES_C */
00384 #if defined(POLARSSL_ARC4_C)
00385     "POLARSSL_ARC4_C",
00386 #endif /* POLARSSL_ARC4_C */
00387 #if defined(POLARSSL_ASN1_PARSE_C)
00388     "POLARSSL_ASN1_PARSE_C",
00389 #endif /* POLARSSL_ASN1_PARSE_C */
00390 #if defined(POLARSSL_ASN1_WRITE_C)
00391     "POLARSSL_ASN1_WRITE_C",
00392 #endif /* POLARSSL_ASN1_WRITE_C */
00393 #if defined(POLARSSL_BASE64_C)
00394     "POLARSSL_BASE64_C",
00395 #endif /* POLARSSL_BASE64_C */
00396 #if defined(POLARSSL_BIGNUM_C)
00397     "POLARSSL_BIGNUM_C",
00398 #endif /* POLARSSL_BIGNUM_C */
00399 #if defined(POLARSSL_BLOWFISH_C)
00400     "POLARSSL_BLOWFISH_C",
00401 #endif /* POLARSSL_BLOWFISH_C */
00402 #if defined(POLARSSL_CAMELLIA_C)
00403     "POLARSSL_CAMELLIA_C",
00404 #endif /* POLARSSL_CAMELLIA_C */
00405 #if defined(POLARSSL_CCM_C)
00406     "POLARSSL_CCM_C",
00407 #endif /* POLARSSL_CCM_C */
00408 #if defined(POLARSSL_CERTS_C)
00409     "POLARSSL_CERTS_C",
00410 #endif /* POLARSSL_CERTS_C */
00411 #if defined(POLARSSL_CIPHER_C)
00412     "POLARSSL_CIPHER_C",
00413 #endif /* POLARSSL_CIPHER_C */
00414 #if defined(POLARSSL_CTR_DRBG_C)
00415     "POLARSSL_CTR_DRBG_C",
00416 #endif /* POLARSSL_CTR_DRBG_C */
00417 #if defined(POLARSSL_DEBUG_C)
00418     "POLARSSL_DEBUG_C",
00419 #endif /* POLARSSL_DEBUG_C */
00420 #if defined(POLARSSL_DES_C)
00421     "POLARSSL_DES_C",
00422 #endif /* POLARSSL_DES_C */
00423 #if defined(POLARSSL_DHM_C)
00424     "POLARSSL_DHM_C",
00425 #endif /* POLARSSL_DHM_C */
00426 #if defined(POLARSSL_ECDH_C)
00427     "POLARSSL_ECDH_C",
00428 #endif /* POLARSSL_ECDH_C */
00429 #if defined(POLARSSL_ECDSA_C)
00430     "POLARSSL_ECDSA_C",
00431 #endif /* POLARSSL_ECDSA_C */
00432 #if defined(POLARSSL_ECP_C)
00433     "POLARSSL_ECP_C",
00434 #endif /* POLARSSL_ECP_C */
00435 #if defined(POLARSSL_ENTROPY_C)
00436     "POLARSSL_ENTROPY_C",
00437 #endif /* POLARSSL_ENTROPY_C */
00438 #if defined(POLARSSL_ERROR_C)
00439     "POLARSSL_ERROR_C",
00440 #endif /* POLARSSL_ERROR_C */
00441 #if defined(POLARSSL_GCM_C)
00442     "POLARSSL_GCM_C",
00443 #endif /* POLARSSL_GCM_C */
00444 #if defined(POLARSSL_HAVEGE_C)
00445     "POLARSSL_HAVEGE_C",
00446 #endif /* POLARSSL_HAVEGE_C */
00447 #if defined(POLARSSL_HMAC_DRBG_C)
00448     "POLARSSL_HMAC_DRBG_C",
00449 #endif /* POLARSSL_HMAC_DRBG_C */
00450 #if defined(POLARSSL_MD_C)
00451     "POLARSSL_MD_C",
00452 #endif /* POLARSSL_MD_C */
00453 #if defined(POLARSSL_MD2_C)
00454     "POLARSSL_MD2_C",
00455 #endif /* POLARSSL_MD2_C */
00456 #if defined(POLARSSL_MD4_C)
00457     "POLARSSL_MD4_C",
00458 #endif /* POLARSSL_MD4_C */
00459 #if defined(POLARSSL_MD5_C)
00460     "POLARSSL_MD5_C",
00461 #endif /* POLARSSL_MD5_C */
00462 #if defined(POLARSSL_MEMORY_C)
00463     "POLARSSL_MEMORY_C",
00464 #endif /* POLARSSL_MEMORY_C */
00465 #if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
00466     "POLARSSL_MEMORY_BUFFER_ALLOC_C",
00467 #endif /* POLARSSL_MEMORY_BUFFER_ALLOC_C */
00468 #if defined(POLARSSL_NET_C)
00469     "POLARSSL_NET_C",
00470 #endif /* POLARSSL_NET_C */
00471 #if defined(POLARSSL_OID_C)
00472     "POLARSSL_OID_C",
00473 #endif /* POLARSSL_OID_C */
00474 #if defined(POLARSSL_PADLOCK_C)
00475     "POLARSSL_PADLOCK_C",
00476 #endif /* POLARSSL_PADLOCK_C */
00477 #if defined(POLARSSL_PBKDF2_C)
00478     "POLARSSL_PBKDF2_C",
00479 #endif /* POLARSSL_PBKDF2_C */
00480 #if defined(POLARSSL_PEM_PARSE_C)
00481     "POLARSSL_PEM_PARSE_C",
00482 #endif /* POLARSSL_PEM_PARSE_C */
00483 #if defined(POLARSSL_PEM_WRITE_C)
00484     "POLARSSL_PEM_WRITE_C",
00485 #endif /* POLARSSL_PEM_WRITE_C */
00486 #if defined(POLARSSL_PK_C)
00487     "POLARSSL_PK_C",
00488 #endif /* POLARSSL_PK_C */
00489 #if defined(POLARSSL_PK_PARSE_C)
00490     "POLARSSL_PK_PARSE_C",
00491 #endif /* POLARSSL_PK_PARSE_C */
00492 #if defined(POLARSSL_PK_WRITE_C)
00493     "POLARSSL_PK_WRITE_C",
00494 #endif /* POLARSSL_PK_WRITE_C */
00495 #if defined(POLARSSL_PKCS5_C)
00496     "POLARSSL_PKCS5_C",
00497 #endif /* POLARSSL_PKCS5_C */
00498 #if defined(POLARSSL_PKCS11_C)
00499     "POLARSSL_PKCS11_C",
00500 #endif /* POLARSSL_PKCS11_C */
00501 #if defined(POLARSSL_PKCS12_C)
00502     "POLARSSL_PKCS12_C",
00503 #endif /* POLARSSL_PKCS12_C */
00504 #if defined(POLARSSL_PLATFORM_C)
00505     "POLARSSL_PLATFORM_C",
00506 #endif /* POLARSSL_PLATFORM_C */
00507 #if defined(POLARSSL_RIPEMD160_C)
00508     "POLARSSL_RIPEMD160_C",
00509 #endif /* POLARSSL_RIPEMD160_C */
00510 #if defined(POLARSSL_RSA_C)
00511     "POLARSSL_RSA_C",
00512 #endif /* POLARSSL_RSA_C */
00513 #if defined(POLARSSL_SHA1_C)
00514     "POLARSSL_SHA1_C",
00515 #endif /* POLARSSL_SHA1_C */
00516 #if defined(POLARSSL_SHA256_C)
00517     "POLARSSL_SHA256_C",
00518 #endif /* POLARSSL_SHA256_C */
00519 #if defined(POLARSSL_SHA512_C)
00520     "POLARSSL_SHA512_C",
00521 #endif /* POLARSSL_SHA512_C */
00522 #if defined(POLARSSL_SSL_CACHE_C)
00523     "POLARSSL_SSL_CACHE_C",
00524 #endif /* POLARSSL_SSL_CACHE_C */
00525 #if defined(POLARSSL_SSL_CLI_C)
00526     "POLARSSL_SSL_CLI_C",
00527 #endif /* POLARSSL_SSL_CLI_C */
00528 #if defined(POLARSSL_SSL_SRV_C)
00529     "POLARSSL_SSL_SRV_C",
00530 #endif /* POLARSSL_SSL_SRV_C */
00531 #if defined(POLARSSL_SSL_TLS_C)
00532     "POLARSSL_SSL_TLS_C",
00533 #endif /* POLARSSL_SSL_TLS_C */
00534 #if defined(POLARSSL_THREADING_C)
00535     "POLARSSL_THREADING_C",
00536 #endif /* POLARSSL_THREADING_C */
00537 #if defined(POLARSSL_TIMING_C)
00538     "POLARSSL_TIMING_C",
00539 #endif /* POLARSSL_TIMING_C */
00540 #if defined(POLARSSL_VERSION_C)
00541     "POLARSSL_VERSION_C",
00542 #endif /* POLARSSL_VERSION_C */
00543 #if defined(POLARSSL_X509_USE_C)
00544     "POLARSSL_X509_USE_C",
00545 #endif /* POLARSSL_X509_USE_C */
00546 #if defined(POLARSSL_X509_CRT_PARSE_C)
00547     "POLARSSL_X509_CRT_PARSE_C",
00548 #endif /* POLARSSL_X509_CRT_PARSE_C */
00549 #if defined(POLARSSL_X509_CRL_PARSE_C)
00550     "POLARSSL_X509_CRL_PARSE_C",
00551 #endif /* POLARSSL_X509_CRL_PARSE_C */
00552 #if defined(POLARSSL_X509_CSR_PARSE_C)
00553     "POLARSSL_X509_CSR_PARSE_C",
00554 #endif /* POLARSSL_X509_CSR_PARSE_C */
00555 #if defined(POLARSSL_X509_CREATE_C)
00556     "POLARSSL_X509_CREATE_C",
00557 #endif /* POLARSSL_X509_CREATE_C */
00558 #if defined(POLARSSL_X509_CRT_WRITE_C)
00559     "POLARSSL_X509_CRT_WRITE_C",
00560 #endif /* POLARSSL_X509_CRT_WRITE_C */
00561 #if defined(POLARSSL_X509_CSR_WRITE_C)
00562     "POLARSSL_X509_CSR_WRITE_C",
00563 #endif /* POLARSSL_X509_CSR_WRITE_C */
00564 #if defined(POLARSSL_XTEA_C)
00565     "POLARSSL_XTEA_C",
00566 #endif /* POLARSSL_XTEA_C */
00567 #endif /* POLARSSL_VERSION_FEATURES */
00568     NULL
00569 };
00570 
00571 int version_check_feature( const char *feature )
00572 {
00573     const char **idx = features;
00574 
00575     if( *idx == NULL )
00576         return( -2 );
00577 
00578     if( feature == NULL )
00579         return( -1 );
00580 
00581     while( *idx != NULL )
00582     {
00583         if( !strcasecmp( *idx, feature ) )
00584             return( 0 );
00585         idx++;
00586     }
00587     return( -1 );
00588 }
00589 
00590 #endif /* POLARSSL_VERSION_C */
00591