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