| 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 | 
|---|