00001
00028 #include "polarssl/config.h"
00029
00030 #if defined(POLARSSL_SSL_TLS_C)
00031
00032 #include "polarssl/ssl_ciphersuites.h"
00033 #include "polarssl/ssl.h"
00034
00035 #include <stdlib.h>
00036
00037 #if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
00038 !defined(EFI32)
00039 #define strcasecmp _stricmp
00040 #endif
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 static const int ciphersuite_preference[] =
00055 {
00056
00057 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
00058 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
00059 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
00060 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
00061 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
00062 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
00063 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
00064 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
00065 TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
00066
00067
00068 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
00069 TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00070 TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00071 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
00072 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
00073 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
00074 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
00075
00076
00077 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
00078 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
00079 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
00080 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
00081 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
00082 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
00083 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
00084 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
00085 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
00086
00087
00088 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
00089 TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00090 TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00091 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
00092 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00093 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00094 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
00095
00096
00097 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
00098 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
00099 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
00100 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
00101 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
00102
00103
00104 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
00105 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
00106 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
00107 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
00108 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
00109 TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00110 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00111 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00112
00113 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
00114 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
00115 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
00116 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
00117 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
00118 TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00119 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00120 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00121
00122 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
00123 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
00124 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
00125 TLS_DHE_PSK_WITH_RC4_128_SHA,
00126
00127
00128 TLS_RSA_WITH_AES_256_GCM_SHA384,
00129 TLS_RSA_WITH_AES_256_CBC_SHA256,
00130 TLS_RSA_WITH_AES_256_CBC_SHA,
00131
00132
00133 TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00134 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
00135 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
00136
00137
00138 TLS_RSA_WITH_AES_128_GCM_SHA256,
00139 TLS_RSA_WITH_AES_128_CBC_SHA256,
00140 TLS_RSA_WITH_AES_128_CBC_SHA,
00141
00142
00143 TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00144 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00145 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
00146
00147
00148 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
00149 TLS_RSA_WITH_RC4_128_SHA,
00150 TLS_RSA_WITH_RC4_128_MD5,
00151
00152
00153 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
00154 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
00155 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
00156 TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00157 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00158
00159 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
00160 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
00161 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
00162 TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00163 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00164
00165 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
00166 TLS_RSA_PSK_WITH_RC4_128_SHA,
00167
00168
00169 TLS_PSK_WITH_AES_256_GCM_SHA384,
00170 TLS_PSK_WITH_AES_256_CBC_SHA384,
00171 TLS_PSK_WITH_AES_256_CBC_SHA,
00172 TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00173 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00174
00175 TLS_PSK_WITH_AES_128_GCM_SHA256,
00176 TLS_PSK_WITH_AES_128_CBC_SHA256,
00177 TLS_PSK_WITH_AES_128_CBC_SHA,
00178 TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00179 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00180
00181 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
00182 TLS_PSK_WITH_RC4_128_SHA,
00183
00184
00185 TLS_DHE_RSA_WITH_DES_CBC_SHA,
00186 TLS_RSA_WITH_DES_CBC_SHA,
00187
00188
00189 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
00190 TLS_ECDHE_RSA_WITH_NULL_SHA,
00191 TLS_ECDHE_PSK_WITH_NULL_SHA384,
00192 TLS_ECDHE_PSK_WITH_NULL_SHA256,
00193 TLS_ECDHE_PSK_WITH_NULL_SHA,
00194 TLS_DHE_PSK_WITH_NULL_SHA384,
00195 TLS_DHE_PSK_WITH_NULL_SHA256,
00196 TLS_DHE_PSK_WITH_NULL_SHA,
00197
00198 TLS_RSA_WITH_NULL_SHA256,
00199 TLS_RSA_WITH_NULL_SHA,
00200 TLS_RSA_WITH_NULL_MD5,
00201 TLS_RSA_PSK_WITH_NULL_SHA384,
00202 TLS_RSA_PSK_WITH_NULL_SHA256,
00203 TLS_RSA_PSK_WITH_NULL_SHA,
00204 TLS_PSK_WITH_NULL_SHA384,
00205 TLS_PSK_WITH_NULL_SHA256,
00206 TLS_PSK_WITH_NULL_SHA,
00207
00208 0
00209 };
00210
00211 #define MAX_CIPHERSUITES 128
00212 static int supported_ciphersuites[MAX_CIPHERSUITES];
00213 static int supported_init = 0;
00214
00215 static const ssl_ciphersuite_t ciphersuite_definitions[] =
00216 {
00217 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
00218 #if defined(POLARSSL_AES_C)
00219 #if defined(POLARSSL_SHA1_C)
00220 #if defined(POLARSSL_CIPHER_MODE_CBC)
00221 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
00222 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00223 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00224 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00225 0 },
00226 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
00227 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00228 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00229 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00230 0 },
00231 #endif
00232 #endif
00233 #if defined(POLARSSL_SHA256_C)
00234 #if defined(POLARSSL_CIPHER_MODE_CBC)
00235 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
00236 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00237 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00238 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00239 0 },
00240 #endif
00241 #if defined(POLARSSL_GCM_C)
00242 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
00243 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00244 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00245 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00246 0 },
00247 #endif
00248 #endif
00249 #if defined(POLARSSL_SHA512_C)
00250 #if defined(POLARSSL_CIPHER_MODE_CBC)
00251 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
00252 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00253 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00254 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00255 0 },
00256 #endif
00257 #if defined(POLARSSL_GCM_C)
00258 { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
00259 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00260 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00261 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00262 0 },
00263 #endif
00264 #endif
00265 #endif
00266
00267 #if defined(POLARSSL_CAMELLIA_C)
00268 #if defined(POLARSSL_CIPHER_MODE_CBC)
00269 #if defined(POLARSSL_SHA256_C)
00270 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
00271 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00272 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00273 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00274 0 },
00275 #endif
00276 #if defined(POLARSSL_SHA512_C)
00277 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
00278 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00279 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00280 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00281 0 },
00282 #endif
00283 #endif
00284
00285 #if defined(POLARSSL_GCM_C)
00286 #if defined(POLARSSL_SHA256_C)
00287 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
00288 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00289 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00290 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00291 0 },
00292 #endif
00293 #if defined(POLARSSL_SHA512_C)
00294 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
00295 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00296 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00297 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00298 0 },
00299 #endif
00300 #endif
00301 #endif
00302
00303 #if defined(POLARSSL_DES_C)
00304 #if defined(POLARSSL_CIPHER_MODE_CBC)
00305 #if defined(POLARSSL_SHA1_C)
00306 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
00307 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00308 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00309 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00310 0 },
00311 #endif
00312 #endif
00313 #endif
00314
00315 #if defined(POLARSSL_ARC4_C)
00316 #if defined(POLARSSL_SHA1_C)
00317 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
00318 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00319 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00320 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00321 0 },
00322 #endif
00323 #endif
00324
00325 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
00326 #if defined(POLARSSL_SHA1_C)
00327 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
00328 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00329 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00330 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00331 POLARSSL_CIPHERSUITE_WEAK },
00332 #endif
00333 #endif
00334 #endif
00335
00336 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
00337 #if defined(POLARSSL_AES_C)
00338 #if defined(POLARSSL_SHA1_C)
00339 #if defined(POLARSSL_CIPHER_MODE_CBC)
00340 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
00341 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00342 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00343 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00344 0 },
00345 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
00346 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00347 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00348 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00349 0 },
00350 #endif
00351 #endif
00352 #if defined(POLARSSL_SHA256_C)
00353 #if defined(POLARSSL_CIPHER_MODE_CBC)
00354 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
00355 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00356 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00357 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00358 0 },
00359 #endif
00360 #if defined(POLARSSL_GCM_C)
00361 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
00362 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00363 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00364 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00365 0 },
00366 #endif
00367 #endif
00368 #if defined(POLARSSL_SHA512_C)
00369 #if defined(POLARSSL_CIPHER_MODE_CBC)
00370 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
00371 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00372 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00373 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00374 0 },
00375 #endif
00376 #if defined(POLARSSL_GCM_C)
00377 { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
00378 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00379 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00380 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00381 0 },
00382 #endif
00383 #endif
00384 #endif
00385
00386 #if defined(POLARSSL_CAMELLIA_C)
00387 #if defined(POLARSSL_CIPHER_MODE_CBC)
00388 #if defined(POLARSSL_SHA256_C)
00389 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00390 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00391 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00392 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00393 0 },
00394 #endif
00395 #if defined(POLARSSL_SHA512_C)
00396 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
00397 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00398 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00399 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00400 0 },
00401 #endif
00402 #endif
00403
00404 #if defined(POLARSSL_GCM_C)
00405 #if defined(POLARSSL_SHA256_C)
00406 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00407 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00408 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00409 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00410 0 },
00411 #endif
00412 #if defined(POLARSSL_SHA512_C)
00413 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00414 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00415 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00416 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00417 0 },
00418 #endif
00419 #endif
00420 #endif
00421
00422 #if defined(POLARSSL_DES_C)
00423 #if defined(POLARSSL_CIPHER_MODE_CBC)
00424 #if defined(POLARSSL_SHA1_C)
00425 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
00426 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00427 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00428 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00429 0 },
00430 #endif
00431 #endif
00432 #endif
00433
00434 #if defined(POLARSSL_ARC4_C)
00435 #if defined(POLARSSL_SHA1_C)
00436 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
00437 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00438 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00439 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00440 0 },
00441 #endif
00442 #endif
00443
00444 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
00445 #if defined(POLARSSL_SHA1_C)
00446 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
00447 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00448 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00449 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00450 POLARSSL_CIPHERSUITE_WEAK },
00451 #endif
00452 #endif
00453 #endif
00454
00455 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
00456 #if defined(POLARSSL_AES_C)
00457 #if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
00458 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
00459 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00460 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00461 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00462 0 },
00463 #endif
00464
00465 #if defined(POLARSSL_SHA256_C)
00466 #if defined(POLARSSL_GCM_C)
00467 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
00468 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00469 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00470 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00471 0 },
00472 #endif
00473
00474 #if defined(POLARSSL_CIPHER_MODE_CBC)
00475 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
00476 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00477 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00478 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00479 0 },
00480
00481 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
00482 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00483 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00484 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00485 0 },
00486 #endif
00487 #endif
00488
00489 #if defined(POLARSSL_CIPHER_MODE_CBC)
00490 #if defined(POLARSSL_SHA1_C)
00491 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
00492 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00493 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00494 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00495 0 },
00496
00497 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
00498 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00499 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00500 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00501 0 },
00502 #endif
00503 #endif
00504 #endif
00505
00506 #if defined(POLARSSL_CAMELLIA_C)
00507 #if defined(POLARSSL_CIPHER_MODE_CBC)
00508 #if defined(POLARSSL_SHA256_C)
00509 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00510 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00511 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00512 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00513 0 },
00514
00515 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
00516 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00517 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00518 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00519 0 },
00520 #endif
00521
00522 #if defined(POLARSSL_SHA1_C)
00523 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
00524 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00525 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00526 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00527 0 },
00528
00529 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
00530 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00531 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00532 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00533 0 },
00534 #endif
00535 #endif
00536 #if defined(POLARSSL_GCM_C)
00537 #if defined(POLARSSL_SHA256_C)
00538 { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00539 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00540 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00541 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00542 0 },
00543 #endif
00544
00545 #if defined(POLARSSL_SHA512_C)
00546 { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00547 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00548 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00549 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00550 0 },
00551 #endif
00552 #endif
00553 #endif
00554
00555 #if defined(POLARSSL_DES_C)
00556 #if defined(POLARSSL_CIPHER_MODE_CBC)
00557 #if defined(POLARSSL_SHA1_C)
00558 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
00559 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00560 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00561 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00562 0 },
00563 #endif
00564 #endif
00565 #endif
00566 #endif
00567
00568 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
00569 #if defined(POLARSSL_AES_C)
00570 #if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
00571 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
00572 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
00573 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00574 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00575 0 },
00576 #endif
00577
00578 #if defined(POLARSSL_SHA256_C)
00579 #if defined(POLARSSL_GCM_C)
00580 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
00581 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00582 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00583 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00584 0 },
00585 #endif
00586
00587 #if defined(POLARSSL_CIPHER_MODE_CBC)
00588 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
00589 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00590 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00591 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00592 0 },
00593
00594 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
00595 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00596 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00597 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00598 0 },
00599 #endif
00600 #endif
00601
00602 #if defined(POLARSSL_SHA1_C)
00603 #if defined(POLARSSL_CIPHER_MODE_CBC)
00604 { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
00605 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00606 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00607 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00608 0 },
00609
00610 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
00611 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00612 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00613 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00614 0 },
00615 #endif
00616 #endif
00617 #endif
00618
00619 #if defined(POLARSSL_CAMELLIA_C)
00620 #if defined(POLARSSL_CIPHER_MODE_CBC)
00621 #if defined(POLARSSL_SHA256_C)
00622 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00623 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00624 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00625 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00626 0 },
00627
00628 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
00629 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00630 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00631 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00632 0 },
00633 #endif
00634
00635 #if defined(POLARSSL_SHA1_C)
00636 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
00637 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00638 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00639 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00640 0 },
00641
00642 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
00643 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00644 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00645 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00646 0 },
00647 #endif
00648 #endif
00649
00650 #if defined(POLARSSL_GCM_C)
00651 #if defined(POLARSSL_SHA256_C)
00652 { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00653 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00654 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00655 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00656 0 },
00657 #endif
00658
00659 #if defined(POLARSSL_SHA1_C)
00660 { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00661 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
00662 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00663 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00664 0 },
00665 #endif
00666 #endif
00667 #endif
00668
00669 #if defined(POLARSSL_DES_C)
00670 #if defined(POLARSSL_CIPHER_MODE_CBC)
00671 #if defined(POLARSSL_SHA1_C)
00672 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
00673 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00674 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00675 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00676 0 },
00677 #endif
00678 #endif
00679 #endif
00680
00681 #if defined(POLARSSL_ARC4_C)
00682 #if defined(POLARSSL_MD5_C)
00683 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
00684 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
00685 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00686 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00687 0 },
00688 #endif
00689
00690 #if defined(POLARSSL_SHA1_C)
00691 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
00692 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00693 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00694 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00695 0 },
00696 #endif
00697 #endif
00698 #endif
00699
00700 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
00701 #if defined(POLARSSL_AES_C)
00702 #if defined(POLARSSL_GCM_C)
00703 #if defined(POLARSSL_SHA256_C)
00704 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
00705 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
00706 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00707 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00708 0 },
00709 #endif
00710
00711 #if defined(POLARSSL_SHA512_C)
00712 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
00713 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
00714 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00715 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00716 0 },
00717 #endif
00718 #endif
00719
00720 #if defined(POLARSSL_CIPHER_MODE_CBC)
00721 #if defined(POLARSSL_SHA256_C)
00722 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
00723 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
00724 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00725 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00726 0 },
00727 #endif
00728
00729 #if defined(POLARSSL_SHA512_C)
00730 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
00731 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
00732 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00733 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00734 0 },
00735 #endif
00736
00737 #if defined(POLARSSL_SHA1_C)
00738 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
00739 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
00740 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00741 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00742 0 },
00743
00744 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
00745 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
00746 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00747 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00748 0 },
00749 #endif
00750 #endif
00751 #endif
00752
00753 #if defined(POLARSSL_CAMELLIA_C)
00754 #if defined(POLARSSL_CIPHER_MODE_CBC)
00755 #if defined(POLARSSL_SHA256_C)
00756 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
00757 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
00758 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00759 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00760 0 },
00761 #endif
00762
00763 #if defined(POLARSSL_SHA512_C)
00764 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
00765 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
00766 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00767 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00768 0 },
00769 #endif
00770 #endif
00771
00772 #if defined(POLARSSL_GCM_C)
00773 #if defined(POLARSSL_SHA256_C)
00774 { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
00775 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
00776 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00777 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00778 0 },
00779 #endif
00780
00781 #if defined(POLARSSL_SHA512_C)
00782 { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
00783 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
00784 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00785 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00786 0 },
00787 #endif
00788 #endif
00789 #endif
00790
00791 #if defined(POLARSSL_DES_C)
00792 #if defined(POLARSSL_CIPHER_MODE_CBC)
00793 #if defined(POLARSSL_SHA1_C)
00794 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
00795 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
00796 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00797 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00798 0 },
00799 #endif
00800 #endif
00801 #endif
00802
00803 #if defined(POLARSSL_ARC4_C)
00804 #if defined(POLARSSL_SHA1_C)
00805 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
00806 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
00807 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00808 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00809 0 },
00810 #endif
00811 #endif
00812 #endif
00813
00814 #if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
00815 #if defined(POLARSSL_AES_C)
00816 #if defined(POLARSSL_GCM_C)
00817 #if defined(POLARSSL_SHA256_C)
00818 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
00819 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00820 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00821 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00822 0 },
00823 #endif
00824
00825 #if defined(POLARSSL_SHA512_C)
00826 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
00827 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00828 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00829 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00830 0 },
00831 #endif
00832 #endif
00833
00834 #if defined(POLARSSL_CIPHER_MODE_CBC)
00835 #if defined(POLARSSL_SHA256_C)
00836 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
00837 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00838 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00839 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00840 0 },
00841 #endif
00842
00843 #if defined(POLARSSL_SHA512_C)
00844 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
00845 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00846 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00847 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00848 0 },
00849 #endif
00850
00851 #if defined(POLARSSL_SHA1_C)
00852 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
00853 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00854 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00855 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00856 0 },
00857
00858 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
00859 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00860 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00861 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00862 0 },
00863 #endif
00864 #endif
00865 #endif
00866
00867 #if defined(POLARSSL_CAMELLIA_C)
00868 #if defined(POLARSSL_CIPHER_MODE_CBC)
00869 #if defined(POLARSSL_SHA256_C)
00870 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
00871 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00872 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00873 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00874 0 },
00875 #endif
00876
00877 #if defined(POLARSSL_SHA512_C)
00878 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
00879 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00880 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00881 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00882 0 },
00883 #endif
00884 #endif
00885
00886 #if defined(POLARSSL_GCM_C)
00887 #if defined(POLARSSL_SHA256_C)
00888 { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
00889 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00890 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00891 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00892 0 },
00893 #endif
00894
00895 #if defined(POLARSSL_SHA512_C)
00896 { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
00897 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00898 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00899 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00900 0 },
00901 #endif
00902 #endif
00903 #endif
00904
00905 #if defined(POLARSSL_DES_C)
00906 #if defined(POLARSSL_CIPHER_MODE_CBC)
00907 #if defined(POLARSSL_SHA1_C)
00908 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
00909 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00910 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00911 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00912 0 },
00913 #endif
00914 #endif
00915 #endif
00916
00917 #if defined(POLARSSL_ARC4_C)
00918 #if defined(POLARSSL_SHA1_C)
00919 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
00920 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
00921 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00922 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00923 0 },
00924 #endif
00925 #endif
00926 #endif
00927
00928 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
00929 #if defined(POLARSSL_AES_C)
00930
00931 #if defined(POLARSSL_CIPHER_MODE_CBC)
00932 #if defined(POLARSSL_SHA256_C)
00933 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
00934 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
00935 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00936 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00937 0 },
00938 #endif
00939
00940 #if defined(POLARSSL_SHA512_C)
00941 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
00942 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
00943 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00944 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00945 0 },
00946 #endif
00947
00948 #if defined(POLARSSL_SHA1_C)
00949 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
00950 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
00951 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00952 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00953 0 },
00954
00955 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
00956 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
00957 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00958 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00959 0 },
00960 #endif
00961 #endif
00962 #endif
00963
00964 #if defined(POLARSSL_CAMELLIA_C)
00965 #if defined(POLARSSL_CIPHER_MODE_CBC)
00966 #if defined(POLARSSL_SHA256_C)
00967 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
00968 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
00969 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00970 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00971 0 },
00972 #endif
00973
00974 #if defined(POLARSSL_SHA512_C)
00975 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
00976 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
00977 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00978 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00979 0 },
00980 #endif
00981 #endif
00982 #endif
00983
00984 #if defined(POLARSSL_DES_C)
00985 #if defined(POLARSSL_CIPHER_MODE_CBC)
00986 #if defined(POLARSSL_SHA1_C)
00987 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
00988 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
00989 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00990 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00991 0 },
00992 #endif
00993 #endif
00994 #endif
00995
00996 #if defined(POLARSSL_ARC4_C)
00997 #if defined(POLARSSL_SHA1_C)
00998 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
00999 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01000 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01001 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01002 0 },
01003 #endif
01004 #endif
01005 #endif
01006
01007 #if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
01008 #if defined(POLARSSL_AES_C)
01009 #if defined(POLARSSL_GCM_C)
01010 #if defined(POLARSSL_SHA256_C)
01011 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
01012 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01013 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01014 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01015 0 },
01016 #endif
01017
01018 #if defined(POLARSSL_SHA512_C)
01019 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
01020 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01021 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01022 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01023 0 },
01024 #endif
01025 #endif
01026
01027 #if defined(POLARSSL_CIPHER_MODE_CBC)
01028 #if defined(POLARSSL_SHA256_C)
01029 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
01030 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01031 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01032 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01033 0 },
01034 #endif
01035
01036 #if defined(POLARSSL_SHA512_C)
01037 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
01038 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01039 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01040 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01041 0 },
01042 #endif
01043
01044 #if defined(POLARSSL_SHA1_C)
01045 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
01046 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01047 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01048 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01049 0 },
01050
01051 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
01052 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01053 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01054 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01055 0 },
01056 #endif
01057 #endif
01058 #endif
01059
01060 #if defined(POLARSSL_CAMELLIA_C)
01061 #if defined(POLARSSL_CIPHER_MODE_CBC)
01062 #if defined(POLARSSL_SHA256_C)
01063 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01064 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01065 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01066 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01067 0 },
01068 #endif
01069
01070 #if defined(POLARSSL_SHA512_C)
01071 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01072 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01073 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01074 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01075 0 },
01076 #endif
01077 #endif
01078
01079 #if defined(POLARSSL_GCM_C)
01080 #if defined(POLARSSL_SHA256_C)
01081 { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
01082 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01083 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01084 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01085 0 },
01086 #endif
01087
01088 #if defined(POLARSSL_SHA512_C)
01089 { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
01090 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01091 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01092 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01093 0 },
01094 #endif
01095 #endif
01096 #endif
01097
01098 #if defined(POLARSSL_DES_C)
01099 #if defined(POLARSSL_CIPHER_MODE_CBC)
01100 #if defined(POLARSSL_SHA1_C)
01101 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
01102 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01103 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01104 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01105 0 },
01106 #endif
01107 #endif
01108 #endif
01109
01110 #if defined(POLARSSL_ARC4_C)
01111 #if defined(POLARSSL_SHA1_C)
01112 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
01113 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01114 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01115 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01116 0 },
01117 #endif
01118 #endif
01119 #endif
01120
01121 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
01122 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
01123 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
01124 #if defined(POLARSSL_MD5_C)
01125 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
01126 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
01127 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01128 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01129 POLARSSL_CIPHERSUITE_WEAK },
01130 #endif
01131
01132 #if defined(POLARSSL_SHA1_C)
01133 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
01134 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
01135 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01136 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01137 POLARSSL_CIPHERSUITE_WEAK },
01138 #endif
01139
01140 #if defined(POLARSSL_SHA256_C)
01141 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
01142 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
01143 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01144 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01145 POLARSSL_CIPHERSUITE_WEAK },
01146 #endif
01147 #endif
01148
01149 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
01150 #if defined(POLARSSL_SHA1_C)
01151 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
01152 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
01153 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01154 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01155 POLARSSL_CIPHERSUITE_WEAK },
01156 #endif
01157
01158 #if defined(POLARSSL_SHA256_C)
01159 { TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",
01160 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
01161 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01162 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01163 POLARSSL_CIPHERSUITE_WEAK },
01164 #endif
01165
01166 #if defined(POLARSSL_SHA512_C)
01167 { TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",
01168 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
01169 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01170 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01171 POLARSSL_CIPHERSUITE_WEAK },
01172 #endif
01173 #endif
01174
01175 #if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
01176 #if defined(POLARSSL_SHA1_C)
01177 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
01178 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01179 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01180 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01181 POLARSSL_CIPHERSUITE_WEAK },
01182 #endif
01183
01184 #if defined(POLARSSL_SHA256_C)
01185 { TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",
01186 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01187 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01188 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01189 POLARSSL_CIPHERSUITE_WEAK },
01190 #endif
01191
01192 #if defined(POLARSSL_SHA512_C)
01193 { TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",
01194 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01195 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01196 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01197 POLARSSL_CIPHERSUITE_WEAK },
01198 #endif
01199 #endif
01200
01201 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
01202 #if defined(POLARSSL_SHA1_C)
01203 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
01204 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01205 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01206 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01207 POLARSSL_CIPHERSUITE_WEAK },
01208 #endif
01209
01210 #if defined(POLARSSL_SHA256_C)
01211 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
01212 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01213 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01214 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01215 POLARSSL_CIPHERSUITE_WEAK },
01216 #endif
01217
01218 #if defined(POLARSSL_SHA512_C)
01219 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
01220 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01221 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01222 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01223 POLARSSL_CIPHERSUITE_WEAK },
01224 #endif
01225 #endif
01226
01227 #if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
01228 #if defined(POLARSSL_SHA1_C)
01229 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
01230 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01231 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01232 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01233 POLARSSL_CIPHERSUITE_WEAK },
01234 #endif
01235
01236 #if defined(POLARSSL_SHA256_C)
01237 { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",
01238 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01239 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01240 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01241 POLARSSL_CIPHERSUITE_WEAK },
01242 #endif
01243
01244 #if defined(POLARSSL_SHA512_C)
01245 { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",
01246 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01247 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01248 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01249 POLARSSL_CIPHERSUITE_WEAK },
01250 #endif
01251 #endif
01252 #endif
01253
01254 #if defined(POLARSSL_DES_C)
01255 #if defined(POLARSSL_CIPHER_MODE_CBC)
01256 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
01257 #if defined(POLARSSL_SHA1_C)
01258 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
01259 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
01260 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01261 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01262 POLARSSL_CIPHERSUITE_WEAK },
01263 #endif
01264 #endif
01265
01266 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
01267 #if defined(POLARSSL_SHA1_C)
01268 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
01269 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
01270 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01271 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01272 POLARSSL_CIPHERSUITE_WEAK },
01273 #endif
01274 #endif
01275 #endif
01276 #endif
01277 #endif
01278
01279 { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
01280 };
01281
01282 const int *ssl_list_ciphersuites( void )
01283 {
01284
01285
01286
01287
01288 if( supported_init == 0 )
01289 {
01290 const int *p = ciphersuite_preference;
01291 int *q = supported_ciphersuites;
01292 size_t i;
01293 size_t max = sizeof(supported_ciphersuites) / sizeof(int);
01294
01295 for( i = 0; i < max - 1 && p[i] != 0; i++ )
01296 {
01297 if( ssl_ciphersuite_from_id( p[i] ) != NULL )
01298 *(q++) = p[i];
01299 }
01300 *q = 0;
01301
01302 supported_init = 1;
01303 }
01304
01305 return supported_ciphersuites;
01306 };
01307
01308 const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name )
01309 {
01310 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
01311
01312 if( NULL == ciphersuite_name )
01313 return( NULL );
01314
01315 while( cur->id != 0 )
01316 {
01317 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
01318 return( cur );
01319
01320 cur++;
01321 }
01322
01323 return( NULL );
01324 }
01325
01326 const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
01327 {
01328 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
01329
01330 while( cur->id != 0 )
01331 {
01332 if( cur->id == ciphersuite )
01333 return( cur );
01334
01335 cur++;
01336 }
01337
01338 return( NULL );
01339 }
01340
01341 const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
01342 {
01343 const ssl_ciphersuite_t *cur;
01344
01345 cur = ssl_ciphersuite_from_id( ciphersuite_id );
01346
01347 if( cur == NULL )
01348 return( "unknown" );
01349
01350 return( cur->name );
01351 }
01352
01353 int ssl_get_ciphersuite_id( const char *ciphersuite_name )
01354 {
01355 const ssl_ciphersuite_t *cur;
01356
01357 cur = ssl_ciphersuite_from_string( ciphersuite_name );
01358
01359 if( cur == NULL )
01360 return( 0 );
01361
01362 return( cur->id );
01363 }
01364
01365 #if defined(POLARSSL_PK_C)
01366 pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
01367 {
01368 switch( info->key_exchange )
01369 {
01370 case POLARSSL_KEY_EXCHANGE_RSA:
01371 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
01372 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
01373 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
01374 return( POLARSSL_PK_RSA );
01375
01376 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
01377 return( POLARSSL_PK_ECDSA );
01378
01379 default:
01380 return( POLARSSL_PK_NONE );
01381 }
01382 }
01383 #endif
01384
01385 int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
01386 {
01387 switch( info->key_exchange )
01388 {
01389 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
01390 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
01391 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
01392 return( 1 );
01393
01394 default:
01395 return( 0 );
01396 }
01397 }
01398
01399 int ssl_ciphersuite_uses_psk( const ssl_ciphersuite_t *info )
01400 {
01401 switch( info->key_exchange )
01402 {
01403 case POLARSSL_KEY_EXCHANGE_PSK:
01404 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
01405 case POLARSSL_KEY_EXCHANGE_DHE_PSK:
01406 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
01407 return( 1 );
01408
01409 default:
01410 return( 0 );
01411 }
01412 }
01413
01414 #endif