| OLD | NEW |
| (Empty) |
| 1 /* ssl/s3_lib.c */ | |
| 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | |
| 3 * All rights reserved. | |
| 4 * | |
| 5 * This package is an SSL implementation written | |
| 6 * by Eric Young (eay@cryptsoft.com). | |
| 7 * The implementation was written so as to conform with Netscapes SSL. | |
| 8 * | |
| 9 * This library is free for commercial and non-commercial use as long as | |
| 10 * the following conditions are aheared to. The following conditions | |
| 11 * apply to all code found in this distribution, be it the RC4, RSA, | |
| 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation | |
| 13 * included with this distribution is covered by the same copyright terms | |
| 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). | |
| 15 * | |
| 16 * Copyright remains Eric Young's, and as such any Copyright notices in | |
| 17 * the code are not to be removed. | |
| 18 * If this package is used in a product, Eric Young should be given attribution | |
| 19 * as the author of the parts of the library used. | |
| 20 * This can be in the form of a textual message at program startup or | |
| 21 * in documentation (online or textual) provided with the package. | |
| 22 * | |
| 23 * Redistribution and use in source and binary forms, with or without | |
| 24 * modification, are permitted provided that the following conditions | |
| 25 * are met: | |
| 26 * 1. Redistributions of source code must retain the copyright | |
| 27 * notice, this list of conditions and the following disclaimer. | |
| 28 * 2. Redistributions in binary form must reproduce the above copyright | |
| 29 * notice, this list of conditions and the following disclaimer in the | |
| 30 * documentation and/or other materials provided with the distribution. | |
| 31 * 3. All advertising materials mentioning features or use of this software | |
| 32 * must display the following acknowledgement: | |
| 33 * "This product includes cryptographic software written by | |
| 34 * Eric Young (eay@cryptsoft.com)" | |
| 35 * The word 'cryptographic' can be left out if the rouines from the library | |
| 36 * being used are not cryptographic related :-). | |
| 37 * 4. If you include any Windows specific code (or a derivative thereof) from | |
| 38 * the apps directory (application code) you must include an acknowledgement: | |
| 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | |
| 40 * | |
| 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | |
| 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |
| 45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| 46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| 47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 51 * SUCH DAMAGE. | |
| 52 * | |
| 53 * The licence and distribution terms for any publically available version or | |
| 54 * derivative of this code cannot be changed. i.e. this code cannot simply be | |
| 55 * copied and put under another distribution licence | |
| 56 * [including the GNU Public Licence.] | |
| 57 */ | |
| 58 /* ==================================================================== | |
| 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. | |
| 60 * | |
| 61 * Redistribution and use in source and binary forms, with or without | |
| 62 * modification, are permitted provided that the following conditions | |
| 63 * are met: | |
| 64 * | |
| 65 * 1. Redistributions of source code must retain the above copyright | |
| 66 * notice, this list of conditions and the following disclaimer. | |
| 67 * | |
| 68 * 2. Redistributions in binary form must reproduce the above copyright | |
| 69 * notice, this list of conditions and the following disclaimer in | |
| 70 * the documentation and/or other materials provided with the | |
| 71 * distribution. | |
| 72 * | |
| 73 * 3. All advertising materials mentioning features or use of this | |
| 74 * software must display the following acknowledgment: | |
| 75 * "This product includes software developed by the OpenSSL Project | |
| 76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | |
| 77 * | |
| 78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | |
| 79 * endorse or promote products derived from this software without | |
| 80 * prior written permission. For written permission, please contact | |
| 81 * openssl-core@openssl.org. | |
| 82 * | |
| 83 * 5. Products derived from this software may not be called "OpenSSL" | |
| 84 * nor may "OpenSSL" appear in their names without prior written | |
| 85 * permission of the OpenSSL Project. | |
| 86 * | |
| 87 * 6. Redistributions of any form whatsoever must retain the following | |
| 88 * acknowledgment: | |
| 89 * "This product includes software developed by the OpenSSL Project | |
| 90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | |
| 91 * | |
| 92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | |
| 93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
| 95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | |
| 96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| 97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
| 98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
| 99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |
| 101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| 102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |
| 103 * OF THE POSSIBILITY OF SUCH DAMAGE. | |
| 104 * ==================================================================== | |
| 105 * | |
| 106 * This product includes cryptographic software written by Eric Young | |
| 107 * (eay@cryptsoft.com). This product includes software written by Tim | |
| 108 * Hudson (tjh@cryptsoft.com). | |
| 109 * | |
| 110 */ | |
| 111 /* ==================================================================== | |
| 112 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | |
| 113 * | |
| 114 * Portions of the attached software ("Contribution") are developed by | |
| 115 * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. | |
| 116 * | |
| 117 * The Contribution is licensed pursuant to the OpenSSL open source | |
| 118 * license provided above. | |
| 119 * | |
| 120 * ECC cipher suite support in OpenSSL originally written by | |
| 121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. | |
| 122 * | |
| 123 */ | |
| 124 /* ==================================================================== | |
| 125 * Copyright 2005 Nokia. All rights reserved. | |
| 126 * | |
| 127 * The portions of the attached software ("Contribution") is developed by | |
| 128 * Nokia Corporation and is licensed pursuant to the OpenSSL open source | |
| 129 * license. | |
| 130 * | |
| 131 * The Contribution, originally written by Mika Kousa and Pasi Eronen of | |
| 132 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites | |
| 133 * support (see RFC 4279) to OpenSSL. | |
| 134 * | |
| 135 * No patent licenses or other rights except those expressly stated in | |
| 136 * the OpenSSL open source license shall be deemed granted or received | |
| 137 * expressly, by implication, estoppel, or otherwise. | |
| 138 * | |
| 139 * No assurances are provided by Nokia that the Contribution does not | |
| 140 * infringe the patent or other intellectual property rights of any third | |
| 141 * party or that the license provides you with all the necessary rights | |
| 142 * to make use of the Contribution. | |
| 143 * | |
| 144 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN | |
| 145 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA | |
| 146 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY | |
| 147 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR | |
| 148 * OTHERWISE. | |
| 149 */ | |
| 150 | |
| 151 #include <stdio.h> | |
| 152 #include <openssl/objects.h> | |
| 153 #include "ssl_locl.h" | |
| 154 #include "kssl_lcl.h" | |
| 155 #ifndef OPENSSL_NO_TLSEXT | |
| 156 #ifndef OPENSSL_NO_EC | |
| 157 #include "../crypto/ec/ec_lcl.h" | |
| 158 #endif /* OPENSSL_NO_EC */ | |
| 159 #endif /* OPENSSL_NO_TLSEXT */ | |
| 160 #include <openssl/md5.h> | |
| 161 #ifndef OPENSSL_NO_DH | |
| 162 #include <openssl/dh.h> | |
| 163 #endif | |
| 164 | |
| 165 const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT; | |
| 166 | |
| 167 #define SSL3_NUM_CIPHERS (sizeof(ssl3_ciphers)/sizeof(SSL_CIPHER)) | |
| 168 | |
| 169 /* FIXED_NONCE_LEN is a macro that results in the correct value to set the | |
| 170 * fixed nonce length in SSL_CIPHER.algorithms2. It's the inverse of | |
| 171 * SSL_CIPHER_AEAD_FIXED_NONCE_LEN. */ | |
| 172 #define FIXED_NONCE_LEN(x) ((x/2)<<24) | |
| 173 | |
| 174 /* list of available SSLv3 ciphers (sorted by id) */ | |
| 175 OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={ | |
| 176 | |
| 177 /* The RSA ciphers */ | |
| 178 /* Cipher 01 */ | |
| 179 { | |
| 180 1, | |
| 181 SSL3_TXT_RSA_NULL_MD5, | |
| 182 SSL3_CK_RSA_NULL_MD5, | |
| 183 SSL_kRSA, | |
| 184 SSL_aRSA, | |
| 185 SSL_eNULL, | |
| 186 SSL_MD5, | |
| 187 SSL_SSLV3, | |
| 188 SSL_NOT_EXP|SSL_STRONG_NONE, | |
| 189 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 190 0, | |
| 191 0, | |
| 192 }, | |
| 193 | |
| 194 /* Cipher 02 */ | |
| 195 { | |
| 196 1, | |
| 197 SSL3_TXT_RSA_NULL_SHA, | |
| 198 SSL3_CK_RSA_NULL_SHA, | |
| 199 SSL_kRSA, | |
| 200 SSL_aRSA, | |
| 201 SSL_eNULL, | |
| 202 SSL_SHA1, | |
| 203 SSL_SSLV3, | |
| 204 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, | |
| 205 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 206 0, | |
| 207 0, | |
| 208 }, | |
| 209 | |
| 210 /* Cipher 03 */ | |
| 211 { | |
| 212 1, | |
| 213 SSL3_TXT_RSA_RC4_40_MD5, | |
| 214 SSL3_CK_RSA_RC4_40_MD5, | |
| 215 SSL_kRSA, | |
| 216 SSL_aRSA, | |
| 217 SSL_RC4, | |
| 218 SSL_MD5, | |
| 219 SSL_SSLV3, | |
| 220 SSL_EXPORT|SSL_EXP40, | |
| 221 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 222 40, | |
| 223 128, | |
| 224 }, | |
| 225 | |
| 226 /* Cipher 04 */ | |
| 227 { | |
| 228 1, | |
| 229 SSL3_TXT_RSA_RC4_128_MD5, | |
| 230 SSL3_CK_RSA_RC4_128_MD5, | |
| 231 SSL_kRSA, | |
| 232 SSL_aRSA, | |
| 233 SSL_RC4, | |
| 234 SSL_MD5, | |
| 235 SSL_SSLV3, | |
| 236 SSL_NOT_EXP|SSL_MEDIUM, | |
| 237 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 238 128, | |
| 239 128, | |
| 240 }, | |
| 241 | |
| 242 /* Cipher 05 */ | |
| 243 { | |
| 244 1, | |
| 245 SSL3_TXT_RSA_RC4_128_SHA, | |
| 246 SSL3_CK_RSA_RC4_128_SHA, | |
| 247 SSL_kRSA, | |
| 248 SSL_aRSA, | |
| 249 SSL_RC4, | |
| 250 SSL_SHA1, | |
| 251 SSL_SSLV3, | |
| 252 SSL_NOT_EXP|SSL_MEDIUM, | |
| 253 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 254 128, | |
| 255 128, | |
| 256 }, | |
| 257 | |
| 258 /* Cipher 06 */ | |
| 259 { | |
| 260 1, | |
| 261 SSL3_TXT_RSA_RC2_40_MD5, | |
| 262 SSL3_CK_RSA_RC2_40_MD5, | |
| 263 SSL_kRSA, | |
| 264 SSL_aRSA, | |
| 265 SSL_RC2, | |
| 266 SSL_MD5, | |
| 267 SSL_SSLV3, | |
| 268 SSL_EXPORT|SSL_EXP40, | |
| 269 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 270 40, | |
| 271 128, | |
| 272 }, | |
| 273 | |
| 274 /* Cipher 07 */ | |
| 275 #ifndef OPENSSL_NO_IDEA | |
| 276 { | |
| 277 1, | |
| 278 SSL3_TXT_RSA_IDEA_128_SHA, | |
| 279 SSL3_CK_RSA_IDEA_128_SHA, | |
| 280 SSL_kRSA, | |
| 281 SSL_aRSA, | |
| 282 SSL_IDEA, | |
| 283 SSL_SHA1, | |
| 284 SSL_SSLV3, | |
| 285 SSL_NOT_EXP|SSL_MEDIUM, | |
| 286 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 287 128, | |
| 288 128, | |
| 289 }, | |
| 290 #endif | |
| 291 | |
| 292 /* Cipher 08 */ | |
| 293 { | |
| 294 1, | |
| 295 SSL3_TXT_RSA_DES_40_CBC_SHA, | |
| 296 SSL3_CK_RSA_DES_40_CBC_SHA, | |
| 297 SSL_kRSA, | |
| 298 SSL_aRSA, | |
| 299 SSL_DES, | |
| 300 SSL_SHA1, | |
| 301 SSL_SSLV3, | |
| 302 SSL_EXPORT|SSL_EXP40, | |
| 303 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 304 40, | |
| 305 56, | |
| 306 }, | |
| 307 | |
| 308 /* Cipher 09 */ | |
| 309 { | |
| 310 1, | |
| 311 SSL3_TXT_RSA_DES_64_CBC_SHA, | |
| 312 SSL3_CK_RSA_DES_64_CBC_SHA, | |
| 313 SSL_kRSA, | |
| 314 SSL_aRSA, | |
| 315 SSL_DES, | |
| 316 SSL_SHA1, | |
| 317 SSL_SSLV3, | |
| 318 SSL_NOT_EXP|SSL_LOW, | |
| 319 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 320 56, | |
| 321 56, | |
| 322 }, | |
| 323 | |
| 324 /* Cipher 0A */ | |
| 325 { | |
| 326 1, | |
| 327 SSL3_TXT_RSA_DES_192_CBC3_SHA, | |
| 328 SSL3_CK_RSA_DES_192_CBC3_SHA, | |
| 329 SSL_kRSA, | |
| 330 SSL_aRSA, | |
| 331 SSL_3DES, | |
| 332 SSL_SHA1, | |
| 333 SSL_SSLV3, | |
| 334 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 335 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 336 168, | |
| 337 168, | |
| 338 }, | |
| 339 | |
| 340 /* The DH ciphers */ | |
| 341 /* Cipher 0B */ | |
| 342 { | |
| 343 0, | |
| 344 SSL3_TXT_DH_DSS_DES_40_CBC_SHA, | |
| 345 SSL3_CK_DH_DSS_DES_40_CBC_SHA, | |
| 346 SSL_kDHd, | |
| 347 SSL_aDH, | |
| 348 SSL_DES, | |
| 349 SSL_SHA1, | |
| 350 SSL_SSLV3, | |
| 351 SSL_EXPORT|SSL_EXP40, | |
| 352 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 353 40, | |
| 354 56, | |
| 355 }, | |
| 356 | |
| 357 /* Cipher 0C */ | |
| 358 { | |
| 359 0, /* not implemented (non-ephemeral DH) */ | |
| 360 SSL3_TXT_DH_DSS_DES_64_CBC_SHA, | |
| 361 SSL3_CK_DH_DSS_DES_64_CBC_SHA, | |
| 362 SSL_kDHd, | |
| 363 SSL_aDH, | |
| 364 SSL_DES, | |
| 365 SSL_SHA1, | |
| 366 SSL_SSLV3, | |
| 367 SSL_NOT_EXP|SSL_LOW, | |
| 368 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 369 56, | |
| 370 56, | |
| 371 }, | |
| 372 | |
| 373 /* Cipher 0D */ | |
| 374 { | |
| 375 0, /* not implemented (non-ephemeral DH) */ | |
| 376 SSL3_TXT_DH_DSS_DES_192_CBC3_SHA, | |
| 377 SSL3_CK_DH_DSS_DES_192_CBC3_SHA, | |
| 378 SSL_kDHd, | |
| 379 SSL_aDH, | |
| 380 SSL_3DES, | |
| 381 SSL_SHA1, | |
| 382 SSL_SSLV3, | |
| 383 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 384 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 385 168, | |
| 386 168, | |
| 387 }, | |
| 388 | |
| 389 /* Cipher 0E */ | |
| 390 { | |
| 391 0, /* not implemented (non-ephemeral DH) */ | |
| 392 SSL3_TXT_DH_RSA_DES_40_CBC_SHA, | |
| 393 SSL3_CK_DH_RSA_DES_40_CBC_SHA, | |
| 394 SSL_kDHr, | |
| 395 SSL_aDH, | |
| 396 SSL_DES, | |
| 397 SSL_SHA1, | |
| 398 SSL_SSLV3, | |
| 399 SSL_EXPORT|SSL_EXP40, | |
| 400 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 401 40, | |
| 402 56, | |
| 403 }, | |
| 404 | |
| 405 /* Cipher 0F */ | |
| 406 { | |
| 407 0, /* not implemented (non-ephemeral DH) */ | |
| 408 SSL3_TXT_DH_RSA_DES_64_CBC_SHA, | |
| 409 SSL3_CK_DH_RSA_DES_64_CBC_SHA, | |
| 410 SSL_kDHr, | |
| 411 SSL_aDH, | |
| 412 SSL_DES, | |
| 413 SSL_SHA1, | |
| 414 SSL_SSLV3, | |
| 415 SSL_NOT_EXP|SSL_LOW, | |
| 416 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 417 56, | |
| 418 56, | |
| 419 }, | |
| 420 | |
| 421 /* Cipher 10 */ | |
| 422 { | |
| 423 0, /* not implemented (non-ephemeral DH) */ | |
| 424 SSL3_TXT_DH_RSA_DES_192_CBC3_SHA, | |
| 425 SSL3_CK_DH_RSA_DES_192_CBC3_SHA, | |
| 426 SSL_kDHr, | |
| 427 SSL_aDH, | |
| 428 SSL_3DES, | |
| 429 SSL_SHA1, | |
| 430 SSL_SSLV3, | |
| 431 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 432 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 433 168, | |
| 434 168, | |
| 435 }, | |
| 436 | |
| 437 /* The Ephemeral DH ciphers */ | |
| 438 /* Cipher 11 */ | |
| 439 { | |
| 440 1, | |
| 441 SSL3_TXT_EDH_DSS_DES_40_CBC_SHA, | |
| 442 SSL3_CK_EDH_DSS_DES_40_CBC_SHA, | |
| 443 SSL_kEDH, | |
| 444 SSL_aDSS, | |
| 445 SSL_DES, | |
| 446 SSL_SHA1, | |
| 447 SSL_SSLV3, | |
| 448 SSL_EXPORT|SSL_EXP40, | |
| 449 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 450 40, | |
| 451 56, | |
| 452 }, | |
| 453 | |
| 454 /* Cipher 12 */ | |
| 455 { | |
| 456 1, | |
| 457 SSL3_TXT_EDH_DSS_DES_64_CBC_SHA, | |
| 458 SSL3_CK_EDH_DSS_DES_64_CBC_SHA, | |
| 459 SSL_kEDH, | |
| 460 SSL_aDSS, | |
| 461 SSL_DES, | |
| 462 SSL_SHA1, | |
| 463 SSL_SSLV3, | |
| 464 SSL_NOT_EXP|SSL_LOW, | |
| 465 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 466 56, | |
| 467 56, | |
| 468 }, | |
| 469 | |
| 470 /* Cipher 13 */ | |
| 471 { | |
| 472 1, | |
| 473 SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA, | |
| 474 SSL3_CK_EDH_DSS_DES_192_CBC3_SHA, | |
| 475 SSL_kEDH, | |
| 476 SSL_aDSS, | |
| 477 SSL_3DES, | |
| 478 SSL_SHA1, | |
| 479 SSL_SSLV3, | |
| 480 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 481 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 482 168, | |
| 483 168, | |
| 484 }, | |
| 485 | |
| 486 /* Cipher 14 */ | |
| 487 { | |
| 488 1, | |
| 489 SSL3_TXT_EDH_RSA_DES_40_CBC_SHA, | |
| 490 SSL3_CK_EDH_RSA_DES_40_CBC_SHA, | |
| 491 SSL_kEDH, | |
| 492 SSL_aRSA, | |
| 493 SSL_DES, | |
| 494 SSL_SHA1, | |
| 495 SSL_SSLV3, | |
| 496 SSL_EXPORT|SSL_EXP40, | |
| 497 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 498 40, | |
| 499 56, | |
| 500 }, | |
| 501 | |
| 502 /* Cipher 15 */ | |
| 503 { | |
| 504 1, | |
| 505 SSL3_TXT_EDH_RSA_DES_64_CBC_SHA, | |
| 506 SSL3_CK_EDH_RSA_DES_64_CBC_SHA, | |
| 507 SSL_kEDH, | |
| 508 SSL_aRSA, | |
| 509 SSL_DES, | |
| 510 SSL_SHA1, | |
| 511 SSL_SSLV3, | |
| 512 SSL_NOT_EXP|SSL_LOW, | |
| 513 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 514 56, | |
| 515 56, | |
| 516 }, | |
| 517 | |
| 518 /* Cipher 16 */ | |
| 519 { | |
| 520 1, | |
| 521 SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA, | |
| 522 SSL3_CK_EDH_RSA_DES_192_CBC3_SHA, | |
| 523 SSL_kEDH, | |
| 524 SSL_aRSA, | |
| 525 SSL_3DES, | |
| 526 SSL_SHA1, | |
| 527 SSL_SSLV3, | |
| 528 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 529 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 530 168, | |
| 531 168, | |
| 532 }, | |
| 533 | |
| 534 /* Cipher 17 */ | |
| 535 { | |
| 536 1, | |
| 537 SSL3_TXT_ADH_RC4_40_MD5, | |
| 538 SSL3_CK_ADH_RC4_40_MD5, | |
| 539 SSL_kEDH, | |
| 540 SSL_aNULL, | |
| 541 SSL_RC4, | |
| 542 SSL_MD5, | |
| 543 SSL_SSLV3, | |
| 544 SSL_EXPORT|SSL_EXP40, | |
| 545 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 546 40, | |
| 547 128, | |
| 548 }, | |
| 549 | |
| 550 /* Cipher 18 */ | |
| 551 { | |
| 552 1, | |
| 553 SSL3_TXT_ADH_RC4_128_MD5, | |
| 554 SSL3_CK_ADH_RC4_128_MD5, | |
| 555 SSL_kEDH, | |
| 556 SSL_aNULL, | |
| 557 SSL_RC4, | |
| 558 SSL_MD5, | |
| 559 SSL_SSLV3, | |
| 560 SSL_NOT_EXP|SSL_MEDIUM, | |
| 561 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 562 128, | |
| 563 128, | |
| 564 }, | |
| 565 | |
| 566 /* Cipher 19 */ | |
| 567 { | |
| 568 1, | |
| 569 SSL3_TXT_ADH_DES_40_CBC_SHA, | |
| 570 SSL3_CK_ADH_DES_40_CBC_SHA, | |
| 571 SSL_kEDH, | |
| 572 SSL_aNULL, | |
| 573 SSL_DES, | |
| 574 SSL_SHA1, | |
| 575 SSL_SSLV3, | |
| 576 SSL_EXPORT|SSL_EXP40, | |
| 577 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 578 40, | |
| 579 128, | |
| 580 }, | |
| 581 | |
| 582 /* Cipher 1A */ | |
| 583 { | |
| 584 1, | |
| 585 SSL3_TXT_ADH_DES_64_CBC_SHA, | |
| 586 SSL3_CK_ADH_DES_64_CBC_SHA, | |
| 587 SSL_kEDH, | |
| 588 SSL_aNULL, | |
| 589 SSL_DES, | |
| 590 SSL_SHA1, | |
| 591 SSL_SSLV3, | |
| 592 SSL_NOT_EXP|SSL_LOW, | |
| 593 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 594 56, | |
| 595 56, | |
| 596 }, | |
| 597 | |
| 598 /* Cipher 1B */ | |
| 599 { | |
| 600 1, | |
| 601 SSL3_TXT_ADH_DES_192_CBC_SHA, | |
| 602 SSL3_CK_ADH_DES_192_CBC_SHA, | |
| 603 SSL_kEDH, | |
| 604 SSL_aNULL, | |
| 605 SSL_3DES, | |
| 606 SSL_SHA1, | |
| 607 SSL_SSLV3, | |
| 608 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 609 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 610 168, | |
| 611 168, | |
| 612 }, | |
| 613 | |
| 614 /* Fortezza ciphersuite from SSL 3.0 spec */ | |
| 615 #if 0 | |
| 616 /* Cipher 1C */ | |
| 617 { | |
| 618 0, | |
| 619 SSL3_TXT_FZA_DMS_NULL_SHA, | |
| 620 SSL3_CK_FZA_DMS_NULL_SHA, | |
| 621 SSL_kFZA, | |
| 622 SSL_aFZA, | |
| 623 SSL_eNULL, | |
| 624 SSL_SHA1, | |
| 625 SSL_SSLV3, | |
| 626 SSL_NOT_EXP|SSL_STRONG_NONE, | |
| 627 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 628 0, | |
| 629 0, | |
| 630 }, | |
| 631 | |
| 632 /* Cipher 1D */ | |
| 633 { | |
| 634 0, | |
| 635 SSL3_TXT_FZA_DMS_FZA_SHA, | |
| 636 SSL3_CK_FZA_DMS_FZA_SHA, | |
| 637 SSL_kFZA, | |
| 638 SSL_aFZA, | |
| 639 SSL_eFZA, | |
| 640 SSL_SHA1, | |
| 641 SSL_SSLV3, | |
| 642 SSL_NOT_EXP|SSL_STRONG_NONE, | |
| 643 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 644 0, | |
| 645 0, | |
| 646 }, | |
| 647 | |
| 648 /* Cipher 1E */ | |
| 649 { | |
| 650 0, | |
| 651 SSL3_TXT_FZA_DMS_RC4_SHA, | |
| 652 SSL3_CK_FZA_DMS_RC4_SHA, | |
| 653 SSL_kFZA, | |
| 654 SSL_aFZA, | |
| 655 SSL_RC4, | |
| 656 SSL_SHA1, | |
| 657 SSL_SSLV3, | |
| 658 SSL_NOT_EXP|SSL_MEDIUM, | |
| 659 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 660 128, | |
| 661 128, | |
| 662 }, | |
| 663 #endif | |
| 664 | |
| 665 #ifndef OPENSSL_NO_KRB5 | |
| 666 /* The Kerberos ciphers*/ | |
| 667 /* Cipher 1E */ | |
| 668 { | |
| 669 1, | |
| 670 SSL3_TXT_KRB5_DES_64_CBC_SHA, | |
| 671 SSL3_CK_KRB5_DES_64_CBC_SHA, | |
| 672 SSL_kKRB5, | |
| 673 SSL_aKRB5, | |
| 674 SSL_DES, | |
| 675 SSL_SHA1, | |
| 676 SSL_SSLV3, | |
| 677 SSL_NOT_EXP|SSL_LOW, | |
| 678 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 679 56, | |
| 680 56, | |
| 681 }, | |
| 682 | |
| 683 /* Cipher 1F */ | |
| 684 { | |
| 685 1, | |
| 686 SSL3_TXT_KRB5_DES_192_CBC3_SHA, | |
| 687 SSL3_CK_KRB5_DES_192_CBC3_SHA, | |
| 688 SSL_kKRB5, | |
| 689 SSL_aKRB5, | |
| 690 SSL_3DES, | |
| 691 SSL_SHA1, | |
| 692 SSL_SSLV3, | |
| 693 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 694 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 695 168, | |
| 696 168, | |
| 697 }, | |
| 698 | |
| 699 /* Cipher 20 */ | |
| 700 { | |
| 701 1, | |
| 702 SSL3_TXT_KRB5_RC4_128_SHA, | |
| 703 SSL3_CK_KRB5_RC4_128_SHA, | |
| 704 SSL_kKRB5, | |
| 705 SSL_aKRB5, | |
| 706 SSL_RC4, | |
| 707 SSL_SHA1, | |
| 708 SSL_SSLV3, | |
| 709 SSL_NOT_EXP|SSL_MEDIUM, | |
| 710 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 711 128, | |
| 712 128, | |
| 713 }, | |
| 714 | |
| 715 /* Cipher 21 */ | |
| 716 { | |
| 717 1, | |
| 718 SSL3_TXT_KRB5_IDEA_128_CBC_SHA, | |
| 719 SSL3_CK_KRB5_IDEA_128_CBC_SHA, | |
| 720 SSL_kKRB5, | |
| 721 SSL_aKRB5, | |
| 722 SSL_IDEA, | |
| 723 SSL_SHA1, | |
| 724 SSL_SSLV3, | |
| 725 SSL_NOT_EXP|SSL_MEDIUM, | |
| 726 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 727 128, | |
| 728 128, | |
| 729 }, | |
| 730 | |
| 731 /* Cipher 22 */ | |
| 732 { | |
| 733 1, | |
| 734 SSL3_TXT_KRB5_DES_64_CBC_MD5, | |
| 735 SSL3_CK_KRB5_DES_64_CBC_MD5, | |
| 736 SSL_kKRB5, | |
| 737 SSL_aKRB5, | |
| 738 SSL_DES, | |
| 739 SSL_MD5, | |
| 740 SSL_SSLV3, | |
| 741 SSL_NOT_EXP|SSL_LOW, | |
| 742 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 743 56, | |
| 744 56, | |
| 745 }, | |
| 746 | |
| 747 /* Cipher 23 */ | |
| 748 { | |
| 749 1, | |
| 750 SSL3_TXT_KRB5_DES_192_CBC3_MD5, | |
| 751 SSL3_CK_KRB5_DES_192_CBC3_MD5, | |
| 752 SSL_kKRB5, | |
| 753 SSL_aKRB5, | |
| 754 SSL_3DES, | |
| 755 SSL_MD5, | |
| 756 SSL_SSLV3, | |
| 757 SSL_NOT_EXP|SSL_HIGH, | |
| 758 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 759 168, | |
| 760 168, | |
| 761 }, | |
| 762 | |
| 763 /* Cipher 24 */ | |
| 764 { | |
| 765 1, | |
| 766 SSL3_TXT_KRB5_RC4_128_MD5, | |
| 767 SSL3_CK_KRB5_RC4_128_MD5, | |
| 768 SSL_kKRB5, | |
| 769 SSL_aKRB5, | |
| 770 SSL_RC4, | |
| 771 SSL_MD5, | |
| 772 SSL_SSLV3, | |
| 773 SSL_NOT_EXP|SSL_MEDIUM, | |
| 774 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 775 128, | |
| 776 128, | |
| 777 }, | |
| 778 | |
| 779 /* Cipher 25 */ | |
| 780 { | |
| 781 1, | |
| 782 SSL3_TXT_KRB5_IDEA_128_CBC_MD5, | |
| 783 SSL3_CK_KRB5_IDEA_128_CBC_MD5, | |
| 784 SSL_kKRB5, | |
| 785 SSL_aKRB5, | |
| 786 SSL_IDEA, | |
| 787 SSL_MD5, | |
| 788 SSL_SSLV3, | |
| 789 SSL_NOT_EXP|SSL_MEDIUM, | |
| 790 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 791 128, | |
| 792 128, | |
| 793 }, | |
| 794 | |
| 795 /* Cipher 26 */ | |
| 796 { | |
| 797 1, | |
| 798 SSL3_TXT_KRB5_DES_40_CBC_SHA, | |
| 799 SSL3_CK_KRB5_DES_40_CBC_SHA, | |
| 800 SSL_kKRB5, | |
| 801 SSL_aKRB5, | |
| 802 SSL_DES, | |
| 803 SSL_SHA1, | |
| 804 SSL_SSLV3, | |
| 805 SSL_EXPORT|SSL_EXP40, | |
| 806 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 807 40, | |
| 808 56, | |
| 809 }, | |
| 810 | |
| 811 /* Cipher 27 */ | |
| 812 { | |
| 813 1, | |
| 814 SSL3_TXT_KRB5_RC2_40_CBC_SHA, | |
| 815 SSL3_CK_KRB5_RC2_40_CBC_SHA, | |
| 816 SSL_kKRB5, | |
| 817 SSL_aKRB5, | |
| 818 SSL_RC2, | |
| 819 SSL_SHA1, | |
| 820 SSL_SSLV3, | |
| 821 SSL_EXPORT|SSL_EXP40, | |
| 822 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 823 40, | |
| 824 128, | |
| 825 }, | |
| 826 | |
| 827 /* Cipher 28 */ | |
| 828 { | |
| 829 1, | |
| 830 SSL3_TXT_KRB5_RC4_40_SHA, | |
| 831 SSL3_CK_KRB5_RC4_40_SHA, | |
| 832 SSL_kKRB5, | |
| 833 SSL_aKRB5, | |
| 834 SSL_RC4, | |
| 835 SSL_SHA1, | |
| 836 SSL_SSLV3, | |
| 837 SSL_EXPORT|SSL_EXP40, | |
| 838 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 839 40, | |
| 840 128, | |
| 841 }, | |
| 842 | |
| 843 /* Cipher 29 */ | |
| 844 { | |
| 845 1, | |
| 846 SSL3_TXT_KRB5_DES_40_CBC_MD5, | |
| 847 SSL3_CK_KRB5_DES_40_CBC_MD5, | |
| 848 SSL_kKRB5, | |
| 849 SSL_aKRB5, | |
| 850 SSL_DES, | |
| 851 SSL_MD5, | |
| 852 SSL_SSLV3, | |
| 853 SSL_EXPORT|SSL_EXP40, | |
| 854 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 855 40, | |
| 856 56, | |
| 857 }, | |
| 858 | |
| 859 /* Cipher 2A */ | |
| 860 { | |
| 861 1, | |
| 862 SSL3_TXT_KRB5_RC2_40_CBC_MD5, | |
| 863 SSL3_CK_KRB5_RC2_40_CBC_MD5, | |
| 864 SSL_kKRB5, | |
| 865 SSL_aKRB5, | |
| 866 SSL_RC2, | |
| 867 SSL_MD5, | |
| 868 SSL_SSLV3, | |
| 869 SSL_EXPORT|SSL_EXP40, | |
| 870 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 871 40, | |
| 872 128, | |
| 873 }, | |
| 874 | |
| 875 /* Cipher 2B */ | |
| 876 { | |
| 877 1, | |
| 878 SSL3_TXT_KRB5_RC4_40_MD5, | |
| 879 SSL3_CK_KRB5_RC4_40_MD5, | |
| 880 SSL_kKRB5, | |
| 881 SSL_aKRB5, | |
| 882 SSL_RC4, | |
| 883 SSL_MD5, | |
| 884 SSL_SSLV3, | |
| 885 SSL_EXPORT|SSL_EXP40, | |
| 886 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 887 40, | |
| 888 128, | |
| 889 }, | |
| 890 #endif /* OPENSSL_NO_KRB5 */ | |
| 891 | |
| 892 /* New AES ciphersuites */ | |
| 893 /* Cipher 2F */ | |
| 894 { | |
| 895 1, | |
| 896 TLS1_TXT_RSA_WITH_AES_128_SHA, | |
| 897 TLS1_CK_RSA_WITH_AES_128_SHA, | |
| 898 SSL_kRSA, | |
| 899 SSL_aRSA, | |
| 900 SSL_AES128, | |
| 901 SSL_SHA1, | |
| 902 SSL_TLSV1, | |
| 903 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 904 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 905 128, | |
| 906 128, | |
| 907 }, | |
| 908 /* Cipher 30 */ | |
| 909 { | |
| 910 0, | |
| 911 TLS1_TXT_DH_DSS_WITH_AES_128_SHA, | |
| 912 TLS1_CK_DH_DSS_WITH_AES_128_SHA, | |
| 913 SSL_kDHd, | |
| 914 SSL_aDH, | |
| 915 SSL_AES128, | |
| 916 SSL_SHA1, | |
| 917 SSL_TLSV1, | |
| 918 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 919 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 920 128, | |
| 921 128, | |
| 922 }, | |
| 923 /* Cipher 31 */ | |
| 924 { | |
| 925 0, | |
| 926 TLS1_TXT_DH_RSA_WITH_AES_128_SHA, | |
| 927 TLS1_CK_DH_RSA_WITH_AES_128_SHA, | |
| 928 SSL_kDHr, | |
| 929 SSL_aDH, | |
| 930 SSL_AES128, | |
| 931 SSL_SHA1, | |
| 932 SSL_TLSV1, | |
| 933 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 934 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 935 128, | |
| 936 128, | |
| 937 }, | |
| 938 /* Cipher 32 */ | |
| 939 { | |
| 940 1, | |
| 941 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA, | |
| 942 TLS1_CK_DHE_DSS_WITH_AES_128_SHA, | |
| 943 SSL_kEDH, | |
| 944 SSL_aDSS, | |
| 945 SSL_AES128, | |
| 946 SSL_SHA1, | |
| 947 SSL_TLSV1, | |
| 948 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 949 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 950 128, | |
| 951 128, | |
| 952 }, | |
| 953 /* Cipher 33 */ | |
| 954 { | |
| 955 1, | |
| 956 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA, | |
| 957 TLS1_CK_DHE_RSA_WITH_AES_128_SHA, | |
| 958 SSL_kEDH, | |
| 959 SSL_aRSA, | |
| 960 SSL_AES128, | |
| 961 SSL_SHA1, | |
| 962 SSL_TLSV1, | |
| 963 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 964 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 965 128, | |
| 966 128, | |
| 967 }, | |
| 968 /* Cipher 34 */ | |
| 969 { | |
| 970 1, | |
| 971 TLS1_TXT_ADH_WITH_AES_128_SHA, | |
| 972 TLS1_CK_ADH_WITH_AES_128_SHA, | |
| 973 SSL_kEDH, | |
| 974 SSL_aNULL, | |
| 975 SSL_AES128, | |
| 976 SSL_SHA1, | |
| 977 SSL_TLSV1, | |
| 978 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 979 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 980 128, | |
| 981 128, | |
| 982 }, | |
| 983 | |
| 984 /* Cipher 35 */ | |
| 985 { | |
| 986 1, | |
| 987 TLS1_TXT_RSA_WITH_AES_256_SHA, | |
| 988 TLS1_CK_RSA_WITH_AES_256_SHA, | |
| 989 SSL_kRSA, | |
| 990 SSL_aRSA, | |
| 991 SSL_AES256, | |
| 992 SSL_SHA1, | |
| 993 SSL_TLSV1, | |
| 994 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 995 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 996 256, | |
| 997 256, | |
| 998 }, | |
| 999 /* Cipher 36 */ | |
| 1000 { | |
| 1001 0, | |
| 1002 TLS1_TXT_DH_DSS_WITH_AES_256_SHA, | |
| 1003 TLS1_CK_DH_DSS_WITH_AES_256_SHA, | |
| 1004 SSL_kDHd, | |
| 1005 SSL_aDH, | |
| 1006 SSL_AES256, | |
| 1007 SSL_SHA1, | |
| 1008 SSL_TLSV1, | |
| 1009 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1010 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1011 256, | |
| 1012 256, | |
| 1013 }, | |
| 1014 | |
| 1015 /* Cipher 37 */ | |
| 1016 { | |
| 1017 0, /* not implemented (non-ephemeral DH) */ | |
| 1018 TLS1_TXT_DH_RSA_WITH_AES_256_SHA, | |
| 1019 TLS1_CK_DH_RSA_WITH_AES_256_SHA, | |
| 1020 SSL_kDHr, | |
| 1021 SSL_aDH, | |
| 1022 SSL_AES256, | |
| 1023 SSL_SHA1, | |
| 1024 SSL_TLSV1, | |
| 1025 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1026 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1027 256, | |
| 1028 256, | |
| 1029 }, | |
| 1030 | |
| 1031 /* Cipher 38 */ | |
| 1032 { | |
| 1033 1, | |
| 1034 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA, | |
| 1035 TLS1_CK_DHE_DSS_WITH_AES_256_SHA, | |
| 1036 SSL_kEDH, | |
| 1037 SSL_aDSS, | |
| 1038 SSL_AES256, | |
| 1039 SSL_SHA1, | |
| 1040 SSL_TLSV1, | |
| 1041 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1042 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1043 256, | |
| 1044 256, | |
| 1045 }, | |
| 1046 | |
| 1047 /* Cipher 39 */ | |
| 1048 { | |
| 1049 1, | |
| 1050 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA, | |
| 1051 TLS1_CK_DHE_RSA_WITH_AES_256_SHA, | |
| 1052 SSL_kEDH, | |
| 1053 SSL_aRSA, | |
| 1054 SSL_AES256, | |
| 1055 SSL_SHA1, | |
| 1056 SSL_TLSV1, | |
| 1057 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1058 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1059 256, | |
| 1060 256, | |
| 1061 }, | |
| 1062 | |
| 1063 /* Cipher 3A */ | |
| 1064 { | |
| 1065 1, | |
| 1066 TLS1_TXT_ADH_WITH_AES_256_SHA, | |
| 1067 TLS1_CK_ADH_WITH_AES_256_SHA, | |
| 1068 SSL_kEDH, | |
| 1069 SSL_aNULL, | |
| 1070 SSL_AES256, | |
| 1071 SSL_SHA1, | |
| 1072 SSL_TLSV1, | |
| 1073 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1074 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1075 256, | |
| 1076 256, | |
| 1077 }, | |
| 1078 | |
| 1079 /* TLS v1.2 ciphersuites */ | |
| 1080 /* Cipher 3B */ | |
| 1081 { | |
| 1082 1, | |
| 1083 TLS1_TXT_RSA_WITH_NULL_SHA256, | |
| 1084 TLS1_CK_RSA_WITH_NULL_SHA256, | |
| 1085 SSL_kRSA, | |
| 1086 SSL_aRSA, | |
| 1087 SSL_eNULL, | |
| 1088 SSL_SHA256, | |
| 1089 SSL_TLSV1_2, | |
| 1090 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, | |
| 1091 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1092 0, | |
| 1093 0, | |
| 1094 }, | |
| 1095 | |
| 1096 /* Cipher 3C */ | |
| 1097 { | |
| 1098 1, | |
| 1099 TLS1_TXT_RSA_WITH_AES_128_SHA256, | |
| 1100 TLS1_CK_RSA_WITH_AES_128_SHA256, | |
| 1101 SSL_kRSA, | |
| 1102 SSL_aRSA, | |
| 1103 SSL_AES128, | |
| 1104 SSL_SHA256, | |
| 1105 SSL_TLSV1_2, | |
| 1106 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1107 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1108 128, | |
| 1109 128, | |
| 1110 }, | |
| 1111 | |
| 1112 /* Cipher 3D */ | |
| 1113 { | |
| 1114 1, | |
| 1115 TLS1_TXT_RSA_WITH_AES_256_SHA256, | |
| 1116 TLS1_CK_RSA_WITH_AES_256_SHA256, | |
| 1117 SSL_kRSA, | |
| 1118 SSL_aRSA, | |
| 1119 SSL_AES256, | |
| 1120 SSL_SHA256, | |
| 1121 SSL_TLSV1_2, | |
| 1122 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1123 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1124 256, | |
| 1125 256, | |
| 1126 }, | |
| 1127 | |
| 1128 /* Cipher 3E */ | |
| 1129 { | |
| 1130 0, /* not implemented (non-ephemeral DH) */ | |
| 1131 TLS1_TXT_DH_DSS_WITH_AES_128_SHA256, | |
| 1132 TLS1_CK_DH_DSS_WITH_AES_128_SHA256, | |
| 1133 SSL_kDHd, | |
| 1134 SSL_aDH, | |
| 1135 SSL_AES128, | |
| 1136 SSL_SHA256, | |
| 1137 SSL_TLSV1_2, | |
| 1138 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1139 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1140 128, | |
| 1141 128, | |
| 1142 }, | |
| 1143 | |
| 1144 /* Cipher 3F */ | |
| 1145 { | |
| 1146 0, /* not implemented (non-ephemeral DH) */ | |
| 1147 TLS1_TXT_DH_RSA_WITH_AES_128_SHA256, | |
| 1148 TLS1_CK_DH_RSA_WITH_AES_128_SHA256, | |
| 1149 SSL_kDHr, | |
| 1150 SSL_aDH, | |
| 1151 SSL_AES128, | |
| 1152 SSL_SHA256, | |
| 1153 SSL_TLSV1_2, | |
| 1154 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1155 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1156 128, | |
| 1157 128, | |
| 1158 }, | |
| 1159 | |
| 1160 /* Cipher 40 */ | |
| 1161 { | |
| 1162 1, | |
| 1163 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256, | |
| 1164 TLS1_CK_DHE_DSS_WITH_AES_128_SHA256, | |
| 1165 SSL_kEDH, | |
| 1166 SSL_aDSS, | |
| 1167 SSL_AES128, | |
| 1168 SSL_SHA256, | |
| 1169 SSL_TLSV1_2, | |
| 1170 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1171 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1172 128, | |
| 1173 128, | |
| 1174 }, | |
| 1175 | |
| 1176 #ifndef OPENSSL_NO_CAMELLIA | |
| 1177 /* Camellia ciphersuites from RFC4132 (128-bit portion) */ | |
| 1178 | |
| 1179 /* Cipher 41 */ | |
| 1180 { | |
| 1181 1, | |
| 1182 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA, | |
| 1183 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA, | |
| 1184 SSL_kRSA, | |
| 1185 SSL_aRSA, | |
| 1186 SSL_CAMELLIA128, | |
| 1187 SSL_SHA1, | |
| 1188 SSL_TLSV1, | |
| 1189 SSL_NOT_EXP|SSL_HIGH, | |
| 1190 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1191 128, | |
| 1192 128, | |
| 1193 }, | |
| 1194 | |
| 1195 /* Cipher 42 */ | |
| 1196 { | |
| 1197 0, /* not implemented (non-ephemeral DH) */ | |
| 1198 TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, | |
| 1199 TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, | |
| 1200 SSL_kDHd, | |
| 1201 SSL_aDH, | |
| 1202 SSL_CAMELLIA128, | |
| 1203 SSL_SHA1, | |
| 1204 SSL_TLSV1, | |
| 1205 SSL_NOT_EXP|SSL_HIGH, | |
| 1206 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1207 128, | |
| 1208 128, | |
| 1209 }, | |
| 1210 | |
| 1211 /* Cipher 43 */ | |
| 1212 { | |
| 1213 0, /* not implemented (non-ephemeral DH) */ | |
| 1214 TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, | |
| 1215 TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, | |
| 1216 SSL_kDHr, | |
| 1217 SSL_aDH, | |
| 1218 SSL_CAMELLIA128, | |
| 1219 SSL_SHA1, | |
| 1220 SSL_TLSV1, | |
| 1221 SSL_NOT_EXP|SSL_HIGH, | |
| 1222 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1223 128, | |
| 1224 128, | |
| 1225 }, | |
| 1226 | |
| 1227 /* Cipher 44 */ | |
| 1228 { | |
| 1229 1, | |
| 1230 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, | |
| 1231 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, | |
| 1232 SSL_kEDH, | |
| 1233 SSL_aDSS, | |
| 1234 SSL_CAMELLIA128, | |
| 1235 SSL_SHA1, | |
| 1236 SSL_TLSV1, | |
| 1237 SSL_NOT_EXP|SSL_HIGH, | |
| 1238 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1239 128, | |
| 1240 128, | |
| 1241 }, | |
| 1242 | |
| 1243 /* Cipher 45 */ | |
| 1244 { | |
| 1245 1, | |
| 1246 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, | |
| 1247 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, | |
| 1248 SSL_kEDH, | |
| 1249 SSL_aRSA, | |
| 1250 SSL_CAMELLIA128, | |
| 1251 SSL_SHA1, | |
| 1252 SSL_TLSV1, | |
| 1253 SSL_NOT_EXP|SSL_HIGH, | |
| 1254 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1255 128, | |
| 1256 128, | |
| 1257 }, | |
| 1258 | |
| 1259 /* Cipher 46 */ | |
| 1260 { | |
| 1261 1, | |
| 1262 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA, | |
| 1263 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA, | |
| 1264 SSL_kEDH, | |
| 1265 SSL_aNULL, | |
| 1266 SSL_CAMELLIA128, | |
| 1267 SSL_SHA1, | |
| 1268 SSL_TLSV1, | |
| 1269 SSL_NOT_EXP|SSL_HIGH, | |
| 1270 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1271 128, | |
| 1272 128, | |
| 1273 }, | |
| 1274 #endif /* OPENSSL_NO_CAMELLIA */ | |
| 1275 | |
| 1276 #if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES | |
| 1277 /* New TLS Export CipherSuites from expired ID */ | |
| 1278 #if 0 | |
| 1279 /* Cipher 60 */ | |
| 1280 { | |
| 1281 1, | |
| 1282 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5, | |
| 1283 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5, | |
| 1284 SSL_kRSA, | |
| 1285 SSL_aRSA, | |
| 1286 SSL_RC4, | |
| 1287 SSL_MD5, | |
| 1288 SSL_TLSV1, | |
| 1289 SSL_EXPORT|SSL_EXP56, | |
| 1290 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1291 56, | |
| 1292 128, | |
| 1293 }, | |
| 1294 | |
| 1295 /* Cipher 61 */ | |
| 1296 { | |
| 1297 1, | |
| 1298 TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5, | |
| 1299 TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5, | |
| 1300 SSL_kRSA, | |
| 1301 SSL_aRSA, | |
| 1302 SSL_RC2, | |
| 1303 SSL_MD5, | |
| 1304 SSL_TLSV1, | |
| 1305 SSL_EXPORT|SSL_EXP56, | |
| 1306 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1307 56, | |
| 1308 128, | |
| 1309 }, | |
| 1310 #endif | |
| 1311 | |
| 1312 /* Cipher 62 */ | |
| 1313 { | |
| 1314 1, | |
| 1315 TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA, | |
| 1316 TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA, | |
| 1317 SSL_kRSA, | |
| 1318 SSL_aRSA, | |
| 1319 SSL_DES, | |
| 1320 SSL_SHA1, | |
| 1321 SSL_TLSV1, | |
| 1322 SSL_EXPORT|SSL_EXP56, | |
| 1323 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1324 56, | |
| 1325 56, | |
| 1326 }, | |
| 1327 | |
| 1328 /* Cipher 63 */ | |
| 1329 { | |
| 1330 1, | |
| 1331 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA, | |
| 1332 TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA, | |
| 1333 SSL_kEDH, | |
| 1334 SSL_aDSS, | |
| 1335 SSL_DES, | |
| 1336 SSL_SHA1, | |
| 1337 SSL_TLSV1, | |
| 1338 SSL_EXPORT|SSL_EXP56, | |
| 1339 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1340 56, | |
| 1341 56, | |
| 1342 }, | |
| 1343 | |
| 1344 /* Cipher 64 */ | |
| 1345 { | |
| 1346 1, | |
| 1347 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA, | |
| 1348 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA, | |
| 1349 SSL_kRSA, | |
| 1350 SSL_aRSA, | |
| 1351 SSL_RC4, | |
| 1352 SSL_SHA1, | |
| 1353 SSL_TLSV1, | |
| 1354 SSL_EXPORT|SSL_EXP56, | |
| 1355 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1356 56, | |
| 1357 128, | |
| 1358 }, | |
| 1359 | |
| 1360 /* Cipher 65 */ | |
| 1361 { | |
| 1362 1, | |
| 1363 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA, | |
| 1364 TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA, | |
| 1365 SSL_kEDH, | |
| 1366 SSL_aDSS, | |
| 1367 SSL_RC4, | |
| 1368 SSL_SHA1, | |
| 1369 SSL_TLSV1, | |
| 1370 SSL_EXPORT|SSL_EXP56, | |
| 1371 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1372 56, | |
| 1373 128, | |
| 1374 }, | |
| 1375 | |
| 1376 /* Cipher 66 */ | |
| 1377 { | |
| 1378 1, | |
| 1379 TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA, | |
| 1380 TLS1_CK_DHE_DSS_WITH_RC4_128_SHA, | |
| 1381 SSL_kEDH, | |
| 1382 SSL_aDSS, | |
| 1383 SSL_RC4, | |
| 1384 SSL_SHA1, | |
| 1385 SSL_TLSV1, | |
| 1386 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1387 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1388 128, | |
| 1389 128, | |
| 1390 }, | |
| 1391 #endif | |
| 1392 | |
| 1393 /* TLS v1.2 ciphersuites */ | |
| 1394 /* Cipher 67 */ | |
| 1395 { | |
| 1396 1, | |
| 1397 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256, | |
| 1398 TLS1_CK_DHE_RSA_WITH_AES_128_SHA256, | |
| 1399 SSL_kEDH, | |
| 1400 SSL_aRSA, | |
| 1401 SSL_AES128, | |
| 1402 SSL_SHA256, | |
| 1403 SSL_TLSV1_2, | |
| 1404 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1405 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1406 128, | |
| 1407 128, | |
| 1408 }, | |
| 1409 | |
| 1410 /* Cipher 68 */ | |
| 1411 { | |
| 1412 0, /* not implemented (non-ephemeral DH) */ | |
| 1413 TLS1_TXT_DH_DSS_WITH_AES_256_SHA256, | |
| 1414 TLS1_CK_DH_DSS_WITH_AES_256_SHA256, | |
| 1415 SSL_kDHd, | |
| 1416 SSL_aDH, | |
| 1417 SSL_AES256, | |
| 1418 SSL_SHA256, | |
| 1419 SSL_TLSV1_2, | |
| 1420 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1421 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1422 256, | |
| 1423 256, | |
| 1424 }, | |
| 1425 | |
| 1426 /* Cipher 69 */ | |
| 1427 { | |
| 1428 0, /* not implemented (non-ephemeral DH) */ | |
| 1429 TLS1_TXT_DH_RSA_WITH_AES_256_SHA256, | |
| 1430 TLS1_CK_DH_RSA_WITH_AES_256_SHA256, | |
| 1431 SSL_kDHr, | |
| 1432 SSL_aDH, | |
| 1433 SSL_AES256, | |
| 1434 SSL_SHA256, | |
| 1435 SSL_TLSV1_2, | |
| 1436 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1437 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1438 256, | |
| 1439 256, | |
| 1440 }, | |
| 1441 | |
| 1442 /* Cipher 6A */ | |
| 1443 { | |
| 1444 1, | |
| 1445 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256, | |
| 1446 TLS1_CK_DHE_DSS_WITH_AES_256_SHA256, | |
| 1447 SSL_kEDH, | |
| 1448 SSL_aDSS, | |
| 1449 SSL_AES256, | |
| 1450 SSL_SHA256, | |
| 1451 SSL_TLSV1_2, | |
| 1452 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1453 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1454 256, | |
| 1455 256, | |
| 1456 }, | |
| 1457 | |
| 1458 /* Cipher 6B */ | |
| 1459 { | |
| 1460 1, | |
| 1461 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256, | |
| 1462 TLS1_CK_DHE_RSA_WITH_AES_256_SHA256, | |
| 1463 SSL_kEDH, | |
| 1464 SSL_aRSA, | |
| 1465 SSL_AES256, | |
| 1466 SSL_SHA256, | |
| 1467 SSL_TLSV1_2, | |
| 1468 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1469 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1470 256, | |
| 1471 256, | |
| 1472 }, | |
| 1473 | |
| 1474 /* Cipher 6C */ | |
| 1475 { | |
| 1476 1, | |
| 1477 TLS1_TXT_ADH_WITH_AES_128_SHA256, | |
| 1478 TLS1_CK_ADH_WITH_AES_128_SHA256, | |
| 1479 SSL_kEDH, | |
| 1480 SSL_aNULL, | |
| 1481 SSL_AES128, | |
| 1482 SSL_SHA256, | |
| 1483 SSL_TLSV1_2, | |
| 1484 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1485 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1486 128, | |
| 1487 128, | |
| 1488 }, | |
| 1489 | |
| 1490 /* Cipher 6D */ | |
| 1491 { | |
| 1492 1, | |
| 1493 TLS1_TXT_ADH_WITH_AES_256_SHA256, | |
| 1494 TLS1_CK_ADH_WITH_AES_256_SHA256, | |
| 1495 SSL_kEDH, | |
| 1496 SSL_aNULL, | |
| 1497 SSL_AES256, | |
| 1498 SSL_SHA256, | |
| 1499 SSL_TLSV1_2, | |
| 1500 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1501 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1502 256, | |
| 1503 256, | |
| 1504 }, | |
| 1505 | |
| 1506 /* GOST Ciphersuites */ | |
| 1507 | |
| 1508 { | |
| 1509 1, | |
| 1510 "GOST94-GOST89-GOST89", | |
| 1511 0x3000080, | |
| 1512 SSL_kGOST, | |
| 1513 SSL_aGOST94, | |
| 1514 SSL_eGOST2814789CNT, | |
| 1515 SSL_GOST89MAC, | |
| 1516 SSL_TLSV1, | |
| 1517 SSL_NOT_EXP|SSL_HIGH, | |
| 1518 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC, | |
| 1519 256, | |
| 1520 256 | |
| 1521 }, | |
| 1522 { | |
| 1523 1, | |
| 1524 "GOST2001-GOST89-GOST89", | |
| 1525 0x3000081, | |
| 1526 SSL_kGOST, | |
| 1527 SSL_aGOST01, | |
| 1528 SSL_eGOST2814789CNT, | |
| 1529 SSL_GOST89MAC, | |
| 1530 SSL_TLSV1, | |
| 1531 SSL_NOT_EXP|SSL_HIGH, | |
| 1532 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC, | |
| 1533 256, | |
| 1534 256 | |
| 1535 }, | |
| 1536 { | |
| 1537 1, | |
| 1538 "GOST94-NULL-GOST94", | |
| 1539 0x3000082, | |
| 1540 SSL_kGOST, | |
| 1541 SSL_aGOST94, | |
| 1542 SSL_eNULL, | |
| 1543 SSL_GOST94, | |
| 1544 SSL_TLSV1, | |
| 1545 SSL_NOT_EXP|SSL_STRONG_NONE, | |
| 1546 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94, | |
| 1547 0, | |
| 1548 0 | |
| 1549 }, | |
| 1550 { | |
| 1551 1, | |
| 1552 "GOST2001-NULL-GOST94", | |
| 1553 0x3000083, | |
| 1554 SSL_kGOST, | |
| 1555 SSL_aGOST01, | |
| 1556 SSL_eNULL, | |
| 1557 SSL_GOST94, | |
| 1558 SSL_TLSV1, | |
| 1559 SSL_NOT_EXP|SSL_STRONG_NONE, | |
| 1560 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94, | |
| 1561 0, | |
| 1562 0 | |
| 1563 }, | |
| 1564 | |
| 1565 #ifndef OPENSSL_NO_CAMELLIA | |
| 1566 /* Camellia ciphersuites from RFC4132 (256-bit portion) */ | |
| 1567 | |
| 1568 /* Cipher 84 */ | |
| 1569 { | |
| 1570 1, | |
| 1571 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA, | |
| 1572 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA, | |
| 1573 SSL_kRSA, | |
| 1574 SSL_aRSA, | |
| 1575 SSL_CAMELLIA256, | |
| 1576 SSL_SHA1, | |
| 1577 SSL_TLSV1, | |
| 1578 SSL_NOT_EXP|SSL_HIGH, | |
| 1579 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1580 256, | |
| 1581 256, | |
| 1582 }, | |
| 1583 /* Cipher 85 */ | |
| 1584 { | |
| 1585 0, /* not implemented (non-ephemeral DH) */ | |
| 1586 TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, | |
| 1587 TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, | |
| 1588 SSL_kDHd, | |
| 1589 SSL_aDH, | |
| 1590 SSL_CAMELLIA256, | |
| 1591 SSL_SHA1, | |
| 1592 SSL_TLSV1, | |
| 1593 SSL_NOT_EXP|SSL_HIGH, | |
| 1594 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1595 256, | |
| 1596 256, | |
| 1597 }, | |
| 1598 | |
| 1599 /* Cipher 86 */ | |
| 1600 { | |
| 1601 0, /* not implemented (non-ephemeral DH) */ | |
| 1602 TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, | |
| 1603 TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, | |
| 1604 SSL_kDHr, | |
| 1605 SSL_aDH, | |
| 1606 SSL_CAMELLIA256, | |
| 1607 SSL_SHA1, | |
| 1608 SSL_TLSV1, | |
| 1609 SSL_NOT_EXP|SSL_HIGH, | |
| 1610 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1611 256, | |
| 1612 256, | |
| 1613 }, | |
| 1614 | |
| 1615 /* Cipher 87 */ | |
| 1616 { | |
| 1617 1, | |
| 1618 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, | |
| 1619 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, | |
| 1620 SSL_kEDH, | |
| 1621 SSL_aDSS, | |
| 1622 SSL_CAMELLIA256, | |
| 1623 SSL_SHA1, | |
| 1624 SSL_TLSV1, | |
| 1625 SSL_NOT_EXP|SSL_HIGH, | |
| 1626 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1627 256, | |
| 1628 256, | |
| 1629 }, | |
| 1630 | |
| 1631 /* Cipher 88 */ | |
| 1632 { | |
| 1633 1, | |
| 1634 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, | |
| 1635 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, | |
| 1636 SSL_kEDH, | |
| 1637 SSL_aRSA, | |
| 1638 SSL_CAMELLIA256, | |
| 1639 SSL_SHA1, | |
| 1640 SSL_TLSV1, | |
| 1641 SSL_NOT_EXP|SSL_HIGH, | |
| 1642 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1643 256, | |
| 1644 256, | |
| 1645 }, | |
| 1646 | |
| 1647 /* Cipher 89 */ | |
| 1648 { | |
| 1649 1, | |
| 1650 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA, | |
| 1651 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA, | |
| 1652 SSL_kEDH, | |
| 1653 SSL_aNULL, | |
| 1654 SSL_CAMELLIA256, | |
| 1655 SSL_SHA1, | |
| 1656 SSL_TLSV1, | |
| 1657 SSL_NOT_EXP|SSL_HIGH, | |
| 1658 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1659 256, | |
| 1660 256, | |
| 1661 }, | |
| 1662 #endif /* OPENSSL_NO_CAMELLIA */ | |
| 1663 | |
| 1664 #ifndef OPENSSL_NO_PSK | |
| 1665 /* Cipher 8A */ | |
| 1666 { | |
| 1667 1, | |
| 1668 TLS1_TXT_PSK_WITH_RC4_128_SHA, | |
| 1669 TLS1_CK_PSK_WITH_RC4_128_SHA, | |
| 1670 SSL_kPSK, | |
| 1671 SSL_aPSK, | |
| 1672 SSL_RC4, | |
| 1673 SSL_SHA1, | |
| 1674 SSL_TLSV1, | |
| 1675 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1676 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1677 128, | |
| 1678 128, | |
| 1679 }, | |
| 1680 | |
| 1681 /* Cipher 8B */ | |
| 1682 { | |
| 1683 1, | |
| 1684 TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA, | |
| 1685 TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA, | |
| 1686 SSL_kPSK, | |
| 1687 SSL_aPSK, | |
| 1688 SSL_3DES, | |
| 1689 SSL_SHA1, | |
| 1690 SSL_TLSV1, | |
| 1691 SSL_NOT_EXP|SSL_HIGH, | |
| 1692 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1693 168, | |
| 1694 168, | |
| 1695 }, | |
| 1696 | |
| 1697 /* Cipher 8C */ | |
| 1698 { | |
| 1699 1, | |
| 1700 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA, | |
| 1701 TLS1_CK_PSK_WITH_AES_128_CBC_SHA, | |
| 1702 SSL_kPSK, | |
| 1703 SSL_aPSK, | |
| 1704 SSL_AES128, | |
| 1705 SSL_SHA1, | |
| 1706 SSL_TLSV1, | |
| 1707 SSL_NOT_EXP|SSL_HIGH, | |
| 1708 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1709 128, | |
| 1710 128, | |
| 1711 }, | |
| 1712 | |
| 1713 /* Cipher 8D */ | |
| 1714 { | |
| 1715 1, | |
| 1716 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA, | |
| 1717 TLS1_CK_PSK_WITH_AES_256_CBC_SHA, | |
| 1718 SSL_kPSK, | |
| 1719 SSL_aPSK, | |
| 1720 SSL_AES256, | |
| 1721 SSL_SHA1, | |
| 1722 SSL_TLSV1, | |
| 1723 SSL_NOT_EXP|SSL_HIGH, | |
| 1724 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1725 256, | |
| 1726 256, | |
| 1727 }, | |
| 1728 #endif /* OPENSSL_NO_PSK */ | |
| 1729 | |
| 1730 #ifndef OPENSSL_NO_SEED | |
| 1731 /* SEED ciphersuites from RFC4162 */ | |
| 1732 | |
| 1733 /* Cipher 96 */ | |
| 1734 { | |
| 1735 1, | |
| 1736 TLS1_TXT_RSA_WITH_SEED_SHA, | |
| 1737 TLS1_CK_RSA_WITH_SEED_SHA, | |
| 1738 SSL_kRSA, | |
| 1739 SSL_aRSA, | |
| 1740 SSL_SEED, | |
| 1741 SSL_SHA1, | |
| 1742 SSL_TLSV1, | |
| 1743 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1744 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1745 128, | |
| 1746 128, | |
| 1747 }, | |
| 1748 | |
| 1749 /* Cipher 97 */ | |
| 1750 { | |
| 1751 0, /* not implemented (non-ephemeral DH) */ | |
| 1752 TLS1_TXT_DH_DSS_WITH_SEED_SHA, | |
| 1753 TLS1_CK_DH_DSS_WITH_SEED_SHA, | |
| 1754 SSL_kDHd, | |
| 1755 SSL_aDH, | |
| 1756 SSL_SEED, | |
| 1757 SSL_SHA1, | |
| 1758 SSL_TLSV1, | |
| 1759 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1760 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1761 128, | |
| 1762 128, | |
| 1763 }, | |
| 1764 | |
| 1765 /* Cipher 98 */ | |
| 1766 { | |
| 1767 0, /* not implemented (non-ephemeral DH) */ | |
| 1768 TLS1_TXT_DH_RSA_WITH_SEED_SHA, | |
| 1769 TLS1_CK_DH_RSA_WITH_SEED_SHA, | |
| 1770 SSL_kDHr, | |
| 1771 SSL_aDH, | |
| 1772 SSL_SEED, | |
| 1773 SSL_SHA1, | |
| 1774 SSL_TLSV1, | |
| 1775 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1776 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1777 128, | |
| 1778 128, | |
| 1779 }, | |
| 1780 | |
| 1781 /* Cipher 99 */ | |
| 1782 { | |
| 1783 1, | |
| 1784 TLS1_TXT_DHE_DSS_WITH_SEED_SHA, | |
| 1785 TLS1_CK_DHE_DSS_WITH_SEED_SHA, | |
| 1786 SSL_kEDH, | |
| 1787 SSL_aDSS, | |
| 1788 SSL_SEED, | |
| 1789 SSL_SHA1, | |
| 1790 SSL_TLSV1, | |
| 1791 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1792 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1793 128, | |
| 1794 128, | |
| 1795 }, | |
| 1796 | |
| 1797 /* Cipher 9A */ | |
| 1798 { | |
| 1799 1, | |
| 1800 TLS1_TXT_DHE_RSA_WITH_SEED_SHA, | |
| 1801 TLS1_CK_DHE_RSA_WITH_SEED_SHA, | |
| 1802 SSL_kEDH, | |
| 1803 SSL_aRSA, | |
| 1804 SSL_SEED, | |
| 1805 SSL_SHA1, | |
| 1806 SSL_TLSV1, | |
| 1807 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1808 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1809 128, | |
| 1810 128, | |
| 1811 }, | |
| 1812 | |
| 1813 /* Cipher 9B */ | |
| 1814 { | |
| 1815 1, | |
| 1816 TLS1_TXT_ADH_WITH_SEED_SHA, | |
| 1817 TLS1_CK_ADH_WITH_SEED_SHA, | |
| 1818 SSL_kEDH, | |
| 1819 SSL_aNULL, | |
| 1820 SSL_SEED, | |
| 1821 SSL_SHA1, | |
| 1822 SSL_TLSV1, | |
| 1823 SSL_NOT_EXP|SSL_MEDIUM, | |
| 1824 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 1825 128, | |
| 1826 128, | |
| 1827 }, | |
| 1828 | |
| 1829 #endif /* OPENSSL_NO_SEED */ | |
| 1830 | |
| 1831 /* GCM ciphersuites from RFC5288 */ | |
| 1832 | |
| 1833 /* Cipher 9C */ | |
| 1834 { | |
| 1835 1, | |
| 1836 TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256, | |
| 1837 TLS1_CK_RSA_WITH_AES_128_GCM_SHA256, | |
| 1838 SSL_kRSA, | |
| 1839 SSL_aRSA, | |
| 1840 SSL_AES128GCM, | |
| 1841 SSL_AEAD, | |
| 1842 SSL_TLSV1_2, | |
| 1843 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1844 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 1845 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 1846 128, | |
| 1847 128, | |
| 1848 }, | |
| 1849 | |
| 1850 /* Cipher 9D */ | |
| 1851 { | |
| 1852 1, | |
| 1853 TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384, | |
| 1854 TLS1_CK_RSA_WITH_AES_256_GCM_SHA384, | |
| 1855 SSL_kRSA, | |
| 1856 SSL_aRSA, | |
| 1857 SSL_AES256GCM, | |
| 1858 SSL_AEAD, | |
| 1859 SSL_TLSV1_2, | |
| 1860 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1861 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 1862 256, | |
| 1863 256, | |
| 1864 }, | |
| 1865 | |
| 1866 /* Cipher 9E */ | |
| 1867 { | |
| 1868 1, | |
| 1869 TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256, | |
| 1870 TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256, | |
| 1871 SSL_kEDH, | |
| 1872 SSL_aRSA, | |
| 1873 SSL_AES128GCM, | |
| 1874 SSL_AEAD, | |
| 1875 SSL_TLSV1_2, | |
| 1876 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1877 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 1878 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 1879 128, | |
| 1880 128, | |
| 1881 }, | |
| 1882 | |
| 1883 /* Cipher 9F */ | |
| 1884 { | |
| 1885 1, | |
| 1886 TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384, | |
| 1887 TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384, | |
| 1888 SSL_kEDH, | |
| 1889 SSL_aRSA, | |
| 1890 SSL_AES256GCM, | |
| 1891 SSL_AEAD, | |
| 1892 SSL_TLSV1_2, | |
| 1893 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1894 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 1895 256, | |
| 1896 256, | |
| 1897 }, | |
| 1898 | |
| 1899 /* Cipher A0 */ | |
| 1900 { | |
| 1901 0, | |
| 1902 TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256, | |
| 1903 TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256, | |
| 1904 SSL_kDHr, | |
| 1905 SSL_aDH, | |
| 1906 SSL_AES128GCM, | |
| 1907 SSL_AEAD, | |
| 1908 SSL_TLSV1_2, | |
| 1909 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1910 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 1911 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 1912 128, | |
| 1913 128, | |
| 1914 }, | |
| 1915 | |
| 1916 /* Cipher A1 */ | |
| 1917 { | |
| 1918 0, | |
| 1919 TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384, | |
| 1920 TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384, | |
| 1921 SSL_kDHr, | |
| 1922 SSL_aDH, | |
| 1923 SSL_AES256GCM, | |
| 1924 SSL_AEAD, | |
| 1925 SSL_TLSV1_2, | |
| 1926 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1927 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 1928 256, | |
| 1929 256, | |
| 1930 }, | |
| 1931 | |
| 1932 /* Cipher A2 */ | |
| 1933 { | |
| 1934 1, | |
| 1935 TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256, | |
| 1936 TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256, | |
| 1937 SSL_kEDH, | |
| 1938 SSL_aDSS, | |
| 1939 SSL_AES128GCM, | |
| 1940 SSL_AEAD, | |
| 1941 SSL_TLSV1_2, | |
| 1942 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1943 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 1944 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 1945 128, | |
| 1946 128, | |
| 1947 }, | |
| 1948 | |
| 1949 /* Cipher A3 */ | |
| 1950 { | |
| 1951 1, | |
| 1952 TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384, | |
| 1953 TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384, | |
| 1954 SSL_kEDH, | |
| 1955 SSL_aDSS, | |
| 1956 SSL_AES256GCM, | |
| 1957 SSL_AEAD, | |
| 1958 SSL_TLSV1_2, | |
| 1959 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1960 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 1961 256, | |
| 1962 256, | |
| 1963 }, | |
| 1964 | |
| 1965 /* Cipher A4 */ | |
| 1966 { | |
| 1967 0, | |
| 1968 TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256, | |
| 1969 TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256, | |
| 1970 SSL_kDHd, | |
| 1971 SSL_aDH, | |
| 1972 SSL_AES128GCM, | |
| 1973 SSL_AEAD, | |
| 1974 SSL_TLSV1_2, | |
| 1975 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1976 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 1977 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 1978 128, | |
| 1979 128, | |
| 1980 }, | |
| 1981 | |
| 1982 /* Cipher A5 */ | |
| 1983 { | |
| 1984 0, | |
| 1985 TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384, | |
| 1986 TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384, | |
| 1987 SSL_kDHd, | |
| 1988 SSL_aDH, | |
| 1989 SSL_AES256GCM, | |
| 1990 SSL_AEAD, | |
| 1991 SSL_TLSV1_2, | |
| 1992 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 1993 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 1994 256, | |
| 1995 256, | |
| 1996 }, | |
| 1997 | |
| 1998 /* Cipher A6 */ | |
| 1999 { | |
| 2000 1, | |
| 2001 TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256, | |
| 2002 TLS1_CK_ADH_WITH_AES_128_GCM_SHA256, | |
| 2003 SSL_kEDH, | |
| 2004 SSL_aNULL, | |
| 2005 SSL_AES128GCM, | |
| 2006 SSL_AEAD, | |
| 2007 SSL_TLSV1_2, | |
| 2008 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2009 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 2010 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 2011 128, | |
| 2012 128, | |
| 2013 }, | |
| 2014 | |
| 2015 /* Cipher A7 */ | |
| 2016 { | |
| 2017 1, | |
| 2018 TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384, | |
| 2019 TLS1_CK_ADH_WITH_AES_256_GCM_SHA384, | |
| 2020 SSL_kEDH, | |
| 2021 SSL_aNULL, | |
| 2022 SSL_AES256GCM, | |
| 2023 SSL_AEAD, | |
| 2024 SSL_TLSV1_2, | |
| 2025 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2026 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2027 256, | |
| 2028 256, | |
| 2029 }, | |
| 2030 | |
| 2031 #ifndef OPENSSL_NO_ECDH | |
| 2032 /* Cipher C001 */ | |
| 2033 { | |
| 2034 1, | |
| 2035 TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA, | |
| 2036 TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA, | |
| 2037 SSL_kECDHe, | |
| 2038 SSL_aECDH, | |
| 2039 SSL_eNULL, | |
| 2040 SSL_SHA1, | |
| 2041 SSL_TLSV1, | |
| 2042 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, | |
| 2043 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2044 0, | |
| 2045 0, | |
| 2046 }, | |
| 2047 | |
| 2048 /* Cipher C002 */ | |
| 2049 { | |
| 2050 1, | |
| 2051 TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA, | |
| 2052 TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA, | |
| 2053 SSL_kECDHe, | |
| 2054 SSL_aECDH, | |
| 2055 SSL_RC4, | |
| 2056 SSL_SHA1, | |
| 2057 SSL_TLSV1, | |
| 2058 SSL_NOT_EXP|SSL_MEDIUM, | |
| 2059 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2060 128, | |
| 2061 128, | |
| 2062 }, | |
| 2063 | |
| 2064 /* Cipher C003 */ | |
| 2065 { | |
| 2066 1, | |
| 2067 TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA, | |
| 2068 TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA, | |
| 2069 SSL_kECDHe, | |
| 2070 SSL_aECDH, | |
| 2071 SSL_3DES, | |
| 2072 SSL_SHA1, | |
| 2073 SSL_TLSV1, | |
| 2074 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2075 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2076 168, | |
| 2077 168, | |
| 2078 }, | |
| 2079 | |
| 2080 /* Cipher C004 */ | |
| 2081 { | |
| 2082 1, | |
| 2083 TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA, | |
| 2084 TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA, | |
| 2085 SSL_kECDHe, | |
| 2086 SSL_aECDH, | |
| 2087 SSL_AES128, | |
| 2088 SSL_SHA1, | |
| 2089 SSL_TLSV1, | |
| 2090 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2091 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2092 128, | |
| 2093 128, | |
| 2094 }, | |
| 2095 | |
| 2096 /* Cipher C005 */ | |
| 2097 { | |
| 2098 1, | |
| 2099 TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA, | |
| 2100 TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA, | |
| 2101 SSL_kECDHe, | |
| 2102 SSL_aECDH, | |
| 2103 SSL_AES256, | |
| 2104 SSL_SHA1, | |
| 2105 SSL_TLSV1, | |
| 2106 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2107 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2108 256, | |
| 2109 256, | |
| 2110 }, | |
| 2111 | |
| 2112 /* Cipher C006 */ | |
| 2113 { | |
| 2114 1, | |
| 2115 TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA, | |
| 2116 TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA, | |
| 2117 SSL_kEECDH, | |
| 2118 SSL_aECDSA, | |
| 2119 SSL_eNULL, | |
| 2120 SSL_SHA1, | |
| 2121 SSL_TLSV1, | |
| 2122 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, | |
| 2123 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2124 0, | |
| 2125 0, | |
| 2126 }, | |
| 2127 | |
| 2128 /* Cipher C007 */ | |
| 2129 { | |
| 2130 1, | |
| 2131 TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA, | |
| 2132 TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA, | |
| 2133 SSL_kEECDH, | |
| 2134 SSL_aECDSA, | |
| 2135 SSL_RC4, | |
| 2136 SSL_SHA1, | |
| 2137 SSL_TLSV1, | |
| 2138 SSL_NOT_EXP|SSL_MEDIUM, | |
| 2139 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2140 128, | |
| 2141 128, | |
| 2142 }, | |
| 2143 | |
| 2144 /* Cipher C008 */ | |
| 2145 { | |
| 2146 1, | |
| 2147 TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA, | |
| 2148 TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA, | |
| 2149 SSL_kEECDH, | |
| 2150 SSL_aECDSA, | |
| 2151 SSL_3DES, | |
| 2152 SSL_SHA1, | |
| 2153 SSL_TLSV1, | |
| 2154 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2155 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2156 168, | |
| 2157 168, | |
| 2158 }, | |
| 2159 | |
| 2160 /* Cipher C009 */ | |
| 2161 { | |
| 2162 1, | |
| 2163 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, | |
| 2164 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, | |
| 2165 SSL_kEECDH, | |
| 2166 SSL_aECDSA, | |
| 2167 SSL_AES128, | |
| 2168 SSL_SHA1, | |
| 2169 SSL_TLSV1, | |
| 2170 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2171 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2172 128, | |
| 2173 128, | |
| 2174 }, | |
| 2175 | |
| 2176 /* Cipher C00A */ | |
| 2177 { | |
| 2178 1, | |
| 2179 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, | |
| 2180 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, | |
| 2181 SSL_kEECDH, | |
| 2182 SSL_aECDSA, | |
| 2183 SSL_AES256, | |
| 2184 SSL_SHA1, | |
| 2185 SSL_TLSV1, | |
| 2186 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2187 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2188 256, | |
| 2189 256, | |
| 2190 }, | |
| 2191 | |
| 2192 /* Cipher C00B */ | |
| 2193 { | |
| 2194 1, | |
| 2195 TLS1_TXT_ECDH_RSA_WITH_NULL_SHA, | |
| 2196 TLS1_CK_ECDH_RSA_WITH_NULL_SHA, | |
| 2197 SSL_kECDHr, | |
| 2198 SSL_aECDH, | |
| 2199 SSL_eNULL, | |
| 2200 SSL_SHA1, | |
| 2201 SSL_TLSV1, | |
| 2202 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, | |
| 2203 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2204 0, | |
| 2205 0, | |
| 2206 }, | |
| 2207 | |
| 2208 /* Cipher C00C */ | |
| 2209 { | |
| 2210 1, | |
| 2211 TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA, | |
| 2212 TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA, | |
| 2213 SSL_kECDHr, | |
| 2214 SSL_aECDH, | |
| 2215 SSL_RC4, | |
| 2216 SSL_SHA1, | |
| 2217 SSL_TLSV1, | |
| 2218 SSL_NOT_EXP|SSL_MEDIUM, | |
| 2219 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2220 128, | |
| 2221 128, | |
| 2222 }, | |
| 2223 | |
| 2224 /* Cipher C00D */ | |
| 2225 { | |
| 2226 1, | |
| 2227 TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA, | |
| 2228 TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA, | |
| 2229 SSL_kECDHr, | |
| 2230 SSL_aECDH, | |
| 2231 SSL_3DES, | |
| 2232 SSL_SHA1, | |
| 2233 SSL_TLSV1, | |
| 2234 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2235 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2236 168, | |
| 2237 168, | |
| 2238 }, | |
| 2239 | |
| 2240 /* Cipher C00E */ | |
| 2241 { | |
| 2242 1, | |
| 2243 TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA, | |
| 2244 TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA, | |
| 2245 SSL_kECDHr, | |
| 2246 SSL_aECDH, | |
| 2247 SSL_AES128, | |
| 2248 SSL_SHA1, | |
| 2249 SSL_TLSV1, | |
| 2250 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2251 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2252 128, | |
| 2253 128, | |
| 2254 }, | |
| 2255 | |
| 2256 /* Cipher C00F */ | |
| 2257 { | |
| 2258 1, | |
| 2259 TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA, | |
| 2260 TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA, | |
| 2261 SSL_kECDHr, | |
| 2262 SSL_aECDH, | |
| 2263 SSL_AES256, | |
| 2264 SSL_SHA1, | |
| 2265 SSL_TLSV1, | |
| 2266 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2267 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2268 256, | |
| 2269 256, | |
| 2270 }, | |
| 2271 | |
| 2272 /* Cipher C010 */ | |
| 2273 { | |
| 2274 1, | |
| 2275 TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA, | |
| 2276 TLS1_CK_ECDHE_RSA_WITH_NULL_SHA, | |
| 2277 SSL_kEECDH, | |
| 2278 SSL_aRSA, | |
| 2279 SSL_eNULL, | |
| 2280 SSL_SHA1, | |
| 2281 SSL_TLSV1, | |
| 2282 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, | |
| 2283 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2284 0, | |
| 2285 0, | |
| 2286 }, | |
| 2287 | |
| 2288 /* Cipher C011 */ | |
| 2289 { | |
| 2290 1, | |
| 2291 TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA, | |
| 2292 TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA, | |
| 2293 SSL_kEECDH, | |
| 2294 SSL_aRSA, | |
| 2295 SSL_RC4, | |
| 2296 SSL_SHA1, | |
| 2297 SSL_TLSV1, | |
| 2298 SSL_NOT_EXP|SSL_MEDIUM, | |
| 2299 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2300 128, | |
| 2301 128, | |
| 2302 }, | |
| 2303 | |
| 2304 /* Cipher C012 */ | |
| 2305 { | |
| 2306 1, | |
| 2307 TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA, | |
| 2308 TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA, | |
| 2309 SSL_kEECDH, | |
| 2310 SSL_aRSA, | |
| 2311 SSL_3DES, | |
| 2312 SSL_SHA1, | |
| 2313 SSL_TLSV1, | |
| 2314 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2315 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2316 168, | |
| 2317 168, | |
| 2318 }, | |
| 2319 | |
| 2320 /* Cipher C013 */ | |
| 2321 { | |
| 2322 1, | |
| 2323 TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA, | |
| 2324 TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA, | |
| 2325 SSL_kEECDH, | |
| 2326 SSL_aRSA, | |
| 2327 SSL_AES128, | |
| 2328 SSL_SHA1, | |
| 2329 SSL_TLSV1, | |
| 2330 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2331 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2332 128, | |
| 2333 128, | |
| 2334 }, | |
| 2335 | |
| 2336 /* Cipher C014 */ | |
| 2337 { | |
| 2338 1, | |
| 2339 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA, | |
| 2340 TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA, | |
| 2341 SSL_kEECDH, | |
| 2342 SSL_aRSA, | |
| 2343 SSL_AES256, | |
| 2344 SSL_SHA1, | |
| 2345 SSL_TLSV1, | |
| 2346 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2347 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2348 256, | |
| 2349 256, | |
| 2350 }, | |
| 2351 | |
| 2352 /* Cipher C015 */ | |
| 2353 { | |
| 2354 1, | |
| 2355 TLS1_TXT_ECDH_anon_WITH_NULL_SHA, | |
| 2356 TLS1_CK_ECDH_anon_WITH_NULL_SHA, | |
| 2357 SSL_kEECDH, | |
| 2358 SSL_aNULL, | |
| 2359 SSL_eNULL, | |
| 2360 SSL_SHA1, | |
| 2361 SSL_TLSV1, | |
| 2362 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, | |
| 2363 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2364 0, | |
| 2365 0, | |
| 2366 }, | |
| 2367 | |
| 2368 /* Cipher C016 */ | |
| 2369 { | |
| 2370 1, | |
| 2371 TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA, | |
| 2372 TLS1_CK_ECDH_anon_WITH_RC4_128_SHA, | |
| 2373 SSL_kEECDH, | |
| 2374 SSL_aNULL, | |
| 2375 SSL_RC4, | |
| 2376 SSL_SHA1, | |
| 2377 SSL_TLSV1, | |
| 2378 SSL_NOT_EXP|SSL_MEDIUM, | |
| 2379 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2380 128, | |
| 2381 128, | |
| 2382 }, | |
| 2383 | |
| 2384 /* Cipher C017 */ | |
| 2385 { | |
| 2386 1, | |
| 2387 TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA, | |
| 2388 TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA, | |
| 2389 SSL_kEECDH, | |
| 2390 SSL_aNULL, | |
| 2391 SSL_3DES, | |
| 2392 SSL_SHA1, | |
| 2393 SSL_TLSV1, | |
| 2394 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2395 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2396 168, | |
| 2397 168, | |
| 2398 }, | |
| 2399 | |
| 2400 /* Cipher C018 */ | |
| 2401 { | |
| 2402 1, | |
| 2403 TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA, | |
| 2404 TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA, | |
| 2405 SSL_kEECDH, | |
| 2406 SSL_aNULL, | |
| 2407 SSL_AES128, | |
| 2408 SSL_SHA1, | |
| 2409 SSL_TLSV1, | |
| 2410 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2411 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2412 128, | |
| 2413 128, | |
| 2414 }, | |
| 2415 | |
| 2416 /* Cipher C019 */ | |
| 2417 { | |
| 2418 1, | |
| 2419 TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA, | |
| 2420 TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA, | |
| 2421 SSL_kEECDH, | |
| 2422 SSL_aNULL, | |
| 2423 SSL_AES256, | |
| 2424 SSL_SHA1, | |
| 2425 SSL_TLSV1, | |
| 2426 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2427 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2428 256, | |
| 2429 256, | |
| 2430 }, | |
| 2431 #endif /* OPENSSL_NO_ECDH */ | |
| 2432 | |
| 2433 #ifndef OPENSSL_NO_SRP | |
| 2434 /* Cipher C01A */ | |
| 2435 { | |
| 2436 1, | |
| 2437 TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA, | |
| 2438 TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA, | |
| 2439 SSL_kSRP, | |
| 2440 SSL_aNULL, | |
| 2441 SSL_3DES, | |
| 2442 SSL_SHA1, | |
| 2443 SSL_TLSV1, | |
| 2444 SSL_NOT_EXP|SSL_HIGH, | |
| 2445 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2446 168, | |
| 2447 168, | |
| 2448 }, | |
| 2449 | |
| 2450 /* Cipher C01B */ | |
| 2451 { | |
| 2452 1, | |
| 2453 TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA, | |
| 2454 TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA, | |
| 2455 SSL_kSRP, | |
| 2456 SSL_aRSA, | |
| 2457 SSL_3DES, | |
| 2458 SSL_SHA1, | |
| 2459 SSL_TLSV1, | |
| 2460 SSL_NOT_EXP|SSL_HIGH, | |
| 2461 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2462 168, | |
| 2463 168, | |
| 2464 }, | |
| 2465 | |
| 2466 /* Cipher C01C */ | |
| 2467 { | |
| 2468 1, | |
| 2469 TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA, | |
| 2470 TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA, | |
| 2471 SSL_kSRP, | |
| 2472 SSL_aDSS, | |
| 2473 SSL_3DES, | |
| 2474 SSL_SHA1, | |
| 2475 SSL_TLSV1, | |
| 2476 SSL_NOT_EXP|SSL_HIGH, | |
| 2477 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2478 168, | |
| 2479 168, | |
| 2480 }, | |
| 2481 | |
| 2482 /* Cipher C01D */ | |
| 2483 { | |
| 2484 1, | |
| 2485 TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA, | |
| 2486 TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA, | |
| 2487 SSL_kSRP, | |
| 2488 SSL_aNULL, | |
| 2489 SSL_AES128, | |
| 2490 SSL_SHA1, | |
| 2491 SSL_TLSV1, | |
| 2492 SSL_NOT_EXP|SSL_HIGH, | |
| 2493 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2494 128, | |
| 2495 128, | |
| 2496 }, | |
| 2497 | |
| 2498 /* Cipher C01E */ | |
| 2499 { | |
| 2500 1, | |
| 2501 TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA, | |
| 2502 TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA, | |
| 2503 SSL_kSRP, | |
| 2504 SSL_aRSA, | |
| 2505 SSL_AES128, | |
| 2506 SSL_SHA1, | |
| 2507 SSL_TLSV1, | |
| 2508 SSL_NOT_EXP|SSL_HIGH, | |
| 2509 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2510 128, | |
| 2511 128, | |
| 2512 }, | |
| 2513 | |
| 2514 /* Cipher C01F */ | |
| 2515 { | |
| 2516 1, | |
| 2517 TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA, | |
| 2518 TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA, | |
| 2519 SSL_kSRP, | |
| 2520 SSL_aDSS, | |
| 2521 SSL_AES128, | |
| 2522 SSL_SHA1, | |
| 2523 SSL_TLSV1, | |
| 2524 SSL_NOT_EXP|SSL_HIGH, | |
| 2525 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2526 128, | |
| 2527 128, | |
| 2528 }, | |
| 2529 | |
| 2530 /* Cipher C020 */ | |
| 2531 { | |
| 2532 1, | |
| 2533 TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA, | |
| 2534 TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA, | |
| 2535 SSL_kSRP, | |
| 2536 SSL_aNULL, | |
| 2537 SSL_AES256, | |
| 2538 SSL_SHA1, | |
| 2539 SSL_TLSV1, | |
| 2540 SSL_NOT_EXP|SSL_HIGH, | |
| 2541 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2542 256, | |
| 2543 256, | |
| 2544 }, | |
| 2545 | |
| 2546 /* Cipher C021 */ | |
| 2547 { | |
| 2548 1, | |
| 2549 TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA, | |
| 2550 TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA, | |
| 2551 SSL_kSRP, | |
| 2552 SSL_aRSA, | |
| 2553 SSL_AES256, | |
| 2554 SSL_SHA1, | |
| 2555 SSL_TLSV1, | |
| 2556 SSL_NOT_EXP|SSL_HIGH, | |
| 2557 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2558 256, | |
| 2559 256, | |
| 2560 }, | |
| 2561 | |
| 2562 /* Cipher C022 */ | |
| 2563 { | |
| 2564 1, | |
| 2565 TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA, | |
| 2566 TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA, | |
| 2567 SSL_kSRP, | |
| 2568 SSL_aDSS, | |
| 2569 SSL_AES256, | |
| 2570 SSL_SHA1, | |
| 2571 SSL_TLSV1, | |
| 2572 SSL_NOT_EXP|SSL_HIGH, | |
| 2573 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2574 256, | |
| 2575 256, | |
| 2576 }, | |
| 2577 #endif /* OPENSSL_NO_SRP */ | |
| 2578 #ifndef OPENSSL_NO_ECDH | |
| 2579 | |
| 2580 /* HMAC based TLS v1.2 ciphersuites from RFC5289 */ | |
| 2581 | |
| 2582 /* Cipher C023 */ | |
| 2583 { | |
| 2584 1, | |
| 2585 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256, | |
| 2586 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256, | |
| 2587 SSL_kEECDH, | |
| 2588 SSL_aECDSA, | |
| 2589 SSL_AES128, | |
| 2590 SSL_SHA256, | |
| 2591 SSL_TLSV1_2, | |
| 2592 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2593 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, | |
| 2594 128, | |
| 2595 128, | |
| 2596 }, | |
| 2597 | |
| 2598 /* Cipher C024 */ | |
| 2599 { | |
| 2600 1, | |
| 2601 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384, | |
| 2602 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384, | |
| 2603 SSL_kEECDH, | |
| 2604 SSL_aECDSA, | |
| 2605 SSL_AES256, | |
| 2606 SSL_SHA384, | |
| 2607 SSL_TLSV1_2, | |
| 2608 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2609 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2610 256, | |
| 2611 256, | |
| 2612 }, | |
| 2613 | |
| 2614 /* Cipher C025 */ | |
| 2615 { | |
| 2616 1, | |
| 2617 TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256, | |
| 2618 TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256, | |
| 2619 SSL_kECDHe, | |
| 2620 SSL_aECDH, | |
| 2621 SSL_AES128, | |
| 2622 SSL_SHA256, | |
| 2623 SSL_TLSV1_2, | |
| 2624 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2625 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, | |
| 2626 128, | |
| 2627 128, | |
| 2628 }, | |
| 2629 | |
| 2630 /* Cipher C026 */ | |
| 2631 { | |
| 2632 1, | |
| 2633 TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384, | |
| 2634 TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384, | |
| 2635 SSL_kECDHe, | |
| 2636 SSL_aECDH, | |
| 2637 SSL_AES256, | |
| 2638 SSL_SHA384, | |
| 2639 SSL_TLSV1_2, | |
| 2640 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2641 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2642 256, | |
| 2643 256, | |
| 2644 }, | |
| 2645 | |
| 2646 /* Cipher C027 */ | |
| 2647 { | |
| 2648 1, | |
| 2649 TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256, | |
| 2650 TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256, | |
| 2651 SSL_kEECDH, | |
| 2652 SSL_aRSA, | |
| 2653 SSL_AES128, | |
| 2654 SSL_SHA256, | |
| 2655 SSL_TLSV1_2, | |
| 2656 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2657 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, | |
| 2658 128, | |
| 2659 128, | |
| 2660 }, | |
| 2661 | |
| 2662 /* Cipher C028 */ | |
| 2663 { | |
| 2664 1, | |
| 2665 TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384, | |
| 2666 TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384, | |
| 2667 SSL_kEECDH, | |
| 2668 SSL_aRSA, | |
| 2669 SSL_AES256, | |
| 2670 SSL_SHA384, | |
| 2671 SSL_TLSV1_2, | |
| 2672 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2673 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2674 256, | |
| 2675 256, | |
| 2676 }, | |
| 2677 | |
| 2678 /* Cipher C029 */ | |
| 2679 { | |
| 2680 1, | |
| 2681 TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256, | |
| 2682 TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256, | |
| 2683 SSL_kECDHr, | |
| 2684 SSL_aECDH, | |
| 2685 SSL_AES128, | |
| 2686 SSL_SHA256, | |
| 2687 SSL_TLSV1_2, | |
| 2688 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2689 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, | |
| 2690 128, | |
| 2691 128, | |
| 2692 }, | |
| 2693 | |
| 2694 /* Cipher C02A */ | |
| 2695 { | |
| 2696 1, | |
| 2697 TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384, | |
| 2698 TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384, | |
| 2699 SSL_kECDHr, | |
| 2700 SSL_aECDH, | |
| 2701 SSL_AES256, | |
| 2702 SSL_SHA384, | |
| 2703 SSL_TLSV1_2, | |
| 2704 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2705 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2706 256, | |
| 2707 256, | |
| 2708 }, | |
| 2709 | |
| 2710 /* GCM based TLS v1.2 ciphersuites from RFC5289 */ | |
| 2711 | |
| 2712 /* Cipher C02B */ | |
| 2713 { | |
| 2714 1, | |
| 2715 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, | |
| 2716 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, | |
| 2717 SSL_kEECDH, | |
| 2718 SSL_aECDSA, | |
| 2719 SSL_AES128GCM, | |
| 2720 SSL_AEAD, | |
| 2721 SSL_TLSV1_2, | |
| 2722 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2723 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 2724 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 2725 128, | |
| 2726 128, | |
| 2727 }, | |
| 2728 | |
| 2729 /* Cipher C02C */ | |
| 2730 { | |
| 2731 1, | |
| 2732 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, | |
| 2733 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, | |
| 2734 SSL_kEECDH, | |
| 2735 SSL_aECDSA, | |
| 2736 SSL_AES256GCM, | |
| 2737 SSL_AEAD, | |
| 2738 SSL_TLSV1_2, | |
| 2739 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2740 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2741 256, | |
| 2742 256, | |
| 2743 }, | |
| 2744 | |
| 2745 /* Cipher C02D */ | |
| 2746 { | |
| 2747 1, | |
| 2748 TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, | |
| 2749 TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, | |
| 2750 SSL_kECDHe, | |
| 2751 SSL_aECDH, | |
| 2752 SSL_AES128GCM, | |
| 2753 SSL_AEAD, | |
| 2754 SSL_TLSV1_2, | |
| 2755 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2756 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 2757 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 2758 128, | |
| 2759 128, | |
| 2760 }, | |
| 2761 | |
| 2762 /* Cipher C02E */ | |
| 2763 { | |
| 2764 1, | |
| 2765 TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, | |
| 2766 TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, | |
| 2767 SSL_kECDHe, | |
| 2768 SSL_aECDH, | |
| 2769 SSL_AES256GCM, | |
| 2770 SSL_AEAD, | |
| 2771 SSL_TLSV1_2, | |
| 2772 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2773 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2774 256, | |
| 2775 256, | |
| 2776 }, | |
| 2777 | |
| 2778 /* Cipher C02F */ | |
| 2779 { | |
| 2780 1, | |
| 2781 TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256, | |
| 2782 TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256, | |
| 2783 SSL_kEECDH, | |
| 2784 SSL_aRSA, | |
| 2785 SSL_AES128GCM, | |
| 2786 SSL_AEAD, | |
| 2787 SSL_TLSV1_2, | |
| 2788 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2789 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 2790 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 2791 128, | |
| 2792 128, | |
| 2793 }, | |
| 2794 | |
| 2795 /* Cipher C030 */ | |
| 2796 { | |
| 2797 1, | |
| 2798 TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384, | |
| 2799 TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384, | |
| 2800 SSL_kEECDH, | |
| 2801 SSL_aRSA, | |
| 2802 SSL_AES256GCM, | |
| 2803 SSL_AEAD, | |
| 2804 SSL_TLSV1_2, | |
| 2805 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2806 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2807 256, | |
| 2808 256, | |
| 2809 }, | |
| 2810 | |
| 2811 /* Cipher C031 */ | |
| 2812 { | |
| 2813 1, | |
| 2814 TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256, | |
| 2815 TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256, | |
| 2816 SSL_kECDHr, | |
| 2817 SSL_aECDH, | |
| 2818 SSL_AES128GCM, | |
| 2819 SSL_AEAD, | |
| 2820 SSL_TLSV1_2, | |
| 2821 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2822 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(4)| | |
| 2823 SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD, | |
| 2824 128, | |
| 2825 128, | |
| 2826 }, | |
| 2827 | |
| 2828 /* Cipher C032 */ | |
| 2829 { | |
| 2830 1, | |
| 2831 TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384, | |
| 2832 TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384, | |
| 2833 SSL_kECDHr, | |
| 2834 SSL_aECDH, | |
| 2835 SSL_AES256GCM, | |
| 2836 SSL_AEAD, | |
| 2837 SSL_TLSV1_2, | |
| 2838 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, | |
| 2839 SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, | |
| 2840 256, | |
| 2841 256, | |
| 2842 }, | |
| 2843 | |
| 2844 #endif /* OPENSSL_NO_ECDH */ | |
| 2845 | |
| 2846 | |
| 2847 #ifdef TEMP_GOST_TLS | |
| 2848 /* Cipher FF00 */ | |
| 2849 { | |
| 2850 1, | |
| 2851 "GOST-MD5", | |
| 2852 0x0300ff00, | |
| 2853 SSL_kRSA, | |
| 2854 SSL_aRSA, | |
| 2855 SSL_eGOST2814789CNT, | |
| 2856 SSL_MD5, | |
| 2857 SSL_TLSV1, | |
| 2858 SSL_NOT_EXP|SSL_HIGH, | |
| 2859 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2860 256, | |
| 2861 256, | |
| 2862 }, | |
| 2863 { | |
| 2864 1, | |
| 2865 "GOST-GOST94", | |
| 2866 0x0300ff01, | |
| 2867 SSL_kRSA, | |
| 2868 SSL_aRSA, | |
| 2869 SSL_eGOST2814789CNT, | |
| 2870 SSL_GOST94, | |
| 2871 SSL_TLSV1, | |
| 2872 SSL_NOT_EXP|SSL_HIGH, | |
| 2873 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2874 256, | |
| 2875 256 | |
| 2876 }, | |
| 2877 { | |
| 2878 1, | |
| 2879 "GOST-GOST89MAC", | |
| 2880 0x0300ff02, | |
| 2881 SSL_kRSA, | |
| 2882 SSL_aRSA, | |
| 2883 SSL_eGOST2814789CNT, | |
| 2884 SSL_GOST89MAC, | |
| 2885 SSL_TLSV1, | |
| 2886 SSL_NOT_EXP|SSL_HIGH, | |
| 2887 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, | |
| 2888 256, | |
| 2889 256 | |
| 2890 }, | |
| 2891 { | |
| 2892 1, | |
| 2893 "GOST-GOST89STREAM", | |
| 2894 0x0300ff03, | |
| 2895 SSL_kRSA, | |
| 2896 SSL_aRSA, | |
| 2897 SSL_eGOST2814789CNT, | |
| 2898 SSL_GOST89MAC, | |
| 2899 SSL_TLSV1, | |
| 2900 SSL_NOT_EXP|SSL_HIGH, | |
| 2901 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF|TLS1_STREAM_MAC, | |
| 2902 256, | |
| 2903 256 | |
| 2904 }, | |
| 2905 #endif | |
| 2906 | |
| 2907 { | |
| 2908 1, | |
| 2909 TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305, | |
| 2910 TLS1_CK_ECDHE_RSA_CHACHA20_POLY1305, | |
| 2911 SSL_kEECDH, | |
| 2912 SSL_aRSA, | |
| 2913 SSL_CHACHA20POLY1305, | |
| 2914 SSL_AEAD, | |
| 2915 SSL_TLSV1_2, | |
| 2916 SSL_NOT_EXP|SSL_HIGH, | |
| 2917 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(0), | |
| 2918 256, | |
| 2919 0, | |
| 2920 }, | |
| 2921 | |
| 2922 { | |
| 2923 1, | |
| 2924 TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, | |
| 2925 TLS1_CK_ECDHE_ECDSA_CHACHA20_POLY1305, | |
| 2926 SSL_kEECDH, | |
| 2927 SSL_aECDSA, | |
| 2928 SSL_CHACHA20POLY1305, | |
| 2929 SSL_AEAD, | |
| 2930 SSL_TLSV1_2, | |
| 2931 SSL_NOT_EXP|SSL_HIGH, | |
| 2932 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(0), | |
| 2933 256, | |
| 2934 0, | |
| 2935 }, | |
| 2936 | |
| 2937 { | |
| 2938 1, | |
| 2939 TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305, | |
| 2940 TLS1_CK_DHE_RSA_CHACHA20_POLY1305, | |
| 2941 SSL_kEDH, | |
| 2942 SSL_aRSA, | |
| 2943 SSL_CHACHA20POLY1305, | |
| 2944 SSL_AEAD, | |
| 2945 SSL_TLSV1_2, | |
| 2946 SSL_NOT_EXP|SSL_HIGH, | |
| 2947 SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXE
D_NONCE_LEN(0), | |
| 2948 256, | |
| 2949 0, | |
| 2950 }, | |
| 2951 | |
| 2952 /* end of list */ | |
| 2953 }; | |
| 2954 | |
| 2955 SSL3_ENC_METHOD SSLv3_enc_data={ | |
| 2956 ssl3_enc, | |
| 2957 n_ssl3_mac, | |
| 2958 ssl3_setup_key_block, | |
| 2959 ssl3_generate_master_secret, | |
| 2960 ssl3_change_cipher_state, | |
| 2961 ssl3_final_finish_mac, | |
| 2962 MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH, | |
| 2963 ssl3_cert_verify_mac, | |
| 2964 SSL3_MD_CLIENT_FINISHED_CONST,4, | |
| 2965 SSL3_MD_SERVER_FINISHED_CONST,4, | |
| 2966 ssl3_alert_code, | |
| 2967 (int (*)(SSL *, unsigned char *, size_t, const char *, | |
| 2968 size_t, const unsigned char *, size_t, | |
| 2969 int use_context))ssl_undefined_function, | |
| 2970 }; | |
| 2971 | |
| 2972 long ssl3_default_timeout(void) | |
| 2973 { | |
| 2974 /* 2 hours, the 24 hours mentioned in the SSLv3 spec | |
| 2975 * is way too long for http, the cache would over fill */ | |
| 2976 return(60*60*2); | |
| 2977 } | |
| 2978 | |
| 2979 int ssl3_num_ciphers(void) | |
| 2980 { | |
| 2981 return(SSL3_NUM_CIPHERS); | |
| 2982 } | |
| 2983 | |
| 2984 const SSL_CIPHER *ssl3_get_cipher(unsigned int u) | |
| 2985 { | |
| 2986 if (u < SSL3_NUM_CIPHERS) | |
| 2987 return(&(ssl3_ciphers[SSL3_NUM_CIPHERS-1-u])); | |
| 2988 else | |
| 2989 return(NULL); | |
| 2990 } | |
| 2991 | |
| 2992 int ssl3_pending(const SSL *s) | |
| 2993 { | |
| 2994 if (s->rstate == SSL_ST_READ_BODY) | |
| 2995 return 0; | |
| 2996 | |
| 2997 return (s->s3->rrec.type == SSL3_RT_APPLICATION_DATA) ? s->s3->rrec.leng
th : 0; | |
| 2998 } | |
| 2999 | |
| 3000 int ssl3_new(SSL *s) | |
| 3001 { | |
| 3002 SSL3_STATE *s3; | |
| 3003 | |
| 3004 if ((s3=OPENSSL_malloc(sizeof *s3)) == NULL) goto err; | |
| 3005 memset(s3,0,sizeof *s3); | |
| 3006 memset(s3->rrec.seq_num,0,sizeof(s3->rrec.seq_num)); | |
| 3007 memset(s3->wrec.seq_num,0,sizeof(s3->wrec.seq_num)); | |
| 3008 | |
| 3009 s->s3=s3; | |
| 3010 | |
| 3011 #ifndef OPENSSL_NO_SRP | |
| 3012 SSL_SRP_CTX_init(s); | |
| 3013 #endif | |
| 3014 #if !defined(OPENSSL_NO_TLSEXT) | |
| 3015 s->tlsext_channel_id_enabled = s->ctx->tlsext_channel_id_enabled; | |
| 3016 if (s->ctx->tlsext_channel_id_private) | |
| 3017 s->tlsext_channel_id_private = EVP_PKEY_dup(s->ctx->tlsext_chann
el_id_private); | |
| 3018 #endif | |
| 3019 s->method->ssl_clear(s); | |
| 3020 return(1); | |
| 3021 err: | |
| 3022 return(0); | |
| 3023 } | |
| 3024 | |
| 3025 void ssl3_free(SSL *s) | |
| 3026 { | |
| 3027 if(s == NULL) | |
| 3028 return; | |
| 3029 | |
| 3030 #ifdef TLSEXT_TYPE_opaque_prf_input | |
| 3031 if (s->s3->client_opaque_prf_input != NULL) | |
| 3032 OPENSSL_free(s->s3->client_opaque_prf_input); | |
| 3033 if (s->s3->server_opaque_prf_input != NULL) | |
| 3034 OPENSSL_free(s->s3->server_opaque_prf_input); | |
| 3035 #endif | |
| 3036 | |
| 3037 ssl3_cleanup_key_block(s); | |
| 3038 if (s->s3->rbuf.buf != NULL) | |
| 3039 ssl3_release_read_buffer(s); | |
| 3040 if (s->s3->wbuf.buf != NULL) | |
| 3041 ssl3_release_write_buffer(s); | |
| 3042 if (s->s3->rrec.comp != NULL) | |
| 3043 OPENSSL_free(s->s3->rrec.comp); | |
| 3044 #ifndef OPENSSL_NO_DH | |
| 3045 if (s->s3->tmp.dh != NULL) | |
| 3046 DH_free(s->s3->tmp.dh); | |
| 3047 #endif | |
| 3048 #ifndef OPENSSL_NO_ECDH | |
| 3049 if (s->s3->tmp.ecdh != NULL) | |
| 3050 EC_KEY_free(s->s3->tmp.ecdh); | |
| 3051 #endif | |
| 3052 | |
| 3053 if (s->s3->tmp.ca_names != NULL) | |
| 3054 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free); | |
| 3055 if (s->s3->handshake_buffer) { | |
| 3056 BIO_free(s->s3->handshake_buffer); | |
| 3057 } | |
| 3058 if (s->s3->handshake_dgst) ssl3_free_digest_list(s); | |
| 3059 #ifndef OPENSSL_NO_SRP | |
| 3060 SSL_SRP_CTX_free(s); | |
| 3061 #endif | |
| 3062 OPENSSL_cleanse(s->s3,sizeof *s->s3); | |
| 3063 OPENSSL_free(s->s3); | |
| 3064 s->s3=NULL; | |
| 3065 } | |
| 3066 | |
| 3067 void ssl3_clear(SSL *s) | |
| 3068 { | |
| 3069 unsigned char *rp,*wp; | |
| 3070 size_t rlen, wlen; | |
| 3071 int init_extra; | |
| 3072 | |
| 3073 #ifdef TLSEXT_TYPE_opaque_prf_input | |
| 3074 if (s->s3->client_opaque_prf_input != NULL) | |
| 3075 OPENSSL_free(s->s3->client_opaque_prf_input); | |
| 3076 s->s3->client_opaque_prf_input = NULL; | |
| 3077 if (s->s3->server_opaque_prf_input != NULL) | |
| 3078 OPENSSL_free(s->s3->server_opaque_prf_input); | |
| 3079 s->s3->server_opaque_prf_input = NULL; | |
| 3080 #endif | |
| 3081 | |
| 3082 ssl3_cleanup_key_block(s); | |
| 3083 if (s->s3->tmp.ca_names != NULL) | |
| 3084 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free); | |
| 3085 | |
| 3086 if (s->s3->rrec.comp != NULL) | |
| 3087 { | |
| 3088 OPENSSL_free(s->s3->rrec.comp); | |
| 3089 s->s3->rrec.comp=NULL; | |
| 3090 } | |
| 3091 #ifndef OPENSSL_NO_DH | |
| 3092 if (s->s3->tmp.dh != NULL) | |
| 3093 { | |
| 3094 DH_free(s->s3->tmp.dh); | |
| 3095 s->s3->tmp.dh = NULL; | |
| 3096 } | |
| 3097 #endif | |
| 3098 #ifndef OPENSSL_NO_ECDH | |
| 3099 if (s->s3->tmp.ecdh != NULL) | |
| 3100 { | |
| 3101 EC_KEY_free(s->s3->tmp.ecdh); | |
| 3102 s->s3->tmp.ecdh = NULL; | |
| 3103 } | |
| 3104 #endif | |
| 3105 | |
| 3106 rp = s->s3->rbuf.buf; | |
| 3107 wp = s->s3->wbuf.buf; | |
| 3108 rlen = s->s3->rbuf.len; | |
| 3109 wlen = s->s3->wbuf.len; | |
| 3110 init_extra = s->s3->init_extra; | |
| 3111 if (s->s3->handshake_buffer) { | |
| 3112 BIO_free(s->s3->handshake_buffer); | |
| 3113 s->s3->handshake_buffer = NULL; | |
| 3114 } | |
| 3115 if (s->s3->handshake_dgst) { | |
| 3116 ssl3_free_digest_list(s); | |
| 3117 } | |
| 3118 memset(s->s3,0,sizeof *s->s3); | |
| 3119 s->s3->rbuf.buf = rp; | |
| 3120 s->s3->wbuf.buf = wp; | |
| 3121 s->s3->rbuf.len = rlen; | |
| 3122 s->s3->wbuf.len = wlen; | |
| 3123 s->s3->init_extra = init_extra; | |
| 3124 | |
| 3125 ssl_free_wbio_buffer(s); | |
| 3126 | |
| 3127 s->packet_length=0; | |
| 3128 s->s3->renegotiate=0; | |
| 3129 s->s3->total_renegotiations=0; | |
| 3130 s->s3->num_renegotiations=0; | |
| 3131 s->s3->in_read_app_data=0; | |
| 3132 s->version=SSL3_VERSION; | |
| 3133 | |
| 3134 #if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG) | |
| 3135 if (s->next_proto_negotiated) | |
| 3136 { | |
| 3137 OPENSSL_free(s->next_proto_negotiated); | |
| 3138 s->next_proto_negotiated = NULL; | |
| 3139 s->next_proto_negotiated_len = 0; | |
| 3140 } | |
| 3141 #endif | |
| 3142 | |
| 3143 #if !defined(OPENSSL_NO_TLSEXT) | |
| 3144 s->s3->tlsext_channel_id_valid = 0; | |
| 3145 #endif | |
| 3146 } | |
| 3147 | |
| 3148 #ifndef OPENSSL_NO_SRP | |
| 3149 static char * MS_CALLBACK srp_password_from_info_cb(SSL *s, void *arg) | |
| 3150 { | |
| 3151 return BUF_strdup(s->srp_ctx.info) ; | |
| 3152 } | |
| 3153 #endif | |
| 3154 | |
| 3155 long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |
| 3156 { | |
| 3157 int ret=0; | |
| 3158 | |
| 3159 #if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_RSA) | |
| 3160 if ( | |
| 3161 #ifndef OPENSSL_NO_RSA | |
| 3162 cmd == SSL_CTRL_SET_TMP_RSA || | |
| 3163 cmd == SSL_CTRL_SET_TMP_RSA_CB || | |
| 3164 #endif | |
| 3165 #ifndef OPENSSL_NO_DSA | |
| 3166 cmd == SSL_CTRL_SET_TMP_DH || | |
| 3167 cmd == SSL_CTRL_SET_TMP_DH_CB || | |
| 3168 #endif | |
| 3169 0) | |
| 3170 { | |
| 3171 if (!ssl_cert_inst(&s->cert)) | |
| 3172 { | |
| 3173 SSLerr(SSL_F_SSL3_CTRL, ERR_R_MALLOC_FAILURE); | |
| 3174 return(0); | |
| 3175 } | |
| 3176 } | |
| 3177 #endif | |
| 3178 | |
| 3179 switch (cmd) | |
| 3180 { | |
| 3181 case SSL_CTRL_GET_SESSION_REUSED: | |
| 3182 ret=s->hit; | |
| 3183 break; | |
| 3184 case SSL_CTRL_GET_CLIENT_CERT_REQUEST: | |
| 3185 break; | |
| 3186 case SSL_CTRL_GET_NUM_RENEGOTIATIONS: | |
| 3187 ret=s->s3->num_renegotiations; | |
| 3188 break; | |
| 3189 case SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS: | |
| 3190 ret=s->s3->num_renegotiations; | |
| 3191 s->s3->num_renegotiations=0; | |
| 3192 break; | |
| 3193 case SSL_CTRL_GET_TOTAL_RENEGOTIATIONS: | |
| 3194 ret=s->s3->total_renegotiations; | |
| 3195 break; | |
| 3196 case SSL_CTRL_GET_FLAGS: | |
| 3197 ret=(int)(s->s3->flags); | |
| 3198 break; | |
| 3199 #ifndef OPENSSL_NO_RSA | |
| 3200 case SSL_CTRL_NEED_TMP_RSA: | |
| 3201 if ((s->cert != NULL) && (s->cert->rsa_tmp == NULL) && | |
| 3202 ((s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL) || | |
| 3203 (EVP_PKEY_size(s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey)
> (512/8)))) | |
| 3204 ret = 1; | |
| 3205 break; | |
| 3206 case SSL_CTRL_SET_TMP_RSA: | |
| 3207 { | |
| 3208 RSA *rsa = (RSA *)parg; | |
| 3209 if (rsa == NULL) | |
| 3210 { | |
| 3211 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAME
TER); | |
| 3212 return(ret); | |
| 3213 } | |
| 3214 if ((rsa = RSAPrivateKey_dup(rsa)) == NULL) | |
| 3215 { | |
| 3216 SSLerr(SSL_F_SSL3_CTRL, ERR_R_RSA_LIB); | |
| 3217 return(ret); | |
| 3218 } | |
| 3219 if (s->cert->rsa_tmp != NULL) | |
| 3220 RSA_free(s->cert->rsa_tmp); | |
| 3221 s->cert->rsa_tmp = rsa; | |
| 3222 ret = 1; | |
| 3223 } | |
| 3224 break; | |
| 3225 case SSL_CTRL_SET_TMP_RSA_CB: | |
| 3226 { | |
| 3227 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | |
| 3228 return(ret); | |
| 3229 } | |
| 3230 break; | |
| 3231 #endif | |
| 3232 #ifndef OPENSSL_NO_DH | |
| 3233 case SSL_CTRL_SET_TMP_DH: | |
| 3234 { | |
| 3235 DH *dh = (DH *)parg; | |
| 3236 if (dh == NULL) | |
| 3237 { | |
| 3238 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAME
TER); | |
| 3239 return(ret); | |
| 3240 } | |
| 3241 if ((dh = DHparams_dup(dh)) == NULL) | |
| 3242 { | |
| 3243 SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB); | |
| 3244 return(ret); | |
| 3245 } | |
| 3246 if (!(s->options & SSL_OP_SINGLE_DH_USE)) | |
| 3247 { | |
| 3248 if (!DH_generate_key(dh)) | |
| 3249 { | |
| 3250 DH_free(dh); | |
| 3251 SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB); | |
| 3252 return(ret); | |
| 3253 } | |
| 3254 } | |
| 3255 if (s->cert->dh_tmp != NULL) | |
| 3256 DH_free(s->cert->dh_tmp); | |
| 3257 s->cert->dh_tmp = dh; | |
| 3258 ret = 1; | |
| 3259 } | |
| 3260 break; | |
| 3261 case SSL_CTRL_SET_TMP_DH_CB: | |
| 3262 { | |
| 3263 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | |
| 3264 return(ret); | |
| 3265 } | |
| 3266 break; | |
| 3267 #endif | |
| 3268 #ifndef OPENSSL_NO_ECDH | |
| 3269 case SSL_CTRL_SET_TMP_ECDH: | |
| 3270 { | |
| 3271 EC_KEY *ecdh = NULL; | |
| 3272 | |
| 3273 if (parg == NULL) | |
| 3274 { | |
| 3275 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER); | |
| 3276 return(ret); | |
| 3277 } | |
| 3278 if (!EC_KEY_up_ref((EC_KEY *)parg)) | |
| 3279 { | |
| 3280 SSLerr(SSL_F_SSL3_CTRL,ERR_R_ECDH_LIB); | |
| 3281 return(ret); | |
| 3282 } | |
| 3283 ecdh = (EC_KEY *)parg; | |
| 3284 if (!(s->options & SSL_OP_SINGLE_ECDH_USE)) | |
| 3285 { | |
| 3286 if (!EC_KEY_generate_key(ecdh)) | |
| 3287 { | |
| 3288 EC_KEY_free(ecdh); | |
| 3289 SSLerr(SSL_F_SSL3_CTRL,ERR_R_ECDH_LIB); | |
| 3290 return(ret); | |
| 3291 } | |
| 3292 } | |
| 3293 if (s->cert->ecdh_tmp != NULL) | |
| 3294 EC_KEY_free(s->cert->ecdh_tmp); | |
| 3295 s->cert->ecdh_tmp = ecdh; | |
| 3296 ret = 1; | |
| 3297 } | |
| 3298 break; | |
| 3299 case SSL_CTRL_SET_TMP_ECDH_CB: | |
| 3300 { | |
| 3301 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | |
| 3302 return(ret); | |
| 3303 } | |
| 3304 break; | |
| 3305 #endif /* !OPENSSL_NO_ECDH */ | |
| 3306 #ifndef OPENSSL_NO_TLSEXT | |
| 3307 case SSL_CTRL_SET_TLSEXT_HOSTNAME: | |
| 3308 if (larg == TLSEXT_NAMETYPE_host_name) | |
| 3309 { | |
| 3310 if (s->tlsext_hostname != NULL) | |
| 3311 OPENSSL_free(s->tlsext_hostname); | |
| 3312 s->tlsext_hostname = NULL; | |
| 3313 | |
| 3314 ret = 1; | |
| 3315 if (parg == NULL) | |
| 3316 break; | |
| 3317 if (strlen((char *)parg) > TLSEXT_MAXLEN_host_name) | |
| 3318 { | |
| 3319 SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_S
ERVERNAME); | |
| 3320 return 0; | |
| 3321 } | |
| 3322 if ((s->tlsext_hostname = BUF_strdup((char *)parg)) == N
ULL) | |
| 3323 { | |
| 3324 SSLerr(SSL_F_SSL3_CTRL, ERR_R_INTERNAL_ERROR); | |
| 3325 return 0; | |
| 3326 } | |
| 3327 } | |
| 3328 else | |
| 3329 { | |
| 3330 SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAM
E_TYPE); | |
| 3331 return 0; | |
| 3332 } | |
| 3333 break; | |
| 3334 case SSL_CTRL_SET_TLSEXT_DEBUG_ARG: | |
| 3335 s->tlsext_debug_arg=parg; | |
| 3336 ret = 1; | |
| 3337 break; | |
| 3338 | |
| 3339 #ifdef TLSEXT_TYPE_opaque_prf_input | |
| 3340 case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT: | |
| 3341 if (larg > 12288) /* actual internal limit is 2^16 for the compl
ete hello message | |
| 3342 * (including the cert chain and everything) *
/ | |
| 3343 { | |
| 3344 SSLerr(SSL_F_SSL3_CTRL, SSL_R_OPAQUE_PRF_INPUT_TOO_LONG)
; | |
| 3345 break; | |
| 3346 } | |
| 3347 if (s->tlsext_opaque_prf_input != NULL) | |
| 3348 OPENSSL_free(s->tlsext_opaque_prf_input); | |
| 3349 if ((size_t)larg == 0) | |
| 3350 s->tlsext_opaque_prf_input = OPENSSL_malloc(1); /* dummy
byte just to get non-NULL */ | |
| 3351 else | |
| 3352 s->tlsext_opaque_prf_input = BUF_memdup(parg, (size_t)la
rg); | |
| 3353 if (s->tlsext_opaque_prf_input != NULL) | |
| 3354 { | |
| 3355 s->tlsext_opaque_prf_input_len = (size_t)larg; | |
| 3356 ret = 1; | |
| 3357 } | |
| 3358 else | |
| 3359 s->tlsext_opaque_prf_input_len = 0; | |
| 3360 break; | |
| 3361 #endif | |
| 3362 | |
| 3363 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE: | |
| 3364 s->tlsext_status_type=larg; | |
| 3365 ret = 1; | |
| 3366 break; | |
| 3367 | |
| 3368 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS: | |
| 3369 *(STACK_OF(X509_EXTENSION) **)parg = s->tlsext_ocsp_exts; | |
| 3370 ret = 1; | |
| 3371 break; | |
| 3372 | |
| 3373 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS: | |
| 3374 s->tlsext_ocsp_exts = parg; | |
| 3375 ret = 1; | |
| 3376 break; | |
| 3377 | |
| 3378 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS: | |
| 3379 *(STACK_OF(OCSP_RESPID) **)parg = s->tlsext_ocsp_ids; | |
| 3380 ret = 1; | |
| 3381 break; | |
| 3382 | |
| 3383 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS: | |
| 3384 s->tlsext_ocsp_ids = parg; | |
| 3385 ret = 1; | |
| 3386 break; | |
| 3387 | |
| 3388 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP: | |
| 3389 *(unsigned char **)parg = s->tlsext_ocsp_resp; | |
| 3390 return s->tlsext_ocsp_resplen; | |
| 3391 | |
| 3392 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP: | |
| 3393 if (s->tlsext_ocsp_resp) | |
| 3394 OPENSSL_free(s->tlsext_ocsp_resp); | |
| 3395 s->tlsext_ocsp_resp = parg; | |
| 3396 s->tlsext_ocsp_resplen = larg; | |
| 3397 ret = 1; | |
| 3398 break; | |
| 3399 | |
| 3400 #ifndef OPENSSL_NO_HEARTBEATS | |
| 3401 case SSL_CTRL_TLS_EXT_SEND_HEARTBEAT: | |
| 3402 if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_B
AD_VER) | |
| 3403 ret = dtls1_heartbeat(s); | |
| 3404 else | |
| 3405 ret = tls1_heartbeat(s); | |
| 3406 break; | |
| 3407 | |
| 3408 case SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING: | |
| 3409 ret = s->tlsext_hb_pending; | |
| 3410 break; | |
| 3411 | |
| 3412 case SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS: | |
| 3413 if (larg) | |
| 3414 s->tlsext_heartbeat |= SSL_TLSEXT_HB_DONT_RECV_REQUESTS; | |
| 3415 else | |
| 3416 s->tlsext_heartbeat &= ~SSL_TLSEXT_HB_DONT_RECV_REQUESTS
; | |
| 3417 ret = 1; | |
| 3418 break; | |
| 3419 #endif | |
| 3420 case SSL_CTRL_CHANNEL_ID: | |
| 3421 s->tlsext_channel_id_enabled = 1; | |
| 3422 ret = 1; | |
| 3423 break; | |
| 3424 | |
| 3425 case SSL_CTRL_SET_CHANNEL_ID: | |
| 3426 if (s->server) | |
| 3427 break; | |
| 3428 s->tlsext_channel_id_enabled = 1; | |
| 3429 if (EVP_PKEY_bits(parg) != 256) | |
| 3430 { | |
| 3431 SSLerr(SSL_F_SSL3_CTRL,SSL_R_CHANNEL_ID_NOT_P256); | |
| 3432 break; | |
| 3433 } | |
| 3434 if (s->tlsext_channel_id_private) | |
| 3435 EVP_PKEY_free(s->tlsext_channel_id_private); | |
| 3436 s->tlsext_channel_id_private = EVP_PKEY_dup((EVP_PKEY*) parg); | |
| 3437 ret = 1; | |
| 3438 break; | |
| 3439 | |
| 3440 case SSL_CTRL_GET_CHANNEL_ID: | |
| 3441 if (!s->server) | |
| 3442 break; | |
| 3443 if (!s->s3->tlsext_channel_id_valid) | |
| 3444 break; | |
| 3445 memcpy(parg, s->s3->tlsext_channel_id, larg < 64 ? larg : 64); | |
| 3446 return 64; | |
| 3447 | |
| 3448 #endif /* !OPENSSL_NO_TLSEXT */ | |
| 3449 default: | |
| 3450 break; | |
| 3451 } | |
| 3452 return(ret); | |
| 3453 } | |
| 3454 | |
| 3455 long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) | |
| 3456 { | |
| 3457 int ret=0; | |
| 3458 | |
| 3459 #if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_RSA) | |
| 3460 if ( | |
| 3461 #ifndef OPENSSL_NO_RSA | |
| 3462 cmd == SSL_CTRL_SET_TMP_RSA_CB || | |
| 3463 #endif | |
| 3464 #ifndef OPENSSL_NO_DSA | |
| 3465 cmd == SSL_CTRL_SET_TMP_DH_CB || | |
| 3466 #endif | |
| 3467 0) | |
| 3468 { | |
| 3469 if (!ssl_cert_inst(&s->cert)) | |
| 3470 { | |
| 3471 SSLerr(SSL_F_SSL3_CALLBACK_CTRL, ERR_R_MALLOC_FAILURE); | |
| 3472 return(0); | |
| 3473 } | |
| 3474 } | |
| 3475 #endif | |
| 3476 | |
| 3477 switch (cmd) | |
| 3478 { | |
| 3479 #ifndef OPENSSL_NO_RSA | |
| 3480 case SSL_CTRL_SET_TMP_RSA_CB: | |
| 3481 { | |
| 3482 s->cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; | |
| 3483 } | |
| 3484 break; | |
| 3485 #endif | |
| 3486 #ifndef OPENSSL_NO_DH | |
| 3487 case SSL_CTRL_SET_TMP_DH_CB: | |
| 3488 { | |
| 3489 s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | |
| 3490 } | |
| 3491 break; | |
| 3492 #endif | |
| 3493 #ifndef OPENSSL_NO_ECDH | |
| 3494 case SSL_CTRL_SET_TMP_ECDH_CB: | |
| 3495 { | |
| 3496 s->cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; | |
| 3497 } | |
| 3498 break; | |
| 3499 #endif | |
| 3500 #ifndef OPENSSL_NO_TLSEXT | |
| 3501 case SSL_CTRL_SET_TLSEXT_DEBUG_CB: | |
| 3502 s->tlsext_debug_cb=(void (*)(SSL *,int ,int, | |
| 3503 unsigned char *, int, void *))fp; | |
| 3504 break; | |
| 3505 #endif | |
| 3506 default: | |
| 3507 break; | |
| 3508 } | |
| 3509 return(ret); | |
| 3510 } | |
| 3511 | |
| 3512 long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |
| 3513 { | |
| 3514 CERT *cert; | |
| 3515 | |
| 3516 cert=ctx->cert; | |
| 3517 | |
| 3518 switch (cmd) | |
| 3519 { | |
| 3520 #ifndef OPENSSL_NO_RSA | |
| 3521 case SSL_CTRL_NEED_TMP_RSA: | |
| 3522 if ( (cert->rsa_tmp == NULL) && | |
| 3523 ((cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL) || | |
| 3524 (EVP_PKEY_size(cert->pkeys[SSL_PKEY_RSA_ENC].privatekey
) > (512/8))) | |
| 3525 ) | |
| 3526 return(1); | |
| 3527 else | |
| 3528 return(0); | |
| 3529 /* break; */ | |
| 3530 case SSL_CTRL_SET_TMP_RSA: | |
| 3531 { | |
| 3532 RSA *rsa; | |
| 3533 int i; | |
| 3534 | |
| 3535 rsa=(RSA *)parg; | |
| 3536 i=1; | |
| 3537 if (rsa == NULL) | |
| 3538 i=0; | |
| 3539 else | |
| 3540 { | |
| 3541 if ((rsa=RSAPrivateKey_dup(rsa)) == NULL) | |
| 3542 i=0; | |
| 3543 } | |
| 3544 if (!i) | |
| 3545 { | |
| 3546 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_RSA_LIB); | |
| 3547 return(0); | |
| 3548 } | |
| 3549 else | |
| 3550 { | |
| 3551 if (cert->rsa_tmp != NULL) | |
| 3552 RSA_free(cert->rsa_tmp); | |
| 3553 cert->rsa_tmp=rsa; | |
| 3554 return(1); | |
| 3555 } | |
| 3556 } | |
| 3557 /* break; */ | |
| 3558 case SSL_CTRL_SET_TMP_RSA_CB: | |
| 3559 { | |
| 3560 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | |
| 3561 return(0); | |
| 3562 } | |
| 3563 break; | |
| 3564 #endif | |
| 3565 #ifndef OPENSSL_NO_DH | |
| 3566 case SSL_CTRL_SET_TMP_DH: | |
| 3567 { | |
| 3568 DH *new=NULL,*dh; | |
| 3569 | |
| 3570 dh=(DH *)parg; | |
| 3571 if ((new=DHparams_dup(dh)) == NULL) | |
| 3572 { | |
| 3573 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB); | |
| 3574 return 0; | |
| 3575 } | |
| 3576 if (!(ctx->options & SSL_OP_SINGLE_DH_USE)) | |
| 3577 { | |
| 3578 if (!DH_generate_key(new)) | |
| 3579 { | |
| 3580 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB); | |
| 3581 DH_free(new); | |
| 3582 return 0; | |
| 3583 } | |
| 3584 } | |
| 3585 if (cert->dh_tmp != NULL) | |
| 3586 DH_free(cert->dh_tmp); | |
| 3587 cert->dh_tmp=new; | |
| 3588 return 1; | |
| 3589 } | |
| 3590 /*break; */ | |
| 3591 case SSL_CTRL_SET_TMP_DH_CB: | |
| 3592 { | |
| 3593 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | |
| 3594 return(0); | |
| 3595 } | |
| 3596 break; | |
| 3597 #endif | |
| 3598 #ifndef OPENSSL_NO_ECDH | |
| 3599 case SSL_CTRL_SET_TMP_ECDH: | |
| 3600 { | |
| 3601 EC_KEY *ecdh = NULL; | |
| 3602 | |
| 3603 if (parg == NULL) | |
| 3604 { | |
| 3605 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_ECDH_LIB); | |
| 3606 return 0; | |
| 3607 } | |
| 3608 ecdh = EC_KEY_dup((EC_KEY *)parg); | |
| 3609 if (ecdh == NULL) | |
| 3610 { | |
| 3611 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_EC_LIB); | |
| 3612 return 0; | |
| 3613 } | |
| 3614 if (!(ctx->options & SSL_OP_SINGLE_ECDH_USE)) | |
| 3615 { | |
| 3616 if (!EC_KEY_generate_key(ecdh)) | |
| 3617 { | |
| 3618 EC_KEY_free(ecdh); | |
| 3619 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_ECDH_LIB); | |
| 3620 return 0; | |
| 3621 } | |
| 3622 } | |
| 3623 | |
| 3624 if (cert->ecdh_tmp != NULL) | |
| 3625 { | |
| 3626 EC_KEY_free(cert->ecdh_tmp); | |
| 3627 } | |
| 3628 cert->ecdh_tmp = ecdh; | |
| 3629 return 1; | |
| 3630 } | |
| 3631 /* break; */ | |
| 3632 case SSL_CTRL_SET_TMP_ECDH_CB: | |
| 3633 { | |
| 3634 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | |
| 3635 return(0); | |
| 3636 } | |
| 3637 break; | |
| 3638 #endif /* !OPENSSL_NO_ECDH */ | |
| 3639 #ifndef OPENSSL_NO_TLSEXT | |
| 3640 case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG: | |
| 3641 ctx->tlsext_servername_arg=parg; | |
| 3642 break; | |
| 3643 case SSL_CTRL_SET_TLSEXT_TICKET_KEYS: | |
| 3644 case SSL_CTRL_GET_TLSEXT_TICKET_KEYS: | |
| 3645 { | |
| 3646 unsigned char *keys = parg; | |
| 3647 if (!keys) | |
| 3648 return 48; | |
| 3649 if (larg != 48) | |
| 3650 { | |
| 3651 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_TICKET_KEYS_LE
NGTH); | |
| 3652 return 0; | |
| 3653 } | |
| 3654 if (cmd == SSL_CTRL_SET_TLSEXT_TICKET_KEYS) | |
| 3655 { | |
| 3656 memcpy(ctx->tlsext_tick_key_name, keys, 16); | |
| 3657 memcpy(ctx->tlsext_tick_hmac_key, keys + 16, 16); | |
| 3658 memcpy(ctx->tlsext_tick_aes_key, keys + 32, 16); | |
| 3659 } | |
| 3660 else | |
| 3661 { | |
| 3662 memcpy(keys, ctx->tlsext_tick_key_name, 16); | |
| 3663 memcpy(keys + 16, ctx->tlsext_tick_hmac_key, 16); | |
| 3664 memcpy(keys + 32, ctx->tlsext_tick_aes_key, 16); | |
| 3665 } | |
| 3666 return 1; | |
| 3667 } | |
| 3668 case SSL_CTRL_CHANNEL_ID: | |
| 3669 /* must be called on a server */ | |
| 3670 if (ctx->method->ssl_accept == ssl_undefined_function) | |
| 3671 return 0; | |
| 3672 ctx->tlsext_channel_id_enabled=1; | |
| 3673 return 1; | |
| 3674 | |
| 3675 #ifdef TLSEXT_TYPE_opaque_prf_input | |
| 3676 case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG: | |
| 3677 ctx->tlsext_opaque_prf_input_callback_arg = parg; | |
| 3678 return 1; | |
| 3679 #endif | |
| 3680 | |
| 3681 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG: | |
| 3682 ctx->tlsext_status_arg=parg; | |
| 3683 return 1; | |
| 3684 break; | |
| 3685 | |
| 3686 #ifndef OPENSSL_NO_SRP | |
| 3687 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME: | |
| 3688 ctx->srp_ctx.srp_Mask|=SSL_kSRP; | |
| 3689 if (ctx->srp_ctx.login != NULL) | |
| 3690 OPENSSL_free(ctx->srp_ctx.login); | |
| 3691 ctx->srp_ctx.login = NULL; | |
| 3692 if (parg == NULL) | |
| 3693 break; | |
| 3694 if (strlen((const char *)parg) > 255 || strlen((const char *)par
g) < 1) | |
| 3695 { | |
| 3696 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_SRP_USERNAME); | |
| 3697 return 0; | |
| 3698 } | |
| 3699 if ((ctx->srp_ctx.login = BUF_strdup((char *)parg)) == NULL) | |
| 3700 { | |
| 3701 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_INTERNAL_ERROR); | |
| 3702 return 0; | |
| 3703 } | |
| 3704 break; | |
| 3705 case SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD: | |
| 3706 ctx->srp_ctx.SRP_give_srp_client_pwd_callback=srp_password_from_
info_cb; | |
| 3707 ctx->srp_ctx.info=parg; | |
| 3708 break; | |
| 3709 case SSL_CTRL_SET_SRP_ARG: | |
| 3710 ctx->srp_ctx.srp_Mask|=SSL_kSRP; | |
| 3711 ctx->srp_ctx.SRP_cb_arg=parg; | |
| 3712 break; | |
| 3713 | |
| 3714 case SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH: | |
| 3715 ctx->srp_ctx.strength=larg; | |
| 3716 break; | |
| 3717 #endif | |
| 3718 #endif /* !OPENSSL_NO_TLSEXT */ | |
| 3719 | |
| 3720 /* A Thawte special :-) */ | |
| 3721 case SSL_CTRL_EXTRA_CHAIN_CERT: | |
| 3722 if (ctx->extra_certs == NULL) | |
| 3723 { | |
| 3724 if ((ctx->extra_certs=sk_X509_new_null()) == NULL) | |
| 3725 return(0); | |
| 3726 } | |
| 3727 sk_X509_push(ctx->extra_certs,(X509 *)parg); | |
| 3728 break; | |
| 3729 | |
| 3730 case SSL_CTRL_GET_EXTRA_CHAIN_CERTS: | |
| 3731 *(STACK_OF(X509) **)parg = ctx->extra_certs; | |
| 3732 break; | |
| 3733 | |
| 3734 case SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS: | |
| 3735 if (ctx->extra_certs) | |
| 3736 { | |
| 3737 sk_X509_pop_free(ctx->extra_certs, X509_free); | |
| 3738 ctx->extra_certs = NULL; | |
| 3739 } | |
| 3740 break; | |
| 3741 | |
| 3742 case SSL_CTRL_SET_CHANNEL_ID: | |
| 3743 ctx->tlsext_channel_id_enabled = 1; | |
| 3744 if (EVP_PKEY_bits(parg) != 256) | |
| 3745 { | |
| 3746 SSLerr(SSL_F_SSL3_CTX_CTRL,SSL_R_CHANNEL_ID_NOT_P256); | |
| 3747 break; | |
| 3748 } | |
| 3749 if (ctx->tlsext_channel_id_private) | |
| 3750 EVP_PKEY_free(ctx->tlsext_channel_id_private); | |
| 3751 ctx->tlsext_channel_id_private = EVP_PKEY_dup((EVP_PKEY*) parg); | |
| 3752 break; | |
| 3753 | |
| 3754 default: | |
| 3755 return(0); | |
| 3756 } | |
| 3757 return(1); | |
| 3758 } | |
| 3759 | |
| 3760 long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) | |
| 3761 { | |
| 3762 CERT *cert; | |
| 3763 | |
| 3764 cert=ctx->cert; | |
| 3765 | |
| 3766 switch (cmd) | |
| 3767 { | |
| 3768 #ifndef OPENSSL_NO_RSA | |
| 3769 case SSL_CTRL_SET_TMP_RSA_CB: | |
| 3770 { | |
| 3771 cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp; | |
| 3772 } | |
| 3773 break; | |
| 3774 #endif | |
| 3775 #ifndef OPENSSL_NO_DH | |
| 3776 case SSL_CTRL_SET_TMP_DH_CB: | |
| 3777 { | |
| 3778 cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | |
| 3779 } | |
| 3780 break; | |
| 3781 #endif | |
| 3782 #ifndef OPENSSL_NO_ECDH | |
| 3783 case SSL_CTRL_SET_TMP_ECDH_CB: | |
| 3784 { | |
| 3785 cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; | |
| 3786 } | |
| 3787 break; | |
| 3788 #endif | |
| 3789 #ifndef OPENSSL_NO_TLSEXT | |
| 3790 case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: | |
| 3791 ctx->tlsext_servername_callback=(int (*)(SSL *,int *,void *))fp; | |
| 3792 break; | |
| 3793 | |
| 3794 #ifdef TLSEXT_TYPE_opaque_prf_input | |
| 3795 case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB: | |
| 3796 ctx->tlsext_opaque_prf_input_callback = (int (*)(SSL *,void *, s
ize_t, void *))fp; | |
| 3797 break; | |
| 3798 #endif | |
| 3799 | |
| 3800 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB: | |
| 3801 ctx->tlsext_status_cb=(int (*)(SSL *,void *))fp; | |
| 3802 break; | |
| 3803 | |
| 3804 case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB: | |
| 3805 ctx->tlsext_ticket_key_cb=(int (*)(SSL *,unsigned char *, | |
| 3806 unsigned char *, | |
| 3807 EVP_CIPHER_CTX *, | |
| 3808 HMAC_CTX *, int))fp; | |
| 3809 break; | |
| 3810 | |
| 3811 #ifndef OPENSSL_NO_SRP | |
| 3812 case SSL_CTRL_SET_SRP_VERIFY_PARAM_CB: | |
| 3813 ctx->srp_ctx.srp_Mask|=SSL_kSRP; | |
| 3814 ctx->srp_ctx.SRP_verify_param_callback=(int (*)(SSL *,void *))fp
; | |
| 3815 break; | |
| 3816 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB: | |
| 3817 ctx->srp_ctx.srp_Mask|=SSL_kSRP; | |
| 3818 ctx->srp_ctx.TLS_ext_srp_username_callback=(int (*)(SSL *,int *,
void *))fp; | |
| 3819 break; | |
| 3820 case SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB: | |
| 3821 ctx->srp_ctx.srp_Mask|=SSL_kSRP; | |
| 3822 ctx->srp_ctx.SRP_give_srp_client_pwd_callback=(char *(*)(SSL *,v
oid *))fp; | |
| 3823 break; | |
| 3824 #endif | |
| 3825 #endif | |
| 3826 default: | |
| 3827 return(0); | |
| 3828 } | |
| 3829 return(1); | |
| 3830 } | |
| 3831 | |
| 3832 /* This function needs to check if the ciphers required are actually | |
| 3833 * available */ | |
| 3834 const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p) | |
| 3835 { | |
| 3836 SSL_CIPHER c; | |
| 3837 const SSL_CIPHER *cp; | |
| 3838 unsigned long id; | |
| 3839 | |
| 3840 id=0x03000000L|((unsigned long)p[0]<<8L)|(unsigned long)p[1]; | |
| 3841 c.id=id; | |
| 3842 cp = OBJ_bsearch_ssl_cipher_id(&c, ssl3_ciphers, SSL3_NUM_CIPHERS); | |
| 3843 #ifdef DEBUG_PRINT_UNKNOWN_CIPHERSUITES | |
| 3844 if (cp == NULL) fprintf(stderr, "Unknown cipher ID %x\n", (p[0] << 8) | p[1]); | |
| 3845 #endif | |
| 3846 if (cp == NULL || cp->valid == 0) | |
| 3847 return NULL; | |
| 3848 else | |
| 3849 return cp; | |
| 3850 } | |
| 3851 | |
| 3852 int ssl3_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p) | |
| 3853 { | |
| 3854 long l; | |
| 3855 | |
| 3856 if (p != NULL) | |
| 3857 { | |
| 3858 l=c->id; | |
| 3859 if ((l & 0xff000000) != 0x03000000) return(0); | |
| 3860 p[0]=((unsigned char)(l>> 8L))&0xFF; | |
| 3861 p[1]=((unsigned char)(l ))&0xFF; | |
| 3862 } | |
| 3863 return(2); | |
| 3864 } | |
| 3865 | |
| 3866 SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt, | |
| 3867 STACK_OF(SSL_CIPHER) *srvr) | |
| 3868 { | |
| 3869 SSL_CIPHER *c,*ret=NULL; | |
| 3870 STACK_OF(SSL_CIPHER) *prio, *allow; | |
| 3871 int i,ii,ok; | |
| 3872 #if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_EC) | |
| 3873 unsigned int j; | |
| 3874 int ec_ok, ec_nid; | |
| 3875 unsigned char ec_search1 = 0, ec_search2 = 0; | |
| 3876 #endif | |
| 3877 CERT *cert; | |
| 3878 unsigned long alg_k,alg_a,mask_k,mask_a,emask_k,emask_a; | |
| 3879 | |
| 3880 /* Let's see which ciphers we can support */ | |
| 3881 cert=s->cert; | |
| 3882 | |
| 3883 #if 0 | |
| 3884 /* Do not set the compare functions, because this may lead to a | |
| 3885 * reordering by "id". We want to keep the original ordering. | |
| 3886 * We may pay a price in performance during sk_SSL_CIPHER_find(), | |
| 3887 * but would have to pay with the price of sk_SSL_CIPHER_dup(). | |
| 3888 */ | |
| 3889 sk_SSL_CIPHER_set_cmp_func(srvr, ssl_cipher_ptr_id_cmp); | |
| 3890 sk_SSL_CIPHER_set_cmp_func(clnt, ssl_cipher_ptr_id_cmp); | |
| 3891 #endif | |
| 3892 | |
| 3893 #ifdef CIPHER_DEBUG | |
| 3894 printf("Server has %d from %p:\n", sk_SSL_CIPHER_num(srvr), (void *)srvr
); | |
| 3895 for(i=0 ; i < sk_SSL_CIPHER_num(srvr) ; ++i) | |
| 3896 { | |
| 3897 c=sk_SSL_CIPHER_value(srvr,i); | |
| 3898 printf("%p:%s\n",(void *)c,c->name); | |
| 3899 } | |
| 3900 printf("Client sent %d from %p:\n", sk_SSL_CIPHER_num(clnt), (void *)cln
t); | |
| 3901 for(i=0 ; i < sk_SSL_CIPHER_num(clnt) ; ++i) | |
| 3902 { | |
| 3903 c=sk_SSL_CIPHER_value(clnt,i); | |
| 3904 printf("%p:%s\n",(void *)c,c->name); | |
| 3905 } | |
| 3906 #endif | |
| 3907 | |
| 3908 if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE) | |
| 3909 { | |
| 3910 prio = srvr; | |
| 3911 allow = clnt; | |
| 3912 } | |
| 3913 else | |
| 3914 { | |
| 3915 prio = clnt; | |
| 3916 allow = srvr; | |
| 3917 } | |
| 3918 | |
| 3919 for (i=0; i<sk_SSL_CIPHER_num(prio); i++) | |
| 3920 { | |
| 3921 c=sk_SSL_CIPHER_value(prio,i); | |
| 3922 | |
| 3923 /* Skip TLS v1.2 only ciphersuites if lower than v1.2 */ | |
| 3924 if ((c->algorithm_ssl & SSL_TLSV1_2) && | |
| 3925 (TLS1_get_version(s) < TLS1_2_VERSION)) | |
| 3926 continue; | |
| 3927 | |
| 3928 ssl_set_cert_masks(cert,c); | |
| 3929 mask_k = cert->mask_k; | |
| 3930 mask_a = cert->mask_a; | |
| 3931 emask_k = cert->export_mask_k; | |
| 3932 emask_a = cert->export_mask_a; | |
| 3933 #ifndef OPENSSL_NO_SRP | |
| 3934 mask_k=cert->mask_k | s->srp_ctx.srp_Mask; | |
| 3935 emask_k=cert->export_mask_k | s->srp_ctx.srp_Mask; | |
| 3936 #endif | |
| 3937 | |
| 3938 #ifdef KSSL_DEBUG | |
| 3939 /* printf("ssl3_choose_cipher %d alg= %lx\n", i,c->algorithms);*/ | |
| 3940 #endif /* KSSL_DEBUG */ | |
| 3941 | |
| 3942 alg_k=c->algorithm_mkey; | |
| 3943 alg_a=c->algorithm_auth; | |
| 3944 | |
| 3945 #ifndef OPENSSL_NO_KRB5 | |
| 3946 if (alg_k & SSL_kKRB5) | |
| 3947 { | |
| 3948 if ( !kssl_keytab_is_available(s->kssl_ctx) ) | |
| 3949 continue; | |
| 3950 } | |
| 3951 #endif /* OPENSSL_NO_KRB5 */ | |
| 3952 #ifndef OPENSSL_NO_PSK | |
| 3953 /* with PSK there must be server callback set */ | |
| 3954 if ((alg_k & SSL_kPSK) && s->psk_server_callback == NULL) | |
| 3955 continue; | |
| 3956 #endif /* OPENSSL_NO_PSK */ | |
| 3957 | |
| 3958 if (SSL_C_IS_EXPORT(c)) | |
| 3959 { | |
| 3960 ok = (alg_k & emask_k) && (alg_a & emask_a); | |
| 3961 #ifdef CIPHER_DEBUG | |
| 3962 printf("%d:[%08lX:%08lX:%08lX:%08lX]%p:%s (export)\n",ok
,alg_k,alg_a,emask_k,emask_a, | |
| 3963 (void *)c,c->name); | |
| 3964 #endif | |
| 3965 } | |
| 3966 else | |
| 3967 { | |
| 3968 ok = (alg_k & mask_k) && (alg_a & mask_a); | |
| 3969 #ifdef CIPHER_DEBUG | |
| 3970 printf("%d:[%08lX:%08lX:%08lX:%08lX]%p:%s\n",ok,alg_k,al
g_a,mask_k,mask_a,(void *)c, | |
| 3971 c->name); | |
| 3972 #endif | |
| 3973 } | |
| 3974 | |
| 3975 #ifndef OPENSSL_NO_TLSEXT | |
| 3976 #ifndef OPENSSL_NO_EC | |
| 3977 if ( | |
| 3978 /* if we are considering an ECC cipher suite that uses o
ur certificate */ | |
| 3979 (alg_a & SSL_aECDSA || alg_a & SSL_aECDH) | |
| 3980 /* and we have an ECC certificate */ | |
| 3981 && (s->cert->pkeys[SSL_PKEY_ECC].x509 != NULL) | |
| 3982 /* and the client specified a Supported Point Formats ex
tension */ | |
| 3983 && ((s->session->tlsext_ecpointformatlist_length > 0) &&
(s->session->tlsext_ecpointformatlist != NULL)) | |
| 3984 /* and our certificate's point is compressed */ | |
| 3985 && ( | |
| 3986 (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info !=
NULL) | |
| 3987 && (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info
->key != NULL) | |
| 3988 && (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info
->key->public_key != NULL) | |
| 3989 && (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info
->key->public_key->data != NULL) | |
| 3990 && ( | |
| 3991 (*(s->cert->pkeys[SSL_PKEY_ECC].x509->ce
rt_info->key->public_key->data) == POINT_CONVERSION_COMPRESSED) | |
| 3992 || (*(s->cert->pkeys[SSL_PKEY_ECC].x509-
>cert_info->key->public_key->data) == POINT_CONVERSION_COMPRESSED + 1) | |
| 3993 ) | |
| 3994 ) | |
| 3995 ) | |
| 3996 { | |
| 3997 ec_ok = 0; | |
| 3998 /* if our certificate's curve is over a field type that
the client does not support | |
| 3999 * then do not allow this cipher suite to be negotiated
*/ | |
| 4000 if ( | |
| 4001 (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.e
c != NULL) | |
| 4002 && (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pke
y.ec->group != NULL) | |
| 4003 && (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pke
y.ec->group->meth != NULL) | |
| 4004 && (EC_METHOD_get_field_type(s->cert->pkeys[SSL_
PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_prime_field) | |
| 4005 ) | |
| 4006 { | |
| 4007 for (j = 0; j < s->session->tlsext_ecpointformat
list_length; j++) | |
| 4008 { | |
| 4009 if (s->session->tlsext_ecpointformatlist
[j] == TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime) | |
| 4010 { | |
| 4011 ec_ok = 1; | |
| 4012 break; | |
| 4013 } | |
| 4014 } | |
| 4015 } | |
| 4016 else if (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKE
Y_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_characteristic_two_field) | |
| 4017 { | |
| 4018 for (j = 0; j < s->session->tlsext_ecpointformat
list_length; j++) | |
| 4019 { | |
| 4020 if (s->session->tlsext_ecpointformatlist
[j] == TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2) | |
| 4021 { | |
| 4022 ec_ok = 1; | |
| 4023 break; | |
| 4024 } | |
| 4025 } | |
| 4026 } | |
| 4027 ok = ok && ec_ok; | |
| 4028 } | |
| 4029 if ( | |
| 4030 /* if we are considering an ECC cipher suite that uses o
ur certificate */ | |
| 4031 (alg_a & SSL_aECDSA || alg_a & SSL_aECDH) | |
| 4032 /* and we have an ECC certificate */ | |
| 4033 && (s->cert->pkeys[SSL_PKEY_ECC].x509 != NULL) | |
| 4034 /* and the client specified an EllipticCurves extension
*/ | |
| 4035 && ((s->session->tlsext_ellipticcurvelist_length > 0) &&
(s->session->tlsext_ellipticcurvelist != NULL)) | |
| 4036 ) | |
| 4037 { | |
| 4038 ec_ok = 0; | |
| 4039 if ( | |
| 4040 (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.e
c != NULL) | |
| 4041 && (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pke
y.ec->group != NULL) | |
| 4042 ) | |
| 4043 { | |
| 4044 ec_nid = EC_GROUP_get_curve_name(s->cert->pkeys[
SSL_PKEY_ECC].privatekey->pkey.ec->group); | |
| 4045 if ((ec_nid == 0) | |
| 4046 && (s->cert->pkeys[SSL_PKEY_ECC].private
key->pkey.ec->group->meth != NULL) | |
| 4047 ) | |
| 4048 { | |
| 4049 if (EC_METHOD_get_field_type(s->cert->pk
eys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_prime_field) | |
| 4050 { | |
| 4051 ec_search1 = 0xFF; | |
| 4052 ec_search2 = 0x01; | |
| 4053 } | |
| 4054 else if (EC_METHOD_get_field_type(s->cer
t->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_characteri
stic_two_field) | |
| 4055 { | |
| 4056 ec_search1 = 0xFF; | |
| 4057 ec_search2 = 0x02; | |
| 4058 } | |
| 4059 } | |
| 4060 else | |
| 4061 { | |
| 4062 ec_search1 = 0x00; | |
| 4063 ec_search2 = tls1_ec_nid2curve_id(ec_nid
); | |
| 4064 } | |
| 4065 if ((ec_search1 != 0) || (ec_search2 != 0)) | |
| 4066 { | |
| 4067 for (j = 0; j < s->session->tlsext_ellip
ticcurvelist_length / 2; j++) | |
| 4068 { | |
| 4069 if ((s->session->tlsext_elliptic
curvelist[2*j] == ec_search1) && (s->session->tlsext_ellipticcurvelist[2*j+1] ==
ec_search2)) | |
| 4070 { | |
| 4071 ec_ok = 1; | |
| 4072 break; | |
| 4073 } | |
| 4074 } | |
| 4075 } | |
| 4076 } | |
| 4077 ok = ok && ec_ok; | |
| 4078 } | |
| 4079 if ( | |
| 4080 /* if we are considering an ECC cipher suite that uses a
n ephemeral EC key */ | |
| 4081 (alg_k & SSL_kEECDH) | |
| 4082 /* and we have an ephemeral EC key */ | |
| 4083 && (s->cert->ecdh_tmp != NULL) | |
| 4084 /* and the client specified an EllipticCurves extension
*/ | |
| 4085 && ((s->session->tlsext_ellipticcurvelist_length > 0) &&
(s->session->tlsext_ellipticcurvelist != NULL)) | |
| 4086 ) | |
| 4087 { | |
| 4088 ec_ok = 0; | |
| 4089 if (s->cert->ecdh_tmp->group != NULL) | |
| 4090 { | |
| 4091 ec_nid = EC_GROUP_get_curve_name(s->cert->ecdh_t
mp->group); | |
| 4092 if ((ec_nid == 0) | |
| 4093 && (s->cert->ecdh_tmp->group->meth != NU
LL) | |
| 4094 ) | |
| 4095 { | |
| 4096 if (EC_METHOD_get_field_type(s->cert->ec
dh_tmp->group->meth) == NID_X9_62_prime_field) | |
| 4097 { | |
| 4098 ec_search1 = 0xFF; | |
| 4099 ec_search2 = 0x01; | |
| 4100 } | |
| 4101 else if (EC_METHOD_get_field_type(s->cer
t->ecdh_tmp->group->meth) == NID_X9_62_characteristic_two_field) | |
| 4102 { | |
| 4103 ec_search1 = 0xFF; | |
| 4104 ec_search2 = 0x02; | |
| 4105 } | |
| 4106 } | |
| 4107 else | |
| 4108 { | |
| 4109 ec_search1 = 0x00; | |
| 4110 ec_search2 = tls1_ec_nid2curve_id(ec_nid
); | |
| 4111 } | |
| 4112 if ((ec_search1 != 0) || (ec_search2 != 0)) | |
| 4113 { | |
| 4114 for (j = 0; j < s->session->tlsext_ellip
ticcurvelist_length / 2; j++) | |
| 4115 { | |
| 4116 if ((s->session->tlsext_elliptic
curvelist[2*j] == ec_search1) && (s->session->tlsext_ellipticcurvelist[2*j+1] ==
ec_search2)) | |
| 4117 { | |
| 4118 ec_ok = 1; | |
| 4119 break; | |
| 4120 } | |
| 4121 } | |
| 4122 } | |
| 4123 } | |
| 4124 ok = ok && ec_ok; | |
| 4125 } | |
| 4126 #endif /* OPENSSL_NO_EC */ | |
| 4127 #endif /* OPENSSL_NO_TLSEXT */ | |
| 4128 | |
| 4129 if (!ok) continue; | |
| 4130 ii=sk_SSL_CIPHER_find(allow,c); | |
| 4131 if (ii >= 0) | |
| 4132 { | |
| 4133 ret=sk_SSL_CIPHER_value(allow,ii); | |
| 4134 break; | |
| 4135 } | |
| 4136 } | |
| 4137 return(ret); | |
| 4138 } | |
| 4139 | |
| 4140 int ssl3_get_req_cert_type(SSL *s, unsigned char *p) | |
| 4141 { | |
| 4142 int ret=0; | |
| 4143 unsigned long alg_k; | |
| 4144 | |
| 4145 alg_k = s->s3->tmp.new_cipher->algorithm_mkey; | |
| 4146 | |
| 4147 #ifndef OPENSSL_NO_GOST | |
| 4148 if (s->version >= TLS1_VERSION) | |
| 4149 { | |
| 4150 if (alg_k & SSL_kGOST) | |
| 4151 { | |
| 4152 p[ret++]=TLS_CT_GOST94_SIGN; | |
| 4153 p[ret++]=TLS_CT_GOST01_SIGN; | |
| 4154 return(ret); | |
| 4155 } | |
| 4156 } | |
| 4157 #endif | |
| 4158 | |
| 4159 #ifndef OPENSSL_NO_DH | |
| 4160 if (alg_k & (SSL_kDHr|SSL_kEDH)) | |
| 4161 { | |
| 4162 # ifndef OPENSSL_NO_RSA | |
| 4163 p[ret++]=SSL3_CT_RSA_FIXED_DH; | |
| 4164 # endif | |
| 4165 # ifndef OPENSSL_NO_DSA | |
| 4166 p[ret++]=SSL3_CT_DSS_FIXED_DH; | |
| 4167 # endif | |
| 4168 } | |
| 4169 if ((s->version == SSL3_VERSION) && | |
| 4170 (alg_k & (SSL_kEDH|SSL_kDHd|SSL_kDHr))) | |
| 4171 { | |
| 4172 # ifndef OPENSSL_NO_RSA | |
| 4173 p[ret++]=SSL3_CT_RSA_EPHEMERAL_DH; | |
| 4174 # endif | |
| 4175 # ifndef OPENSSL_NO_DSA | |
| 4176 p[ret++]=SSL3_CT_DSS_EPHEMERAL_DH; | |
| 4177 # endif | |
| 4178 } | |
| 4179 #endif /* !OPENSSL_NO_DH */ | |
| 4180 #ifndef OPENSSL_NO_RSA | |
| 4181 p[ret++]=SSL3_CT_RSA_SIGN; | |
| 4182 #endif | |
| 4183 #ifndef OPENSSL_NO_DSA | |
| 4184 p[ret++]=SSL3_CT_DSS_SIGN; | |
| 4185 #endif | |
| 4186 #ifndef OPENSSL_NO_ECDH | |
| 4187 if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->version >= TLS1_VERSION)) | |
| 4188 { | |
| 4189 p[ret++]=TLS_CT_RSA_FIXED_ECDH; | |
| 4190 p[ret++]=TLS_CT_ECDSA_FIXED_ECDH; | |
| 4191 } | |
| 4192 #endif | |
| 4193 | |
| 4194 #ifndef OPENSSL_NO_ECDSA | |
| 4195 /* ECDSA certs can be used with RSA cipher suites as well | |
| 4196 * so we don't need to check for SSL_kECDH or SSL_kEECDH | |
| 4197 */ | |
| 4198 if (s->version >= TLS1_VERSION) | |
| 4199 { | |
| 4200 p[ret++]=TLS_CT_ECDSA_SIGN; | |
| 4201 } | |
| 4202 #endif | |
| 4203 return(ret); | |
| 4204 } | |
| 4205 | |
| 4206 int ssl3_shutdown(SSL *s) | |
| 4207 { | |
| 4208 int ret; | |
| 4209 | |
| 4210 /* Don't do anything much if we have not done the handshake or | |
| 4211 * we don't want to send messages :-) */ | |
| 4212 if ((s->quiet_shutdown) || (s->state == SSL_ST_BEFORE)) | |
| 4213 { | |
| 4214 s->shutdown=(SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN); | |
| 4215 return(1); | |
| 4216 } | |
| 4217 | |
| 4218 if (!(s->shutdown & SSL_SENT_SHUTDOWN)) | |
| 4219 { | |
| 4220 s->shutdown|=SSL_SENT_SHUTDOWN; | |
| 4221 #if 1 | |
| 4222 ssl3_send_alert(s,SSL3_AL_WARNING,SSL_AD_CLOSE_NOTIFY); | |
| 4223 #endif | |
| 4224 /* our shutdown alert has been sent now, and if it still needs | |
| 4225 * to be written, s->s3->alert_dispatch will be true */ | |
| 4226 if (s->s3->alert_dispatch) | |
| 4227 return(-1); /* return WANT_WRITE */ | |
| 4228 } | |
| 4229 else if (s->s3->alert_dispatch) | |
| 4230 { | |
| 4231 /* resend it if not sent */ | |
| 4232 #if 1 | |
| 4233 ret=s->method->ssl_dispatch_alert(s); | |
| 4234 if(ret == -1) | |
| 4235 { | |
| 4236 /* we only get to return -1 here the 2nd/Nth | |
| 4237 * invocation, we must have already signalled | |
| 4238 * return 0 upon a previous invoation, | |
| 4239 * return WANT_WRITE */ | |
| 4240 return(ret); | |
| 4241 } | |
| 4242 #endif | |
| 4243 } | |
| 4244 else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) | |
| 4245 { | |
| 4246 /* If we are waiting for a close from our peer, we are closed */ | |
| 4247 s->method->ssl_read_bytes(s,0,NULL,0,0); | |
| 4248 if(!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) | |
| 4249 { | |
| 4250 return(-1); /* return WANT_READ */ | |
| 4251 } | |
| 4252 } | |
| 4253 | |
| 4254 if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) && | |
| 4255 !s->s3->alert_dispatch) | |
| 4256 return(1); | |
| 4257 else | |
| 4258 return(0); | |
| 4259 } | |
| 4260 | |
| 4261 int ssl3_write(SSL *s, const void *buf, int len) | |
| 4262 { | |
| 4263 int ret,n; | |
| 4264 | |
| 4265 #if 0 | |
| 4266 if (s->shutdown & SSL_SEND_SHUTDOWN) | |
| 4267 { | |
| 4268 s->rwstate=SSL_NOTHING; | |
| 4269 return(0); | |
| 4270 } | |
| 4271 #endif | |
| 4272 clear_sys_error(); | |
| 4273 if (s->s3->renegotiate) ssl3_renegotiate_check(s); | |
| 4274 | |
| 4275 /* This is an experimental flag that sends the | |
| 4276 * last handshake message in the same packet as the first | |
| 4277 * use data - used to see if it helps the TCP protocol during | |
| 4278 * session-id reuse */ | |
| 4279 /* The second test is because the buffer may have been removed */ | |
| 4280 if ((s->s3->flags & SSL3_FLAGS_POP_BUFFER) && (s->wbio == s->bbio)) | |
| 4281 { | |
| 4282 /* First time through, we write into the buffer */ | |
| 4283 if (s->s3->delay_buf_pop_ret == 0) | |
| 4284 { | |
| 4285 ret=ssl3_write_bytes(s,SSL3_RT_APPLICATION_DATA, | |
| 4286 buf,len); | |
| 4287 if (ret <= 0) return(ret); | |
| 4288 | |
| 4289 s->s3->delay_buf_pop_ret=ret; | |
| 4290 } | |
| 4291 | |
| 4292 s->rwstate=SSL_WRITING; | |
| 4293 n=BIO_flush(s->wbio); | |
| 4294 if (n <= 0) return(n); | |
| 4295 s->rwstate=SSL_NOTHING; | |
| 4296 | |
| 4297 /* We have flushed the buffer, so remove it */ | |
| 4298 ssl_free_wbio_buffer(s); | |
| 4299 s->s3->flags&= ~SSL3_FLAGS_POP_BUFFER; | |
| 4300 | |
| 4301 ret=s->s3->delay_buf_pop_ret; | |
| 4302 s->s3->delay_buf_pop_ret=0; | |
| 4303 } | |
| 4304 else | |
| 4305 { | |
| 4306 ret=s->method->ssl_write_bytes(s,SSL3_RT_APPLICATION_DATA, | |
| 4307 buf,len); | |
| 4308 if (ret <= 0) return(ret); | |
| 4309 } | |
| 4310 | |
| 4311 return(ret); | |
| 4312 } | |
| 4313 | |
| 4314 static int ssl3_read_internal(SSL *s, void *buf, int len, int peek) | |
| 4315 { | |
| 4316 int n,ret; | |
| 4317 | |
| 4318 clear_sys_error(); | |
| 4319 if ((s->s3->flags & SSL3_FLAGS_POP_BUFFER) && (s->wbio == s->bbio)) | |
| 4320 { | |
| 4321 /* Deal with an application that calls SSL_read() when handshake
data | |
| 4322 * is yet to be written. | |
| 4323 */ | |
| 4324 if (BIO_wpending(s->wbio) > 0) | |
| 4325 { | |
| 4326 s->rwstate=SSL_WRITING; | |
| 4327 n=BIO_flush(s->wbio); | |
| 4328 if (n <= 0) return(n); | |
| 4329 s->rwstate=SSL_NOTHING; | |
| 4330 } | |
| 4331 } | |
| 4332 if (s->s3->renegotiate) ssl3_renegotiate_check(s); | |
| 4333 s->s3->in_read_app_data=1; | |
| 4334 ret=s->method->ssl_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek); | |
| 4335 if ((ret == -1) && (s->s3->in_read_app_data == 2)) | |
| 4336 { | |
| 4337 /* ssl3_read_bytes decided to call s->handshake_func, which | |
| 4338 * called ssl3_read_bytes to read handshake data. | |
| 4339 * However, ssl3_read_bytes actually found application data | |
| 4340 * and thinks that application data makes sense here; so disable | |
| 4341 * handshake processing and try to read application data again.
*/ | |
| 4342 s->in_handshake++; | |
| 4343 ret=s->method->ssl_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len
,peek); | |
| 4344 s->in_handshake--; | |
| 4345 } | |
| 4346 else | |
| 4347 s->s3->in_read_app_data=0; | |
| 4348 | |
| 4349 return(ret); | |
| 4350 } | |
| 4351 | |
| 4352 int ssl3_read(SSL *s, void *buf, int len) | |
| 4353 { | |
| 4354 return ssl3_read_internal(s, buf, len, 0); | |
| 4355 } | |
| 4356 | |
| 4357 int ssl3_peek(SSL *s, void *buf, int len) | |
| 4358 { | |
| 4359 return ssl3_read_internal(s, buf, len, 1); | |
| 4360 } | |
| 4361 | |
| 4362 int ssl3_renegotiate(SSL *s) | |
| 4363 { | |
| 4364 if (s->handshake_func == NULL) | |
| 4365 return(1); | |
| 4366 | |
| 4367 if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) | |
| 4368 return(0); | |
| 4369 | |
| 4370 s->s3->renegotiate=1; | |
| 4371 return(1); | |
| 4372 } | |
| 4373 | |
| 4374 int ssl3_renegotiate_check(SSL *s) | |
| 4375 { | |
| 4376 int ret=0; | |
| 4377 | |
| 4378 if (s->s3->renegotiate) | |
| 4379 { | |
| 4380 if ( (s->s3->rbuf.left == 0) && | |
| 4381 (s->s3->wbuf.left == 0) && | |
| 4382 !SSL_in_init(s)) | |
| 4383 { | |
| 4384 /* | |
| 4385 if we are the server, and we have sent a 'RENEGOTIATE' message, we | |
| 4386 need to go to SSL_ST_ACCEPT. | |
| 4387 */ | |
| 4388 /* SSL_ST_ACCEPT */ | |
| 4389 s->state=SSL_ST_RENEGOTIATE; | |
| 4390 s->s3->renegotiate=0; | |
| 4391 s->s3->num_renegotiations++; | |
| 4392 s->s3->total_renegotiations++; | |
| 4393 ret=1; | |
| 4394 } | |
| 4395 } | |
| 4396 return(ret); | |
| 4397 } | |
| 4398 /* If we are using TLS v1.2 or later and default SHA1+MD5 algorithms switch | |
| 4399 * to new SHA256 PRF and handshake macs | |
| 4400 */ | |
| 4401 long ssl_get_algorithm2(SSL *s) | |
| 4402 { | |
| 4403 long alg2 = s->s3->tmp.new_cipher->algorithm2; | |
| 4404 if (TLS1_get_version(s) >= TLS1_2_VERSION && | |
| 4405 alg2 == (SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF)) | |
| 4406 return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256; | |
| 4407 return alg2; | |
| 4408 } | |
| 4409 | |
| OLD | NEW |