1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ssl/s3_lib.c */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
59221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * Copyright (c) 1998-2007 The OpenSSL Project.  All rights reserved.
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the above copyright
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the documentation and/or other materials provided with the
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    distribution.
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    software must display the following acknowledgment:
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    endorse or promote products derived from this software without
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    prior written permission. For written permission, please contact
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    openssl-core@openssl.org.
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5. Products derived from this software may not be called "OpenSSL"
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    nor may "OpenSSL" appear in their names without prior written
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    permission of the OpenSSL Project.
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 6. Redistributions of any form whatsoever must retain the following
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    acknowledgment:
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OF THE POSSIBILITY OF SUCH DAMAGE.
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This product includes cryptographic software written by Eric Young
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (eay@cryptsoft.com).  This product includes software written by Tim
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Hudson (tjh@cryptsoft.com).
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Portions of the attached software ("Contribution") are developed by
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The Contribution is licensed pursuant to the OpenSSL open source
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * license provided above.
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ECC cipher suite support in OpenSSL originally written by
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories.
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
124221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/* ====================================================================
125221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * Copyright 2005 Nokia. All rights reserved.
126221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
127221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * The portions of the attached software ("Contribution") is developed by
128221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * Nokia Corporation and is licensed pursuant to the OpenSSL open source
129221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * license.
130221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
131221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * The Contribution, originally written by Mika Kousa and Pasi Eronen of
132221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
133221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * support (see RFC 4279) to OpenSSL.
134221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
135221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * No patent licenses or other rights except those expressly stated in
136221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * the OpenSSL open source license shall be deemed granted or received
137221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * expressly, by implication, estoppel, or otherwise.
138221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
139221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * No assurances are provided by Nokia that the Contribution does not
140221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * infringe the patent or other intellectual property rights of any third
141221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * party or that the license provides you with all the necessary rights
142221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * to make use of the Contribution.
143221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
144221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
145221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
146221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
147221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
148221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * OTHERWISE.
149221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom */
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h>
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/objects.h>
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "ssl_locl.h"
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "kssl_lcl.h"
155221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_TLSEXT
156221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_EC
157221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#include "../crypto/ec/ec_lcl.h"
158221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif /* OPENSSL_NO_EC */
159221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif /* OPENSSL_NO_TLSEXT */
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/md5.h>
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/dh.h>
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT;
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SSL3_NUM_CIPHERS	(sizeof(ssl3_ciphers)/sizeof(SSL_CIPHER))
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* list of available SSLv3 ciphers (sorted by id) */
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
171221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The RSA ciphers */
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 01 */
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_NULL_MD5,
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_NULL_MD5,
178221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
179221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
180221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eNULL,
181221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
182221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_STRONG_NONE,
184221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
188221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 02 */
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_NULL_SHA,
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_NULL_SHA,
194221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
195221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
196221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eNULL,
197221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
198221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
199e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
200221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
204221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 03 */
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_RC4_40_MD5,
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_RC4_40_MD5,
210221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
211221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
212221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
213221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
214221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
216221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
220221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 04 */
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_RC4_128_MD5,
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_RC4_128_MD5,
226221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
227221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
228221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
229221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
230221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
232221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
236221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 05 */
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_RC4_128_SHA,
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_RC4_128_SHA,
242221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
243221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
244221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
245221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
246221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
248221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
252221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 06 */
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_RC2_40_MD5,
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_RC2_40_MD5,
258221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
259221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
260221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC2,
261221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
262221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
264221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
268221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 07 */
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_IDEA_128_SHA,
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_IDEA_128_SHA,
275221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
276221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
277221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_IDEA,
278221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
279221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
281221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
286221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 08 */
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_DES_40_CBC_SHA,
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_DES_40_CBC_SHA,
292221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
293221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
294221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
295221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
296221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
298221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
302221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 09 */
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_DES_64_CBC_SHA,
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_DES_64_CBC_SHA,
308221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
309221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
310221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
311221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
312221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
314221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
318221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 0A */
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_RSA_DES_192_CBC3_SHA,
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_RSA_DES_192_CBC3_SHA,
324221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
325221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
326221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
327221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
328221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
329e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
330221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
331c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
334221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The DH ciphers */
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 0B */
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_DH_DSS_DES_40_CBC_SHA,
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_DH_DSS_DES_40_CBC_SHA,
341221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
342221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
343221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
344221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
345221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
347221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
351221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 0C */
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
354221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_DH_DSS_DES_64_CBC_SHA,
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_DH_DSS_DES_64_CBC_SHA,
357221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
358221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
359221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
360221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
361221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
363221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
367221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 0D */
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
370221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_DH_DSS_DES_192_CBC3_SHA,
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_DH_DSS_DES_192_CBC3_SHA,
373221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
374221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
375221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
376221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
377221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
378e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
379221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
380c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
383221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 0E */
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
386221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_DH_RSA_DES_40_CBC_SHA,
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_DH_RSA_DES_40_CBC_SHA,
389221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
390221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
391221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
392221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
393221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
395221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
399221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 0F */
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
402221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_DH_RSA_DES_64_CBC_SHA,
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_DH_RSA_DES_64_CBC_SHA,
405221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
406221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
407221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
408221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
409221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
411221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
415221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 10 */
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
418221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_DH_RSA_DES_192_CBC3_SHA,
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_DH_RSA_DES_192_CBC3_SHA,
421221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
422221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
423221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
424221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
425221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
426e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
427221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
428c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The Ephemeral DH ciphers */
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 11 */
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_EDH_DSS_DES_40_CBC_SHA,
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_EDH_DSS_DES_40_CBC_SHA,
438221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
439221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
440221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
441221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
442221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
444221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
448221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 12 */
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_EDH_DSS_DES_64_CBC_SHA,
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_EDH_DSS_DES_64_CBC_SHA,
454221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
455221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
456221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
457221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
458221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
460221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
464221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 13 */
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA,
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_EDH_DSS_DES_192_CBC3_SHA,
470221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
471221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
472221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
473221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
474221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
475e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
476221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
477c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
480221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 14 */
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_EDH_RSA_DES_40_CBC_SHA,
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_EDH_RSA_DES_40_CBC_SHA,
486221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
487221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
488221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
489221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
490221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
492221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
496221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 15 */
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_EDH_RSA_DES_64_CBC_SHA,
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_EDH_RSA_DES_64_CBC_SHA,
502221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
503221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
504221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
505221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
506221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
508221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
512221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 16 */
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA,
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_EDH_RSA_DES_192_CBC3_SHA,
518221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
519221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
520221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
521221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
522221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
523e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
524221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
525c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
528221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 17 */
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_ADH_RC4_40_MD5,
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_ADH_RC4_40_MD5,
534221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
535221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
536221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
537221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
538221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
540221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
544221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 18 */
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_ADH_RC4_128_MD5,
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_ADH_RC4_128_MD5,
550221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
551221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
552221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
553221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
554221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
556221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
560221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 19 */
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_ADH_DES_40_CBC_SHA,
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_ADH_DES_40_CBC_SHA,
566221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
567221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
568221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
569221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
570221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
572221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
576221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 1A */
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_ADH_DES_64_CBC_SHA,
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_ADH_DES_64_CBC_SHA,
582221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
583221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
584221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
585221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
586221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
588221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
592221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 1B */
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_ADH_DES_192_CBC_SHA,
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_ADH_DES_192_CBC_SHA,
598221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
599221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
600221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
601221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
602221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
603e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
604221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
605c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
609221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/* Fortezza ciphersuite from SSL 3.0 spec */
610221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if 0
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 1C */
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_FZA_DMS_NULL_SHA,
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_FZA_DMS_NULL_SHA,
616221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kFZA,
617221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aFZA,
618221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eNULL,
619221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
620221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_STRONG_NONE,
622221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 1D */
628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_FZA_DMS_FZA_SHA,
631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_FZA_DMS_FZA_SHA,
632221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kFZA,
633221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aFZA,
634221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eFZA,
635221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
636221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_STRONG_NONE,
638221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 1E */
644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_FZA_DMS_RC4_SHA,
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_FZA_DMS_RC4_SHA,
648221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kFZA,
649221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aFZA,
650221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
651221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
652221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
654221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_KRB5
661221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/* The Kerberos ciphers*/
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 1E */
663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_DES_64_CBC_SHA,
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_DES_64_CBC_SHA,
667221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
668221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
669221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
670221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
671221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
673221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 1F */
679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_DES_192_CBC3_SHA,
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_DES_192_CBC3_SHA,
683221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
684221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
685221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
686221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
687221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
688e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
689221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
690c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 20 */
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_RC4_128_SHA,
698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_RC4_128_SHA,
699221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
700221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
701221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
702221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
703221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
705221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 21 */
711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_IDEA_128_CBC_SHA,
714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_IDEA_128_CBC_SHA,
715221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
716221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
717221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_IDEA,
718221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
719221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
721221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 22 */
727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_DES_64_CBC_MD5,
730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_DES_64_CBC_MD5,
731221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
732221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
733221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
734221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
735221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_LOW,
737221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 23 */
743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_DES_192_CBC3_MD5,
746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_DES_192_CBC3_MD5,
747221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
748221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
749221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
750221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
751221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
753221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
754c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	168,
756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 24 */
759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_RC4_128_MD5,
762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_RC4_128_MD5,
763221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
764221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
765221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
766221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
767221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
769221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 25 */
775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_IDEA_128_CBC_MD5,
778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_IDEA_128_CBC_MD5,
779221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
780221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
781221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_IDEA,
782221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
783221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
785221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 26 */
791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_DES_40_CBC_SHA,
794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_DES_40_CBC_SHA,
795221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
796221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
797221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
798221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
799221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
801221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 27 */
807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_RC2_40_CBC_SHA,
810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_RC2_40_CBC_SHA,
811221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
812221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
813221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC2,
814221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
815221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
817221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 28 */
823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_RC4_40_SHA,
826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_RC4_40_SHA,
827221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
828221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
829221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
830221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
831221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
833221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 29 */
839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_DES_40_CBC_MD5,
842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_DES_40_CBC_MD5,
843221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
844221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
845221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
846221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
847221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
849221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	56,
852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 2A */
855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_RC2_40_CBC_MD5,
858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_RC2_40_CBC_MD5,
859221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
860221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
861221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC2,
862221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
863221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
865221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 2B */
871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_TXT_KRB5_RC4_40_MD5,
874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_CK_KRB5_RC4_40_MD5,
875221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kKRB5,
876221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aKRB5,
877221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
878221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
879221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SSLV3,
880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_EXPORT|SSL_EXP40,
881221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	40,
883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif	/* OPENSSL_NO_KRB5 */
886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* New AES ciphersuites */
888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 2F */
889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_RSA_WITH_AES_128_SHA,
892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_RSA_WITH_AES_128_SHA,
893221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
894221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
895221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
896221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
897221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
898e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
899221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 30 */
904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_DSS_WITH_AES_128_SHA,
907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_DSS_WITH_AES_128_SHA,
908221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
909221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
910221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
911221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
912221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
913e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
914221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 31 */
919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_RSA_WITH_AES_128_SHA,
922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_RSA_WITH_AES_128_SHA,
923221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
924221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
925221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
926221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
927221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
928e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
929221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 32 */
934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
938221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
939221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
940221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
941221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
942221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
943e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
944221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 33 */
949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,
952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_RSA_WITH_AES_128_SHA,
953221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
954221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
955221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
956221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
957221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
958e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
959221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 34 */
964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_ADH_WITH_AES_128_SHA,
967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_ADH_WITH_AES_128_SHA,
968221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
969221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
970221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
971221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
972221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
973e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
974221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 35 */
980656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
981656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_RSA_WITH_AES_256_SHA,
983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_RSA_WITH_AES_256_SHA,
984221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
985221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
986221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
987221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
988221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
989e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
990221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
991656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 36 */
995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0,
997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_DSS_WITH_AES_256_SHA,
998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_DSS_WITH_AES_256_SHA,
999221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
1000221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1001221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
1002221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1003221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1004e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1005221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1007656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1008656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1009221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1010656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 37 */
1011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1012221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
1013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_RSA_WITH_AES_256_SHA,
1014656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_RSA_WITH_AES_256_SHA,
1015221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
1016221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1017221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
1018221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1019221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1020e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1021221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1023656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1025221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 38 */
1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,
1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_DSS_WITH_AES_256_SHA,
1031221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1032221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
1033221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
1034221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1035221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1036e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1037221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1040656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1041221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Cipher 39 */
1043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,
1046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_RSA_WITH_AES_256_SHA,
1047221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1048221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1049221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
1050221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1051221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1052e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1053221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1055656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1057221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 3A */
1059656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_ADH_WITH_AES_256_SHA,
1062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_ADH_WITH_AES_256_SHA,
1063221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1064221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
1065221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
1066221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1067221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1068e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1069221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1071656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1072656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1073656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1074392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* TLS v1.2 ciphersuites */
1075392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 3B */
1076392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1077392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1078392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_RSA_WITH_NULL_SHA256,
1079392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_RSA_WITH_NULL_SHA256,
1080392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kRSA,
1081392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1082392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_eNULL,
1083392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1084a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1085392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
1086392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1087392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
1088392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
1089392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1090392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1091392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 3C */
1092392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1093392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1094392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_RSA_WITH_AES_128_SHA256,
1095392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_RSA_WITH_AES_128_SHA256,
1096392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kRSA,
1097392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1098392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
1099392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1100a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1101392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1102392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1103392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1104392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1105392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1106392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1107392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 3D */
1108392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1109392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1110392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_RSA_WITH_AES_256_SHA256,
1111392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_RSA_WITH_AES_256_SHA256,
1112392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kRSA,
1113392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1114392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
1115392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1116a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1117392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1118392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1119392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1120392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1121392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1122392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1123392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 3E */
1124392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1125392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
1126392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_DSS_WITH_AES_128_SHA256,
1127392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_DSS_WITH_AES_128_SHA256,
112804ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kDHd,
1129392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1130392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
1131392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1132a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1133392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1134392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1135392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1136392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1137392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1138392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1139392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 3F */
1140392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1141392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
1142392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_RSA_WITH_AES_128_SHA256,
1143392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_RSA_WITH_AES_128_SHA256,
1144392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kDHr,
1145392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1146392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
1147392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1148a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1149392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1150392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1151392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1152392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1153392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1154392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1155392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 40 */
1156392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1157392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1158392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256,
1159392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_DSS_WITH_AES_128_SHA256,
1160392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1161392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDSS,
1162392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
1163392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1164a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1165392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1166392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1167392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1168392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1169392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1170392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
1172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Camellia ciphersuites from RFC4132 (128-bit portion) */
1173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 41 */
1175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA,
1178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA,
1179221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
1180221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1181221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA128,
1182221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1183221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1185221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1189221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 42 */
1191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0, /* not implemented (non-ephemeral DH) */
1193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,
1194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,
1195221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
1196221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1197221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA128,
1198221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1199221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1201221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1205221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 43 */
1207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0, /* not implemented (non-ephemeral DH) */
1209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,
1210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,
1211221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
1212221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1213221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA128,
1214221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1215221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1217221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1221221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 44 */
1223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
1226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
1227221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1228221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
1229221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA128,
1230221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1231221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1233221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1237221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 45 */
1239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
1242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
1243221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1244221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1245221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA128,
1246221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1247221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1249221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1253221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 46 */
1255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA,
1258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA,
1259221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1260221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
1261221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA128,
1262221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1263221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1265221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* OPENSSL_NO_CAMELLIA */
1270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES
1272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* New TLS Export CipherSuites from expired ID */
1273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0
1274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 60 */
1275221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1276221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1277221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5,
1278221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5,
1279221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
1280221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1281221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
1282221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
1283221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1284221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_EXPORT|SSL_EXP56,
1285221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1286221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1287221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1288221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1289221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 61 */
1291221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1292221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1293221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5,
1294221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5,
1295221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
1296221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1297221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC2,
1298221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
1299221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1300221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_EXPORT|SSL_EXP56,
1301221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1302221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1303221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1304221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1306221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 62 */
1308221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1309221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1310221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA,
1311221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA,
1312221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
1313221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1314221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
1315221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1316221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1317221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_EXPORT|SSL_EXP56,
1318221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1319221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1320221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1321221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1322221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 63 */
1324221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1325221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1326221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA,
1327221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA,
1328221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1329221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
1330221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_DES,
1331221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1332221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1333221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_EXPORT|SSL_EXP56,
1334221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1335221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1336221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1337221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1338221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 64 */
1340221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1341221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1342221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA,
1343221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA,
1344221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
1345221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1346221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
1347221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1348221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1349221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_EXPORT|SSL_EXP56,
1350221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1351221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1352221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1353221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1354221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 65 */
1356221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1357221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1358221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA,
1359221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA,
1360221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1361221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
1362221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
1363221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1364221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1365221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_EXPORT|SSL_EXP56,
1366221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1367221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	56,
1368221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1369221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1370221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 66 */
1372221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1373221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1374221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA,
1375221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_DHE_DSS_WITH_RC4_128_SHA,
1376221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1377221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
1378221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
1379221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1380221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1381221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_MEDIUM,
1382221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1383221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1384221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1385221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1387392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1388392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* TLS v1.2 ciphersuites */
1389392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 67 */
1390392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1391392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1392392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256,
1393392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_RSA_WITH_AES_128_SHA256,
1394392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1395392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1396392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
1397392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1398a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1399392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1400392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1401392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1402392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1403392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1404392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1405392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 68 */
1406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1407392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
1408392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_DSS_WITH_AES_256_SHA256,
1409392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_DSS_WITH_AES_256_SHA256,
141004ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kDHd,
1411392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1412392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
1413392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1414a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1415392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1416392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1417392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1418392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1419392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1420392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1421392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 69 */
1422392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1423392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0, /* not implemented (non-ephemeral DH) */
1424392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_RSA_WITH_AES_256_SHA256,
1425392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_RSA_WITH_AES_256_SHA256,
1426392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kDHr,
1427392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1428392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
1429392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1430a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1431392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1432392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1433392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1434392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1435392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1436392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1437392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 6A */
1438392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1439392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1440392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256,
1441392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_DSS_WITH_AES_256_SHA256,
1442392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1443392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDSS,
1444392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
1445392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1446a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1447392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1448392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1449392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1450392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1451392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1452392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1453392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 6B */
1454392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1455392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1456392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256,
1457392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_RSA_WITH_AES_256_SHA256,
1458392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1459392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1460392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
1461392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1462a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1463392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1464392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1465392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1466392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1467392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1468392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1469392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 6C */
1470392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1471392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1472392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ADH_WITH_AES_128_SHA256,
1473392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ADH_WITH_AES_128_SHA256,
1474392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1475392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
1476392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
1477392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1478a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1479392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1480392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1481392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1482392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1483392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1484392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1485392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 6D */
1486392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1487392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1488392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ADH_WITH_AES_256_SHA256,
1489392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ADH_WITH_AES_256_SHA256,
1490392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1491392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
1492392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
1493392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
1494a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom	SSL_TLSV1_2,
1495392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1496392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1497392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1498392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1499392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1500392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1501392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* GOST Ciphersuites */
1502392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1503221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1504221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1505221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST94-GOST89-GOST89",
1506221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x3000080,
1507221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kGOST,
1508221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aGOST94,
1509221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eGOST2814789CNT,
1510221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_GOST89MAC,
1511221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1512221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
1513221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC,
1514221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
1515221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256
1516221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1517221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1518221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1519221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST2001-GOST89-GOST89",
1520221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x3000081,
1521221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kGOST,
1522221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aGOST01,
1523221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eGOST2814789CNT,
1524221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_GOST89MAC,
1525221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1526221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
1527221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC,
1528221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
1529221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256
1530221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1531221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1532221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1533221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST94-NULL-GOST94",
1534221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x3000082,
1535221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kGOST,
1536221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aGOST94,
1537221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eNULL,
1538221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_GOST94,
1539221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1540221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE,
1541221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94,
1542221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0,
1543221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0
1544221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1545221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1546221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1547221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST2001-NULL-GOST94",
1548221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x3000083,
1549221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kGOST,
1550221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aGOST01,
1551221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eNULL,
1552221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_GOST94,
1553221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1554221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE,
1555221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94,
1556221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0,
1557221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0
1558221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
1561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Camellia ciphersuites from RFC4132 (256-bit portion) */
1562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 84 */
1564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA,
1567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA,
1568221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
1569221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1570221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA256,
1571221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1572221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1574221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 85 */
1579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0, /* not implemented (non-ephemeral DH) */
1581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,
1582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,
1583221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
1584221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1585221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA256,
1586221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1587221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1589221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1593221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 86 */
1595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0, /* not implemented (non-ephemeral DH) */
1597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,
1598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,
1599221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
1600221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1601221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA256,
1602221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1603221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1605221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1609221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 87 */
1611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
1614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
1615221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1616221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
1617221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA256,
1618221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1619221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1621221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1625221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 88 */
1627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
1630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
1631221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1632221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1633221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA256,
1634221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1635221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1637221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1641221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 89 */
1643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA,
1646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA,
1647221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1648221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
1649221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CAMELLIA256,
1650221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1651221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_HIGH,
1653221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	256,
1656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* OPENSSL_NO_CAMELLIA */
1658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1659221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_PSK
1660221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	/* Cipher 8A */
1661221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1662221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1663221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_PSK_WITH_RC4_128_SHA,
1664221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_PSK_WITH_RC4_128_SHA,
1665221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kPSK,
1666221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aPSK,
1667221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
1668221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1669221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1670221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_MEDIUM,
1671221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1672221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1673221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1674221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1675221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1676221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	/* Cipher 8B */
1677221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1678221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1679221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA,
1680221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA,
1681221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kPSK,
1682221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aPSK,
1683221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
1684221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1685221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1686ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1687221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1688c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
1689221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	168,
1690221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1691221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1692221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	/* Cipher 8C */
1693221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1694221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1695221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_PSK_WITH_AES_128_CBC_SHA,
1696221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_PSK_WITH_AES_128_CBC_SHA,
1697221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kPSK,
1698221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aPSK,
1699221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
1700221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1701221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1702ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1703221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1704221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1705221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1706221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1707221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1708221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	/* Cipher 8D */
1709221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1710221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1711221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_PSK_WITH_AES_256_CBC_SHA,
1712221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_PSK_WITH_AES_256_CBC_SHA,
1713221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kPSK,
1714221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aPSK,
1715221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
1716221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1717221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1718ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1719221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1720221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
1721221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
1722221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1723221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif  /* OPENSSL_NO_PSK */
1724221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
1726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* SEED ciphersuites from RFC4162 */
1727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 96 */
1729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_RSA_WITH_SEED_SHA,
1732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_RSA_WITH_SEED_SHA,
1733221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
1734221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1735221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SEED,
1736221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1737221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
1739221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 97 */
1745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0, /* not implemented (non-ephemeral DH) */
1747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_DSS_WITH_SEED_SHA,
1748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_DSS_WITH_SEED_SHA,
1749221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHd,
1750221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1751221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SEED,
1752221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1753221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
1755221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 98 */
1761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0, /* not implemented (non-ephemeral DH) */
1763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DH_RSA_WITH_SEED_SHA,
1764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DH_RSA_WITH_SEED_SHA,
1765221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kDHr,
1766221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDH,
1767221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SEED,
1768221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1769221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
1771221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 99 */
1777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_DSS_WITH_SEED_SHA,
1780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_DSS_WITH_SEED_SHA,
1781221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1782221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aDSS,
1783221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SEED,
1784221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1785221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
1787221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 9A */
1793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_DHE_RSA_WITH_SEED_SHA,
1796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_DHE_RSA_WITH_SEED_SHA,
1797221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1798221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
1799221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SEED,
1800221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1801221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
1803221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher 9B */
1809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
1810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1,
1811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_TXT_ADH_WITH_SEED_SHA,
1812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	TLS1_CK_ADH_WITH_SEED_SHA,
1813221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEDH,
1814221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aNULL,
1815221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SEED,
1816221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
1817221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
1818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_NOT_EXP|SSL_MEDIUM,
1819221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	128,
1822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	},
1823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* OPENSSL_NO_SEED */
1825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1826392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* GCM ciphersuites from RFC5288 */
1827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1828392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 9C */
1829221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1830221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1831392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256,
1832392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_RSA_WITH_AES_128_GCM_SHA256,
1833392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kRSA,
1834392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1835392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
1836392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1837392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1838392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1839392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
1840221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1841221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1842221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1844392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 9D */
1845221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1846221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1847392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384,
1848392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_RSA_WITH_AES_256_GCM_SHA384,
1849392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kRSA,
1850392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1851392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
1852392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1853392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1854392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1855392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
1856392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1857392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1858221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1860392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 9E */
1861221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1862221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1863392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256,
1864392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256,
1865392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1866392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1867392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
1868392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1869392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1870392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1871392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
1872221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1873221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
1874221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1876392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher 9F */
1877221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1878221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1879392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384,
1880392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384,
1881392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1882392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
1883392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
1884392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1885392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1886392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1887392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
1888221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
1889221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
1890221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1892392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A0 */
1893221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1894221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0,
1895392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256,
1896392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256,
1897392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kDHr,
1898392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1899392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
1900392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1901392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1902392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1903392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
1904392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1905392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1906392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1907392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1908392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A1 */
1909392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1910221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0,
1911392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384,
1912392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384,
1913392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kDHr,
1914392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1915392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
1916392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1917392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1918392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1919392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
1920392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1921392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1922221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
1923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1924392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A2 */
1925221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
1926221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
1927392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256,
1928392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256,
1929392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1930392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDSS,
1931392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
1932392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1933392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1934392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1935392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
1936392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1937392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1938392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1939392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1940392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A3 */
1941392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1942392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1943392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384,
1944392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384,
1945392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1946392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDSS,
1947392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
1948392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1949392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1950392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1951392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
1952392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1953392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1954392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1955392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1956392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A4 */
1957392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1958392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
1959392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256,
1960392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256,
196104ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kDHd,
1962392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1963392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
1964392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1965392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1966392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1967392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
1968392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1969392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
1970392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1971392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1972392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A5 */
1973392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1974392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
1975392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384,
1976392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384,
197704ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kDHd,
1978392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDH,
1979392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
1980392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1981392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1982392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1983392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
1984392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1985392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
1986392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
1987392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
1988392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A6 */
1989392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
1990392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
1991392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256,
1992392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ADH_WITH_AES_128_GCM_SHA256,
1993392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
1994392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
1995392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
1996392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
1997392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
1998392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
1999392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2000392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2001392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2002392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2003392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2004392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher A7 */
2005392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2006392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2007392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384,
2008392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ADH_WITH_AES_256_GCM_SHA384,
2009392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEDH,
2010392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
2011392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
2012392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2013392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2014392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2015392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2016392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2017392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2018392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2019392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2020392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_ECDH
2021392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C001 */
2022392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2023392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2024392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA,
2025392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA,
2026392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2027392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2028392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_eNULL,
2029392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2030392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2031392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
2032392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2033392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2034392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2035392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2036392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2037392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C002 */
2038392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2039392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2040392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA,
2041392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA,
2042392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2043392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2044392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_RC4,
2045392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2046392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2047392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_MEDIUM,
2048392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2049392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2050392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2051392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2052392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2053392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C003 */
2054392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2055392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2056392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA,
2057392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA,
2058392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2059392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2060392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_3DES,
2061392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2062392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2063392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2064392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2065c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2066392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	168,
2067392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2068392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2069392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C004 */
2070392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2071392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2072392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
2073392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
2074392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2075392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2076392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2077392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2078392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2079392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2080392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2081392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2082392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2083392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2084392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2085392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C005 */
2086392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2087392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2088392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
2089392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
2090392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2091392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2092392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2093392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2094392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2095392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2096392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2097392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2098392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2099392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2100392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2101392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C006 */
2102392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2103392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2104392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA,
2105392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA,
2106392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2107392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDSA,
2108392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_eNULL,
2109392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2110392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2111392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
2112392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2113392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2114392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2115392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2116392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2117392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C007 */
2118392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2119392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2120392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA,
2121221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA,
2122221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2123221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDSA,
2124221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
2125221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2126221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2127221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_MEDIUM,
2128221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2129221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2130221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2131221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher C008 */
2134221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2135221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2136221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
2137221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
2138221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2139221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDSA,
2140221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
2141221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2142221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2143392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2144221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2145c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2146221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	168,
2147221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher C009 */
2150221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2151221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2152221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
2153221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
2154221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2155221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDSA,
2156221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
2157221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2158221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2159392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2160221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2161221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2162221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2163221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher C00A */
2166221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2167221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2168221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
2169221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
2170221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2171221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDSA,
2172221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
2173221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2174221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2175392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2176221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2177221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2178221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2179221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher C00B */
2182221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2183221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2184221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_NULL_SHA,
2185221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_NULL_SHA,
2186221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kECDHr,
2187221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDH,
2188221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eNULL,
2189221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2190221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2191392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
2192221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2193221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0,
2194221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0,
2195221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher C00C */
2198221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2199221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2200221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA,
2201221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA,
2202221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kECDHr,
2203221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDH,
2204221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_RC4,
2205221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2206221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2207221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_MEDIUM,
2208221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2209221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2210221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2211221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher C00D */
2214221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2215221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2216221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA,
2217221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA,
2218221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kECDHr,
2219221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDH,
2220221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_3DES,
2221221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2222221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2223392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2224221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2225c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2226221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	168,
2227221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Cipher C00E */
2230221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2231221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2232221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA,
2233221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA,
2234221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kECDHr,
2235221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aECDH,
2236221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
2237221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2238221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2239392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2240392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2241392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2242392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2243392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2244392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2245392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C00F */
2246392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2247392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2248392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA,
2249392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA,
2250392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHr,
2251392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2252392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2253392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2254392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2255392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2256392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2257392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2258392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2259392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2260392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2261392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C010 */
2262392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2263392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2264392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA,
2265392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_NULL_SHA,
2266392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2267392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2268392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_eNULL,
2269392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2270392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2271392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
2272392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2273392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2274392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2275392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2276392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2277392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C011 */
2278392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2279392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2280392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA,
2281392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA,
2282392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2283392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2284392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_RC4,
2285392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2286392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2287392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_MEDIUM,
2288392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2289392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2290392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2291392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2292392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2293392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C012 */
2294392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2295392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2296392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
2297392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
2298392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2299392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2300392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_3DES,
2301392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2302392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2303392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2304392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2305c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2306392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	168,
2307392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2308392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2309392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C013 */
2310392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2311392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2312392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,
2313392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA,
2314392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2315392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2316392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2317392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2318392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2319392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2320392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2321392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2322392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2323392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2324392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2325392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C014 */
2326392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2327392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2328392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,
2329392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA,
2330392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2331392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2332392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2333392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2334392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2335392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2336392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2337392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2338392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2339392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2340392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2341392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C015 */
2342392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2343392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2344392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_anon_WITH_NULL_SHA,
2345392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_anon_WITH_NULL_SHA,
2346392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2347392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
2348392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_eNULL,
2349392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2350392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2351392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
2352392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2353392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2354392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	0,
2355392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2356392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2357392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C016 */
2358392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2359392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2360392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA,
2361392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_anon_WITH_RC4_128_SHA,
2362392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2363392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
2364392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_RC4,
2365392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2366392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2367392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_MEDIUM,
2368392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2369392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2370392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2371392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2372392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2373392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C017 */
2374392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2375392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2376392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA,
2377392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA,
2378392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2379392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
2380392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_3DES,
2381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2382392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2383392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2384392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2385c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2386392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	168,
2387392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2388392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2389392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C018 */
2390392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2391392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2392392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA,
2393392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA,
2394392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2395392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
2396392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2397392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2398392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2399392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2400392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2401392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2402392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2403392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2404392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2405392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C019 */
2406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2407392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2408392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA,
2409392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA,
2410392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2411392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aNULL,
2412392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2413392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2414392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2415392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2416392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2417392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2418392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2419392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2420392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif	/* OPENSSL_NO_ECDH */
2421392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2422392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
2423392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C01A */
2424392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2425392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2426392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
2427392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
2428392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2429c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	SSL_aSRP,
2430392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_3DES,
2431392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2432392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2433392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2434392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2435c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2436392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	168,
2437392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2438392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2439392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C01B */
2440392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2441392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2442392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
2443392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
2444392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2445392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2446392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_3DES,
2447392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2448392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2449392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2450392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2451c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2452392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	168,
2453392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2454392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2455392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C01C */
2456392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2457392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2458392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
2459392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
2460392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2461392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDSS,
2462392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_3DES,
2463392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2464392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2465392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2466392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2467c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	112,
2468392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	168,
2469392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2470392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2471392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C01D */
2472392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2473392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2474392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA,
2475392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA,
2476392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2477c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	SSL_aSRP,
2478392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2479392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2480392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2481392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2482392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2483392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2484392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2485392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2486392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2487392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C01E */
2488392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2489392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2490392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
2491392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
2492392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2493392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2494392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2495392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2496392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2497392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2498392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2499392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2500392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2501392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2502392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2503392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C01F */
2504392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2505392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2506392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
2507392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
2508392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2509392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDSS,
2510392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2511392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA1,
2512392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1,
2513221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2514221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2515221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2516221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2517221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2519392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C020 */
2520221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2521221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2522392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA,
2523392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA,
2524392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2525c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root	SSL_aSRP,
2526221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
2527221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2528221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2529221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2530221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2531221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2532221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2533221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2535392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C021 */
2536221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2537221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2538392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
2539392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
2540392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2541221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
2542392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2543221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2544221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2545392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2546221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2547392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2548392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2549221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2551392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C022 */
2552221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2553221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2554392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
2555392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
2556392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kSRP,
2557392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aDSS,
2558392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2559221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_SHA1,
2560221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2561392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2562221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2563392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2564392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2565392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2566392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif  /* OPENSSL_NO_SRP */
2567392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_ECDH
2568392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2569392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* HMAC based TLS v1.2 ciphersuites from RFC5289 */
2570392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2571392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C023 */
2572392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2573392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2574392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256,
2575392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256,
2576392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kEECDH,
2577392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDSA,
2578392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2579392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
2580392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2581392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2582392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2583221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2584221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2585221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2587392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C024 */
2588221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2589221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2590392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384,
2591392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384,
2592221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2593392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDSA,
2594392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2595392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA384,
2596392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2597392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2598392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2599392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2600392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2601221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2603392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C025 */
2604221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2605221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2606392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256,
2607392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256,
2608392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2609392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2610392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2611392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
2612392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2613392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2614392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2615392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2616392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2617392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2618392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2619392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C026 */
2620392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2621392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2622392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384,
2623392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384,
2624392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2625392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2626392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2627392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA384,
2628392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2629392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2630392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2631392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2632392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2633392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2634392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2635392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C027 */
2636392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2637392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2638392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256,
2639392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256,
2640221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2641221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
2642221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES128,
2643392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
2644392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2645392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2646392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2647221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2648221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2649221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2651392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C028 */
2652221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2653221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2654392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384,
2655392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384,
2656221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2657221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
2658221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_AES256,
2659392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA384,
2660392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2661392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2662392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2663221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2664221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2665221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2667392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C029 */
2668221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2669221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2670392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256,
2671392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256,
267204ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kECDHr,
2673392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2674392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128,
2675392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA256,
2676392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2677392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2678392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2679392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2680392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2681221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2683392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C02A */
2684221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2685221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2686392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384,
2687392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384,
268804ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kECDHr,
2689392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2690392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256,
2691392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SHA384,
2692392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2693392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2694392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2695392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2696392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2697392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2698392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2699392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* GCM based TLS v1.2 ciphersuites from RFC5289 */
2700392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2701392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C02B */
2702392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2703392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2704392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
2705392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
2706221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2707392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDSA,
2708392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
2709392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2710392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2711392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2712392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2713221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2714221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2715221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2717392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C02C */
2718221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2719221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2720392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
2721392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
2722221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2723392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDSA,
2724392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
2725392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2726392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2727392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2728392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2729392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2730392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2731221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2733392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C02D */
2734221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2735221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2736392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
2737392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
2738392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2739392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2740392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
2741392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2742392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2743392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2744392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2745392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2746392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2747392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2748392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2749392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C02E */
2750392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2751392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2752392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
2753392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
2754392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_kECDHe,
2755392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2756392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
2757392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2758392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2759392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2760392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2761392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2762392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2763392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2764392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2765392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C02F */
2766392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2767392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2768392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
2769392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
2770221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2771392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2772392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
2773392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2774392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2775392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2776392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2777221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2778221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	128,
2779221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2781392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C030 */
2782221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2783221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2784392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
2785392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
2786221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kEECDH,
2787392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aRSA,
2788392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
2789392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2790392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2791392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2792392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2793221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2794221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2795221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2796392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2797392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C031 */
2798392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2799392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2800392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256,
2801392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256,
280204ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kECDHr,
2803392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2804392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES128GCM,
2805392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2806392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2807392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2808392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
2809392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2810392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	128,
2811392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2812392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2813392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	/* Cipher C032 */
2814392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
2815392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	1,
2816392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384,
2817392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384,
281804ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom	SSL_kECDHr,
2819392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_aECDH,
2820392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AES256GCM,
2821392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_AEAD,
2822392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_TLSV1_2,
2823392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
2824392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
2825392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2826392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	256,
2827392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	},
2828392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2829de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin#ifndef OPENSSL_NO_PSK
2830de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin    /* ECDH PSK ciphersuites from RFC 5489 */
283137da3e839dd053106842299f7192ce9c88207094Alex Klyubin	/* Cipher C035 */
2832de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	{
2833de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	1,
283437da3e839dd053106842299f7192ce9c88207094Alex Klyubin	TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA,
283537da3e839dd053106842299f7192ce9c88207094Alex Klyubin	TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA,
2836de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_kEECDH,
2837de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_aPSK,
2838de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_AES128,
283937da3e839dd053106842299f7192ce9c88207094Alex Klyubin	SSL_SHA1,
2840de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_TLSV1,
284137da3e839dd053106842299f7192ce9c88207094Alex Klyubin	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
284237da3e839dd053106842299f7192ce9c88207094Alex Klyubin	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2843de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	128,
2844de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	128,
2845de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	},
2846de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin
284737da3e839dd053106842299f7192ce9c88207094Alex Klyubin	/* Cipher C036 */
2848de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	{
2849de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	1,
285037da3e839dd053106842299f7192ce9c88207094Alex Klyubin	TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA,
285137da3e839dd053106842299f7192ce9c88207094Alex Klyubin	TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA,
2852de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_kEECDH,
2853de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_aPSK,
2854de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_AES256,
285537da3e839dd053106842299f7192ce9c88207094Alex Klyubin	SSL_SHA1,
2856de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	SSL_TLSV1,
285737da3e839dd053106842299f7192ce9c88207094Alex Klyubin	SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
285837da3e839dd053106842299f7192ce9c88207094Alex Klyubin	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2859de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	256,
2860de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	256,
2861de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin	},
2862de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin#endif /* OPENSSL_NO_PSK */
2863de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin
2864392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif /* OPENSSL_NO_ECDH */
2865392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
2866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2867221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifdef TEMP_GOST_TLS
2868221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/* Cipher FF00 */
2869221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2870221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2871221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST-MD5",
2872221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x0300ff00,
2873221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
2874221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
2875221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eGOST2814789CNT,
2876221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_MD5,
2877221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2878221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2879221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2880221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2881221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2882221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2883221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2884221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2885221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST-GOST94",
2886221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x0300ff01,
2887221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
2888221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
2889221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eGOST2814789CNT,
2890221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_GOST94,
2891221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2892221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2893221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2894221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2895221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256
2896221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2897221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2898221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2899221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST-GOST89MAC",
2900221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x0300ff02,
2901221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
2902221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
2903221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eGOST2814789CNT,
2904221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_GOST89MAC,
2905221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2906221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2907221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2908221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2909221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256
2910221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2911221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
2912221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	1,
2913221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	"GOST-GOST89STREAM",
2914221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	0x0300ff03,
2915221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_kRSA,
2916221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_aRSA,
2917221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_eGOST2814789CNT,
2918221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_GOST89MAC,
2919221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_TLSV1,
2920221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_NOT_EXP|SSL_HIGH,
2921221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF|TLS1_STREAM_MAC,
2922221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256,
2923221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	256
2924221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	},
2925221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
2926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* end of list */
2928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
2929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSSL3_ENC_METHOD SSLv3_enc_data={
2931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_enc,
2932221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	n_ssl3_mac,
2933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_setup_key_block,
2934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_generate_master_secret,
2935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_change_cipher_state,
2936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_final_finish_mac,
2937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH,
2938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_cert_verify_mac,
2939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_MD_CLIENT_FINISHED_CONST,4,
2940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_MD_SERVER_FINISHED_CONST,4,
2941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_alert_code,
2942392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	(int (*)(SSL *, unsigned char *, size_t, const char *,
2943392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		 size_t, const unsigned char *, size_t,
2944392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		 int use_context))ssl_undefined_function,
2945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
2946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectlong ssl3_default_timeout(void)
2948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* 2 hours, the 24 hours mentioned in the SSLv3 spec
2950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * is way too long for http, the cache would over fill */
2951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(60*60*2);
2952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2953656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_num_ciphers(void)
2955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(SSL3_NUM_CIPHERS);
2957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2958656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2959221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst SSL_CIPHER *ssl3_get_cipher(unsigned int u)
2960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (u < SSL3_NUM_CIPHERS)
2962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(&(ssl3_ciphers[SSL3_NUM_CIPHERS-1-u]));
2963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
2964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(NULL);
2965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_pending(const SSL *s)
2968656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->rstate == SSL_ST_READ_BODY)
2970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return 0;
2971656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return (s->s3->rrec.type == SSL3_RT_APPLICATION_DATA) ? s->s3->rrec.length : 0;
2973656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_new(SSL *s)
2976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL3_STATE *s3;
2978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((s3=OPENSSL_malloc(sizeof *s3)) == NULL) goto err;
2980656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(s3,0,sizeof *s3);
2981221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	memset(s3->rrec.seq_num,0,sizeof(s3->rrec.seq_num));
2982221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	memset(s3->wrec.seq_num,0,sizeof(s3->wrec.seq_num));
2983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2984656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3=s3;
2985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2986392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
2987392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SRP_CTX_init(s);
2988392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
298945bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley#if !defined(OPENSSL_NO_TLSEXT)
299045bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	s->tlsext_channel_id_enabled = s->ctx->tlsext_channel_id_enabled;
299145bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	if (s->ctx->tlsext_channel_id_private)
299245bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		s->tlsext_channel_id_private = EVP_PKEY_dup(s->ctx->tlsext_channel_id_private);
299345bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley#endif
2994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->method->ssl_clear(s);
2995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(1);
2996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecterr:
2997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(0);
2998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3000656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid ssl3_free(SSL *s)
3001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if(s == NULL)
3003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    return;
3004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3005221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifdef TLSEXT_TYPE_opaque_prf_input
3006221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->client_opaque_prf_input != NULL)
3007221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		OPENSSL_free(s->s3->client_opaque_prf_input);
3008221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->server_opaque_prf_input != NULL)
3009221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		OPENSSL_free(s->s3->server_opaque_prf_input);
3010221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
3011221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3012656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_cleanup_key_block(s);
3013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->rbuf.buf != NULL)
3014221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		ssl3_release_read_buffer(s);
3015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->wbuf.buf != NULL)
3016221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		ssl3_release_write_buffer(s);
3017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->rrec.comp != NULL)
3018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		OPENSSL_free(s->s3->rrec.comp);
3019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
3020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->tmp.dh != NULL)
3021656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		DH_free(s->s3->tmp.dh);
3022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3023656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
3024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->tmp.ecdh != NULL)
3025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		EC_KEY_free(s->s3->tmp.ecdh);
3026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->tmp.ca_names != NULL)
3029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
3030221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->handshake_buffer) {
3031221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		BIO_free(s->s3->handshake_buffer);
3032221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	}
3033221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->handshake_dgst) ssl3_free_digest_list(s);
3034ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root#ifndef OPENSSL_NO_TLSEXT
3035ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root	if (s->s3->alpn_selected)
3036ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root		OPENSSL_free(s->s3->alpn_selected);
3037ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root#endif
3038ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root
3039392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
3040392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	SSL_SRP_CTX_free(s);
3041392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
3042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_cleanse(s->s3,sizeof *s->s3);
3043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_free(s->s3);
3044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3=NULL;
3045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid ssl3_clear(SSL *s)
3048656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char *rp,*wp;
3050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	size_t rlen, wlen;
30517b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom	int init_extra;
3052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3053221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifdef TLSEXT_TYPE_opaque_prf_input
3054221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->client_opaque_prf_input != NULL)
3055221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		OPENSSL_free(s->s3->client_opaque_prf_input);
3056221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	s->s3->client_opaque_prf_input = NULL;
3057221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->server_opaque_prf_input != NULL)
3058221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		OPENSSL_free(s->s3->server_opaque_prf_input);
3059221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	s->s3->server_opaque_prf_input = NULL;
3060221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
3061221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl3_cleanup_key_block(s);
3063656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->tmp.ca_names != NULL)
3064656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
3065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->rrec.comp != NULL)
3067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		OPENSSL_free(s->s3->rrec.comp);
3069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->s3->rrec.comp=NULL;
3070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3071656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
3072656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->tmp.dh != NULL)
3073ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom		{
3074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		DH_free(s->s3->tmp.dh);
3075ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom		s->s3->tmp.dh = NULL;
3076ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom		}
3077656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3078656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
3079656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->tmp.ecdh != NULL)
3080ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom		{
3081656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		EC_KEY_free(s->s3->tmp.ecdh);
3082ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom		s->s3->tmp.ecdh = NULL;
3083ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom		}
3084656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3085ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root#ifndef OPENSSL_NO_TLSEXT
3086ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root#ifndef OPENSSL_NO_EC
3087ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root	s->s3->is_probably_safari = 0;
3088ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root#endif /* !OPENSSL_NO_EC */
3089ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root#endif /* !OPENSSL_NO_TLSEXT */
3090656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3091656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rp = s->s3->rbuf.buf;
3092656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	wp = s->s3->wbuf.buf;
3093656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rlen = s->s3->rbuf.len;
3094656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 	wlen = s->s3->wbuf.len;
30957b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom	init_extra = s->s3->init_extra;
3096221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->handshake_buffer) {
3097221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		BIO_free(s->s3->handshake_buffer);
3098221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		s->s3->handshake_buffer = NULL;
3099221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	}
3100221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->s3->handshake_dgst) {
3101221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		ssl3_free_digest_list(s);
3102221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	}
3103ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root
3104ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root#if !defined(OPENSSL_NO_TLSEXT)
3105ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root	if (s->s3->alpn_selected)
3106ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root		{
3107ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root		free(s->s3->alpn_selected);
3108ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root		s->s3->alpn_selected = NULL;
3109ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root		}
3110ee53ab1212ec75db6e1704a6909c45c93dd411c3Kenny Root#endif
3111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(s->s3,0,sizeof *s->s3);
3112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->rbuf.buf = rp;
3113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->wbuf.buf = wp;
3114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->rbuf.len = rlen;
3115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 	s->s3->wbuf.len = wlen;
31167b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom	s->s3->init_extra = init_extra;
3117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ssl_free_wbio_buffer(s);
3119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->packet_length=0;
3121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->renegotiate=0;
3122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->total_renegotiations=0;
3123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->num_renegotiations=0;
3124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->in_read_app_data=0;
3125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->version=SSL3_VERSION;
3126bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen
3127bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen#if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG)
3128bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen	if (s->next_proto_negotiated)
3129bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen		{
3130bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen		OPENSSL_free(s->next_proto_negotiated);
3131bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen		s->next_proto_negotiated = NULL;
3132bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen		s->next_proto_negotiated_len = 0;
3133bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen		}
3134bf9ac266e34f910ace31880ea92b8deaf6212aa6Kristian Monsen#endif
313545bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley
313645bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley#if !defined(OPENSSL_NO_TLSEXT)
313745bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	s->s3->tlsext_channel_id_valid = 0;
313845bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley#endif
3139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3141392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
3142392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromstatic char * MS_CALLBACK srp_password_from_info_cb(SSL *s, void *arg)
3143392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
3144392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	return BUF_strdup(s->srp_ctx.info) ;
3145392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	}
3146392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
3147392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectlong ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
3149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ret=0;
3151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_RSA)
3153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (
3154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
3155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    cmd == SSL_CTRL_SET_TMP_RSA ||
3156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    cmd == SSL_CTRL_SET_TMP_RSA_CB ||
3157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
3159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    cmd == SSL_CTRL_SET_TMP_DH ||
3160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    cmd == SSL_CTRL_SET_TMP_DH_CB ||
3161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		0)
3163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!ssl_cert_inst(&s->cert))
3165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    	{
3166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTRL, ERR_R_MALLOC_FAILURE);
3167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(0);
3168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	switch (cmd)
3173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_SESSION_REUSED:
3175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=s->hit;
3176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_CLIENT_CERT_REQUEST:
3178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_NUM_RENEGOTIATIONS:
3180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=s->s3->num_renegotiations;
3181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS:
3183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=s->s3->num_renegotiations;
3184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->s3->num_renegotiations=0;
3185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_TOTAL_RENEGOTIATIONS:
3187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=s->s3->total_renegotiations;
3188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_FLAGS:
3190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=(int)(s->s3->flags);
3191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
3193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_NEED_TMP_RSA:
3194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((s->cert != NULL) && (s->cert->rsa_tmp == NULL) &&
3195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		    ((s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL) ||
3196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     (EVP_PKEY_size(s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey) > (512/8))))
3197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret = 1;
3198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_RSA:
3200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			RSA *rsa = (RSA *)parg;
3202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (rsa == NULL)
3203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
3205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return(ret);
3206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if ((rsa = RSAPrivateKey_dup(rsa)) == NULL)
3208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTRL, ERR_R_RSA_LIB);
3210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return(ret);
3211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (s->cert->rsa_tmp != NULL)
3213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				RSA_free(s->cert->rsa_tmp);
3214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->cert->rsa_tmp = rsa;
3215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret = 1;
3216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_RSA_CB:
3219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
3221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(ret);
3222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
3226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_DH:
3227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			DH *dh = (DH *)parg;
3229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (dh == NULL)
3230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
3232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return(ret);
3233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if ((dh = DHparams_dup(dh)) == NULL)
3235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB);
3237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return(ret);
3238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (!(s->options & SSL_OP_SINGLE_DH_USE))
3240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (!DH_generate_key(dh))
3242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
3243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					DH_free(dh);
3244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB);
3245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					return(ret);
3246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
3247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (s->cert->dh_tmp != NULL)
3249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				DH_free(s->cert->dh_tmp);
3250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->cert->dh_tmp = dh;
3251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret = 1;
3252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_DH_CB:
3255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
3257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(ret);
3258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
3262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_ECDH:
3263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		EC_KEY *ecdh = NULL;
3265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (parg == NULL)
3267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
3269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(ret);
3270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!EC_KEY_up_ref((EC_KEY *)parg))
3272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTRL,ERR_R_ECDH_LIB);
3274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(ret);
3275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh = (EC_KEY *)parg;
3277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!(s->options & SSL_OP_SINGLE_ECDH_USE))
3278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (!EC_KEY_generate_key(ecdh))
3280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EC_KEY_free(ecdh);
3282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTRL,ERR_R_ECDH_LIB);
3283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return(ret);
3284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (s->cert->ecdh_tmp != NULL)
3287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			EC_KEY_free(s->cert->ecdh_tmp);
3288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->cert->ecdh_tmp = ecdh;
3289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_ECDH_CB:
3293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
3295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(ret);
3296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* !OPENSSL_NO_ECDH */
3299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_TLSEXT
3300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_HOSTNAME:
3301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 		if (larg == TLSEXT_NAMETYPE_host_name)
3302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (s->tlsext_hostname != NULL)
3304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				OPENSSL_free(s->tlsext_hostname);
3305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->tlsext_hostname = NULL;
3306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret = 1;
3308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (parg == NULL)
3309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				break;
3310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strlen((char *)parg) > TLSEXT_MAXLEN_host_name)
3311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAME);
3313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return 0;
3314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if ((s->tlsext_hostname = BUF_strdup((char *)parg)) == NULL)
3316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTRL, ERR_R_INTERNAL_ERROR);
3318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return 0;
3319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
3322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE);
3324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return 0;
3325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 		break;
3327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_DEBUG_ARG:
3328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->tlsext_debug_arg=parg;
3329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3331221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3332221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifdef TLSEXT_TYPE_opaque_prf_input
3333221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT:
3334221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (larg > 12288) /* actual internal limit is 2^16 for the complete hello message
3335221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		                   * (including the cert chain and everything) */
3336221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
3337221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			SSLerr(SSL_F_SSL3_CTRL, SSL_R_OPAQUE_PRF_INPUT_TOO_LONG);
3338221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			break;
3339221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
3340221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (s->tlsext_opaque_prf_input != NULL)
3341221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			OPENSSL_free(s->tlsext_opaque_prf_input);
3342221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if ((size_t)larg == 0)
3343221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			s->tlsext_opaque_prf_input = OPENSSL_malloc(1); /* dummy byte just to get non-NULL */
3344221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		else
3345221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			s->tlsext_opaque_prf_input = BUF_memdup(parg, (size_t)larg);
3346221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (s->tlsext_opaque_prf_input != NULL)
3347221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
3348221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			s->tlsext_opaque_prf_input_len = (size_t)larg;
3349221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ret = 1;
3350221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
3351221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		else
3352221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			s->tlsext_opaque_prf_input_len = 0;
3353221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		break;
3354221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
3355221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
3357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->tlsext_status_type=larg;
3358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS:
3362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		*(STACK_OF(X509_EXTENSION) **)parg = s->tlsext_ocsp_exts;
3363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS:
3367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->tlsext_ocsp_exts = parg;
3368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS:
3372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		*(STACK_OF(OCSP_RESPID) **)parg = s->tlsext_ocsp_ids;
3373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS:
3377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->tlsext_ocsp_ids = parg;
3378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP:
3382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		*(unsigned char **)parg = s->tlsext_ocsp_resp;
3383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return s->tlsext_ocsp_resplen;
3384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP:
3386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (s->tlsext_ocsp_resp)
3387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			OPENSSL_free(s->tlsext_ocsp_resp);
3388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->tlsext_ocsp_resp = parg;
3389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->tlsext_ocsp_resplen = larg;
3390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret = 1;
3391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3393392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_HEARTBEATS
3394392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_TLS_EXT_SEND_HEARTBEAT:
3395392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER)
3396392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			ret = dtls1_heartbeat(s);
3397392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		else
3398392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			ret = tls1_heartbeat(s);
3399392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3400392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3401392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING:
3402392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ret = s->tlsext_hb_pending;
3403392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3404392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3405392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS:
3406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if (larg)
3407392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			s->tlsext_heartbeat |= SSL_TLSEXT_HB_DONT_RECV_REQUESTS;
3408392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		else
3409392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			s->tlsext_heartbeat &= ~SSL_TLSEXT_HB_DONT_RECV_REQUESTS;
3410392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ret = 1;
3411392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3412392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
341345bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	case SSL_CTRL_CHANNEL_ID:
341445bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		s->tlsext_channel_id_enabled = 1;
341545bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		ret = 1;
341645bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		break;
341745bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley
341845bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	case SSL_CTRL_SET_CHANNEL_ID:
341945bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (s->server)
342045bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			break;
342145bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		s->tlsext_channel_id_enabled = 1;
342245bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (EVP_PKEY_bits(parg) != 256)
342345bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			{
342445bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			SSLerr(SSL_F_SSL3_CTRL,SSL_R_CHANNEL_ID_NOT_P256);
342545bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			break;
342645bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			}
342745bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (s->tlsext_channel_id_private)
342845bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			EVP_PKEY_free(s->tlsext_channel_id_private);
342977c6be7176c48d2ce4d5979a84876d34204eedafKenny Root		s->tlsext_channel_id_private = EVP_PKEY_dup((EVP_PKEY*) parg);
343045bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		ret = 1;
343145bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		break;
343245bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley
343345bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	case SSL_CTRL_GET_CHANNEL_ID:
343445bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (!s->server)
343545bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			break;
343645bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (!s->s3->tlsext_channel_id_valid)
343745bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			break;
343845bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		memcpy(parg, s->s3->tlsext_channel_id, larg < 64 ? larg : 64);
343945bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		return 64;
3440392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* !OPENSSL_NO_TLSEXT */
34429a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller
34439a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller	case SSL_CTRL_CHECK_PROTO_VERSION:
34449a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		/* For library-internal use; checks that the current protocol
34459a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		 * is the highest enabled version (according to s->ctx->method,
34469a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		 * as version negotiation may have changed s->method). */
34479a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		if (s->version == s->ctx->method->version)
34489a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			return 1;
34499a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		/* Apparently we're using a version-flexible SSL_METHOD
34509a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		 * (not at its highest protocol version). */
34519a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		if (s->ctx->method->version == SSLv23_method()->version)
34529a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			{
34539a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller#if TLS_MAX_VERSION != TLS1_2_VERSION
34549a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller#  error Code needs update for SSLv23_method() support beyond TLS1_2_VERSION.
34559a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller#endif
34569a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			if (!(s->options & SSL_OP_NO_TLSv1_2))
34579a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller				return s->version == TLS1_2_VERSION;
34589a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			if (!(s->options & SSL_OP_NO_TLSv1_1))
34599a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller				return s->version == TLS1_1_VERSION;
34609a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			if (!(s->options & SSL_OP_NO_TLSv1))
34619a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller				return s->version == TLS1_VERSION;
34629a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			if (!(s->options & SSL_OP_NO_SSLv3))
34639a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller				return s->version == SSL3_VERSION;
34649a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			if (!(s->options & SSL_OP_NO_SSLv2))
34659a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller				return s->version == SSL2_VERSION;
34669a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller			}
34679a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller		return 0; /* Unexpected state; fail closed. */
34689a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller
3469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	default:
3470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
3473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectlong ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void))
3476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ret=0;
3478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_RSA)
3480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (
3481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
3482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    cmd == SSL_CTRL_SET_TMP_RSA_CB ||
3483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
3485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    cmd == SSL_CTRL_SET_TMP_DH_CB ||
3486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		0)
3488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!ssl_cert_inst(&s->cert))
3490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CALLBACK_CTRL, ERR_R_MALLOC_FAILURE);
3492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(0);
3493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	switch (cmd)
3498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
3500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_RSA_CB:
3501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp;
3503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
3507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_DH_CB:
3508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
3510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
3514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_ECDH_CB:
3515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp;
3517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_TLSEXT
3521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_DEBUG_CB:
3522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->tlsext_debug_cb=(void (*)(SSL *,int ,int,
3523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					unsigned char *, int, void *))fp;
3524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	default:
3527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
3530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectlong ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
3533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CERT *cert;
3535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cert=ctx->cert;
3537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	switch (cmd)
3539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
3541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_NEED_TMP_RSA:
3542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (	(cert->rsa_tmp == NULL) &&
3543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			((cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL) ||
3544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			 (EVP_PKEY_size(cert->pkeys[SSL_PKEY_RSA_ENC].privatekey) > (512/8)))
3545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			)
3546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(1);
3547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
3548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(0);
3549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* break; */
3550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_RSA:
3551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		RSA *rsa;
3553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		int i;
3554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rsa=(RSA *)parg;
3556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		i=1;
3557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (rsa == NULL)
3558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			i=0;
3559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
3560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if ((rsa=RSAPrivateKey_dup(rsa)) == NULL)
3562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				i=0;
3563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!i)
3565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_RSA_LIB);
3567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(0);
3568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
3570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (cert->rsa_tmp != NULL)
3572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				RSA_free(cert->rsa_tmp);
3573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			cert->rsa_tmp=rsa;
3574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return(1);
3575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* break; */
3578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_RSA_CB:
3579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
3581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
3582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
3586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_DH:
3587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		DH *new=NULL,*dh;
3589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		dh=(DH *)parg;
3591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((new=DHparams_dup(dh)) == NULL)
3592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB);
3594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return 0;
3595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!(ctx->options & SSL_OP_SINGLE_DH_USE))
3597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (!DH_generate_key(new))
3599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB);
3601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				DH_free(new);
3602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return 0;
3603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (cert->dh_tmp != NULL)
3606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			DH_free(cert->dh_tmp);
3607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		cert->dh_tmp=new;
3608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return 1;
3609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/*break; */
3611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_DH_CB:
3612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
3614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
3615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
3619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_ECDH:
3620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		EC_KEY *ecdh = NULL;
3622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (parg == NULL)
3624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_ECDH_LIB);
3626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return 0;
3627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh = EC_KEY_dup((EC_KEY *)parg);
3629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ecdh == NULL)
3630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_EC_LIB);
3632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return 0;
3633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!(ctx->options & SSL_OP_SINGLE_ECDH_USE))
3635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (!EC_KEY_generate_key(ecdh))
3637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
3638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EC_KEY_free(ecdh);
3639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_ECDH_LIB);
3640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return 0;
3641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
3642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (cert->ecdh_tmp != NULL)
3645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			EC_KEY_free(cert->ecdh_tmp);
3647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		cert->ecdh_tmp = ecdh;
3649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return 1;
3650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* break; */
3652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_ECDH_CB:
3653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
3655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
3656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* !OPENSSL_NO_ECDH */
3659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_TLSEXT
3660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG:
3661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ctx->tlsext_servername_arg=parg;
3662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_TICKET_KEYS:
3664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_GET_TLSEXT_TICKET_KEYS:
3665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		unsigned char *keys = parg;
3667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!keys)
3668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return 48;
3669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (larg != 48)
3670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_TICKET_KEYS_LENGTH);
3672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return 0;
3673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (cmd == SSL_CTRL_SET_TLSEXT_TICKET_KEYS)
3675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			memcpy(ctx->tlsext_tick_key_name, keys, 16);
3677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			memcpy(ctx->tlsext_tick_hmac_key, keys + 16, 16);
3678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			memcpy(ctx->tlsext_tick_aes_key, keys + 32, 16);
3679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
3681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			memcpy(keys, ctx->tlsext_tick_key_name, 16);
3683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			memcpy(keys + 16, ctx->tlsext_tick_hmac_key, 16);
3684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			memcpy(keys + 32, ctx->tlsext_tick_aes_key, 16);
3685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return 1;
3687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
368845bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	case SSL_CTRL_CHANNEL_ID:
368945bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		/* must be called on a server */
369045bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (ctx->method->ssl_accept == ssl_undefined_function)
369145bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			return 0;
369245bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		ctx->tlsext_channel_id_enabled=1;
369345bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		return 1;
3694221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3695221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifdef TLSEXT_TYPE_opaque_prf_input
3696221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG:
3697221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		ctx->tlsext_opaque_prf_input_callback_arg = parg;
3698221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		return 1;
3699221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
3700221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
3702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ctx->tlsext_status_arg=parg;
3703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return 1;
3704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3706392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
3707392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME:
3708392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.srp_Mask|=SSL_kSRP;
3709392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if (ctx->srp_ctx.login != NULL)
3710392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			OPENSSL_free(ctx->srp_ctx.login);
3711392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.login = NULL;
3712392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if (parg == NULL)
3713392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			break;
3714392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if (strlen((const char *)parg) > 255 || strlen((const char *)parg) < 1)
3715392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			{
3716392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_SRP_USERNAME);
3717392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			return 0;
3718392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			}
3719392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if ((ctx->srp_ctx.login = BUF_strdup((char *)parg)) == NULL)
3720392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			{
3721392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_INTERNAL_ERROR);
3722392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			return 0;
3723392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			}
3724392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3725392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD:
3726392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.SRP_give_srp_client_pwd_callback=srp_password_from_info_cb;
3727392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.info=parg;
3728392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3729392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_SRP_ARG:
3730392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.srp_Mask|=SSL_kSRP;
3731392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.SRP_cb_arg=parg;
3732392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3733392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3734392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH:
3735392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.strength=larg;
3736392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3737392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
3738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* !OPENSSL_NO_TLSEXT */
3739221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* A Thawte special :-) */
3741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_EXTRA_CHAIN_CERT:
3742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ctx->extra_certs == NULL)
3743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if ((ctx->extra_certs=sk_X509_new_null()) == NULL)
3745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				return(0);
3746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		sk_X509_push(ctx->extra_certs,(X509 *)parg);
3748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3750392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_GET_EXTRA_CHAIN_CERTS:
3751392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		*(STACK_OF(X509) **)parg =  ctx->extra_certs;
3752392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3753392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3754392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS:
3755392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if (ctx->extra_certs)
3756392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			{
3757392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			sk_X509_pop_free(ctx->extra_certs, X509_free);
3758392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			ctx->extra_certs = NULL;
3759392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			}
3760392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3761392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
376245bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley	case SSL_CTRL_SET_CHANNEL_ID:
376345bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		ctx->tlsext_channel_id_enabled = 1;
376445bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (EVP_PKEY_bits(parg) != 256)
376545bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			{
376645bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			SSLerr(SSL_F_SSL3_CTX_CTRL,SSL_R_CHANNEL_ID_NOT_P256);
376745bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			break;
376845bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			}
376945bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		if (ctx->tlsext_channel_id_private)
377045bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley			EVP_PKEY_free(ctx->tlsext_channel_id_private);
377177c6be7176c48d2ce4d5979a84876d34204eedafKenny Root		ctx->tlsext_channel_id_private = EVP_PKEY_dup((EVP_PKEY*) parg);
377245bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley		break;
377345bcfbcc39acc2213abd00ebcc794dcc40be39f7Adam Langley
3774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	default:
3775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
3776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(1);
3778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectlong ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void))
3781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CERT *cert;
3783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cert=ctx->cert;
3785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	switch (cmd)
3787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
3789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_RSA_CB:
3790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp;
3792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
3796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_DH_CB:
3797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
3799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
3803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TMP_ECDH_CB:
3804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp;
3806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_TLSEXT
3810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB:
3811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ctx->tlsext_servername_callback=(int (*)(SSL *,int *,void *))fp;
3812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3813221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3814221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifdef TLSEXT_TYPE_opaque_prf_input
3815221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB:
3816221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		ctx->tlsext_opaque_prf_input_callback = (int (*)(SSL *,void *, size_t, void *))fp;
3817221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		break;
3818221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
3819221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB:
3821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ctx->tlsext_status_cb=(int (*)(SSL *,void *))fp;
3822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB:
3825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ctx->tlsext_ticket_key_cb=(int (*)(SSL *,unsigned char  *,
3826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						unsigned char *,
3827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						EVP_CIPHER_CTX *,
3828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						HMAC_CTX *, int))fp;
3829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
3830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3831392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
3832392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_SRP_VERIFY_PARAM_CB:
3833392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.srp_Mask|=SSL_kSRP;
3834392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.SRP_verify_param_callback=(int (*)(SSL *,void *))fp;
3835392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3836392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB:
3837392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.srp_Mask|=SSL_kSRP;
3838392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.TLS_ext_srp_username_callback=(int (*)(SSL *,int *,void *))fp;
3839392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3840392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	case SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB:
3841392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.srp_Mask|=SSL_kSRP;
3842392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		ctx->srp_ctx.SRP_give_srp_client_pwd_callback=(char *(*)(SSL *,void *))fp;
3843392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		break;
3844392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
3845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
38469a68a8fb86e7440763286e3ea8578099abd598e7Bodo Moeller
3847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	default:
3848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
3849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(1);
3851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* This function needs to check if the ciphers required are actually
3854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * available */
3855221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromconst SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p)
3856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3857221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	SSL_CIPHER c;
3858221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	const SSL_CIPHER *cp;
3859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned long id;
3860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	id=0x03000000L|((unsigned long)p[0]<<8L)|(unsigned long)p[1];
3862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c.id=id;
3863221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	cp = OBJ_bsearch_ssl_cipher_id(&c, ssl3_ciphers, SSL3_NUM_CIPHERS);
3864392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef DEBUG_PRINT_UNKNOWN_CIPHERSUITES
3865392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromif (cp == NULL) fprintf(stderr, "Unknown cipher ID %x\n", (p[0] << 8) | p[1]);
3866392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
3867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (cp == NULL || cp->valid == 0)
3868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return NULL;
3869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
3870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return cp;
3871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
3874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long l;
3876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (p != NULL)
3878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		l=c->id;
3880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((l & 0xff000000) != 0x03000000) return(0);
3881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[0]=((unsigned char)(l>> 8L))&0xFF;
3882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[1]=((unsigned char)(l     ))&0xFF;
3883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
3884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(2);
3885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
3886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
3888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	     STACK_OF(SSL_CIPHER) *srvr)
3889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
3890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SSL_CIPHER *c,*ret=NULL;
3891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STACK_OF(SSL_CIPHER) *prio, *allow;
3892221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	int i,ii,ok;
3893221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_EC)
3894221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	unsigned int j;
3895221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	int ec_ok, ec_nid;
3896221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	unsigned char ec_search1 = 0, ec_search2 = 0;
3897221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
3898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CERT *cert;
3899221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	unsigned long alg_k,alg_a,mask_k,mask_a,emask_k,emask_a;
3900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Let's see which ciphers we can support */
3902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cert=s->cert;
3903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0
3905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Do not set the compare functions, because this may lead to a
3906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * reordering by "id". We want to keep the original ordering.
3907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * We may pay a price in performance during sk_SSL_CIPHER_find(),
3908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * but would have to pay with the price of sk_SSL_CIPHER_dup().
3909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 */
3910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sk_SSL_CIPHER_set_cmp_func(srvr, ssl_cipher_ptr_id_cmp);
3911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sk_SSL_CIPHER_set_cmp_func(clnt, ssl_cipher_ptr_id_cmp);
3912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef CIPHER_DEBUG
3915221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	printf("Server has %d from %p:\n", sk_SSL_CIPHER_num(srvr), (void *)srvr);
3916221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	for(i=0 ; i < sk_SSL_CIPHER_num(srvr) ; ++i)
3917221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		{
3918221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		c=sk_SSL_CIPHER_value(srvr,i);
3919221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		printf("%p:%s\n",(void *)c,c->name);
3920221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		}
3921221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	printf("Client sent %d from %p:\n", sk_SSL_CIPHER_num(clnt), (void *)clnt);
3922221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	for(i=0 ; i < sk_SSL_CIPHER_num(clnt) ; ++i)
3923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    {
3924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    c=sk_SSL_CIPHER_value(clnt,i);
3925221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	    printf("%p:%s\n",(void *)c,c->name);
3926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    }
3927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE)
3930221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		{
3931221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		prio = srvr;
3932221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		allow = clnt;
3933221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		}
3934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
3935221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		{
3936221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		prio = clnt;
3937221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		allow = srvr;
3938221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		}
3939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<sk_SSL_CIPHER_num(prio); i++)
3941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
3942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c=sk_SSL_CIPHER_value(prio,i);
3943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3944392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		/* Skip TLS v1.2 only ciphersuites if lower than v1.2 */
3945392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if ((c->algorithm_ssl & SSL_TLSV1_2) &&
3946392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			(TLS1_get_version(s) < TLS1_2_VERSION))
3947392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			continue;
3948392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ssl_set_cert_masks(cert,c);
3950221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		mask_k = cert->mask_k;
3951221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		mask_a = cert->mask_a;
3952221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		emask_k = cert->export_mask_k;
3953221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		emask_a = cert->export_mask_a;
3954392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
3955c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root		if (s->srp_ctx.srp_Mask & SSL_kSRP)
3956c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root			{
3957c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root			mask_k |= SSL_kSRP;
3958c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root			emask_k |= SSL_kSRP;
3959c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root			mask_a |= SSL_aSRP;
3960c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root			emask_a |= SSL_aSRP;
3961c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root			}
3962392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
3963c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root
3964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef KSSL_DEBUG
3965221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/*		printf("ssl3_choose_cipher %d alg= %lx\n", i,c->algorithms);*/
3966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif    /* KSSL_DEBUG */
3967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3968221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		alg_k=c->algorithm_mkey;
3969221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		alg_a=c->algorithm_auth;
3970221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3971656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_KRB5
3972221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (alg_k & SSL_kKRB5)
3973221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
3974221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			if ( !kssl_keytab_is_available(s->kssl_ctx) )
3975221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			    continue;
3976221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
3977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* OPENSSL_NO_KRB5 */
3978221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_PSK
3979221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		/* with PSK there must be server callback set */
3980de9675dad342fcf6fe0ed86d083c027e88e44b6bAlex Klyubin		if ((alg_a & SSL_aPSK) && s->psk_server_callback == NULL)
3981221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			continue;
3982221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif /* OPENSSL_NO_PSK */
3983221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
3984656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (SSL_C_IS_EXPORT(c))
3985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3986221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ok = (alg_k & emask_k) && (alg_a & emask_a);
3987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef CIPHER_DEBUG
3988221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			printf("%d:[%08lX:%08lX:%08lX:%08lX]%p:%s (export)\n",ok,alg_k,alg_a,emask_k,emask_a,
3989221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			       (void *)c,c->name);
3990656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3991656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
3992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
3993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
3994221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ok = (alg_k & mask_k) && (alg_a & mask_a);
3995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef CIPHER_DEBUG
3996221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			printf("%d:[%08lX:%08lX:%08lX:%08lX]%p:%s\n",ok,alg_k,alg_a,mask_k,mask_a,(void *)c,
3997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			       c->name);
3998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
3999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
4000656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4001221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_TLSEXT
4002221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_EC
4003221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (
4004221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* if we are considering an ECC cipher suite that uses our certificate */
4005221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			(alg_a & SSL_aECDSA || alg_a & SSL_aECDH)
4006221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* and we have an ECC certificate */
4007221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			&& (s->cert->pkeys[SSL_PKEY_ECC].x509 != NULL)
4008221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* and the client specified a Supported Point Formats extension */
4009221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			&& ((s->session->tlsext_ecpointformatlist_length > 0) && (s->session->tlsext_ecpointformatlist != NULL))
4010221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* and our certificate's point is compressed */
4011221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			&& (
4012221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				(s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info != NULL)
4013221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key != NULL)
4014221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key != NULL)
4015221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key->data != NULL)
4016221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (
4017221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					(*(s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key->data) == POINT_CONVERSION_COMPRESSED)
4018221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					|| (*(s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key->data) == POINT_CONVERSION_COMPRESSED + 1)
4019221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					)
4020221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				)
4021221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		)
4022221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
4023221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ec_ok = 0;
4024221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* if our certificate's curve is over a field type that the client does not support
4025221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			 * then do not allow this cipher suite to be negotiated */
4026221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			if (
4027221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec != NULL)
4028221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group != NULL)
4029221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth != NULL)
4030221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_prime_field)
4031221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			)
4032221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				{
4033221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				for (j = 0; j < s->session->tlsext_ecpointformatlist_length; j++)
4034221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4035221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					if (s->session->tlsext_ecpointformatlist[j] == TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime)
4036221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4037221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_ok = 1;
4038221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						break;
4039221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4040221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4041221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				}
4042221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			else if (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_characteristic_two_field)
4043221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				{
4044221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				for (j = 0; j < s->session->tlsext_ecpointformatlist_length; j++)
4045221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4046221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					if (s->session->tlsext_ecpointformatlist[j] == TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2)
4047221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4048221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_ok = 1;
4049221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						break;
4050221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4051221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4052221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				}
4053221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ok = ok && ec_ok;
4054221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
4055221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (
4056221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* if we are considering an ECC cipher suite that uses our certificate */
4057221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			(alg_a & SSL_aECDSA || alg_a & SSL_aECDH)
4058221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* and we have an ECC certificate */
4059221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			&& (s->cert->pkeys[SSL_PKEY_ECC].x509 != NULL)
4060221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* and the client specified an EllipticCurves extension */
4061221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			&& ((s->session->tlsext_ellipticcurvelist_length > 0) && (s->session->tlsext_ellipticcurvelist != NULL))
4062221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		)
4063221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
4064221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ec_ok = 0;
4065221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			if (
4066221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec != NULL)
4067221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				&& (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group != NULL)
4068221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			)
4069221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				{
4070221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				ec_nid = EC_GROUP_get_curve_name(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group);
4071221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				if ((ec_nid == 0)
4072221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					&& (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth != NULL)
4073221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				)
4074221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4075221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					if (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_prime_field)
4076221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4077221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search1 = 0xFF;
4078221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search2 = 0x01;
4079221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4080221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					else if (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_characteristic_two_field)
4081221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4082221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search1 = 0xFF;
4083221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search2 = 0x02;
4084221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4085221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4086221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				else
4087221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4088221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					ec_search1 = 0x00;
4089221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					ec_search2 = tls1_ec_nid2curve_id(ec_nid);
4090221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4091221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				if ((ec_search1 != 0) || (ec_search2 != 0))
4092221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4093221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					for (j = 0; j < s->session->tlsext_ellipticcurvelist_length / 2; j++)
4094221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4095221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						if ((s->session->tlsext_ellipticcurvelist[2*j] == ec_search1) && (s->session->tlsext_ellipticcurvelist[2*j+1] == ec_search2))
4096221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							{
4097221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							ec_ok = 1;
4098221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							break;
4099221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							}
4100221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4101221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4102221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				}
4103221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ok = ok && ec_ok;
4104221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
4105221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (
4106221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* if we are considering an ECC cipher suite that uses an ephemeral EC key */
4107221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			(alg_k & SSL_kEECDH)
4108221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* and we have an ephemeral EC key */
4109221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			&& (s->cert->ecdh_tmp != NULL)
4110221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			/* and the client specified an EllipticCurves extension */
4111221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			&& ((s->session->tlsext_ellipticcurvelist_length > 0) && (s->session->tlsext_ellipticcurvelist != NULL))
4112221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		)
4113221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
4114221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ec_ok = 0;
4115221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			if (s->cert->ecdh_tmp->group != NULL)
4116221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				{
4117221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				ec_nid = EC_GROUP_get_curve_name(s->cert->ecdh_tmp->group);
4118221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				if ((ec_nid == 0)
4119221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					&& (s->cert->ecdh_tmp->group->meth != NULL)
4120221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				)
4121221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4122221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					if (EC_METHOD_get_field_type(s->cert->ecdh_tmp->group->meth) == NID_X9_62_prime_field)
4123221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4124221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search1 = 0xFF;
4125221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search2 = 0x01;
4126221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4127221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					else if (EC_METHOD_get_field_type(s->cert->ecdh_tmp->group->meth) == NID_X9_62_characteristic_two_field)
4128221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4129221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search1 = 0xFF;
4130221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						ec_search2 = 0x02;
4131221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4132221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4133221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				else
4134221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4135221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					ec_search1 = 0x00;
4136221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					ec_search2 = tls1_ec_nid2curve_id(ec_nid);
4137221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4138221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				if ((ec_search1 != 0) || (ec_search2 != 0))
4139221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					{
4140221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					for (j = 0; j < s->session->tlsext_ellipticcurvelist_length / 2; j++)
4141221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						{
4142221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						if ((s->session->tlsext_ellipticcurvelist[2*j] == ec_search1) && (s->session->tlsext_ellipticcurvelist[2*j+1] == ec_search2))
4143221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							{
4144221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							ec_ok = 1;
4145221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							break;
4146221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom							}
4147221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom						}
4148221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom					}
4149221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				}
4150221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ok = ok && ec_ok;
4151221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
4152221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif /* OPENSSL_NO_EC */
4153221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif /* OPENSSL_NO_TLSEXT */
4154221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
4155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!ok) continue;
4156221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		ii=sk_SSL_CIPHER_find(allow,c);
4157221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (ii >= 0)
4158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
4159ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root#if !defined(OPENSSL_NO_EC) && !defined(OPENSSL_NO_TLSEXT)
4160ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root			if ((alg_k & SSL_kEECDH) && (alg_a & SSL_aECDSA) && s->s3->is_probably_safari)
4161ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root				{
4162ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root				if (!ret) ret=sk_SSL_CIPHER_value(allow,ii);
4163ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root				continue;
4164ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root				}
4165ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root#endif
4166221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ret=sk_SSL_CIPHER_value(allow,ii);
4167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			break;
4168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
4169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
4171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_get_req_cert_type(SSL *s, unsigned char *p)
4174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
4175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ret=0;
4176221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	unsigned long alg_k;
4177221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
4178221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
4179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4180221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_GOST
4181221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s->version >= TLS1_VERSION)
4182221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		{
4183221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (alg_k & SSL_kGOST)
4184221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
4185221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			p[ret++]=TLS_CT_GOST94_SIGN;
4186221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			p[ret++]=TLS_CT_GOST01_SIGN;
4187221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			return(ret);
4188221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
4189221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		}
4190221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
4191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DH
4193221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (alg_k & (SSL_kDHr|SSL_kEDH))
4194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef OPENSSL_NO_RSA
4196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[ret++]=SSL3_CT_RSA_FIXED_DH;
4197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
4198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef OPENSSL_NO_DSA
4199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[ret++]=SSL3_CT_DSS_FIXED_DH;
4200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
4201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((s->version == SSL3_VERSION) &&
4203221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		(alg_k & (SSL_kEDH|SSL_kDHd|SSL_kDHr)))
4204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef OPENSSL_NO_RSA
4206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[ret++]=SSL3_CT_RSA_EPHEMERAL_DH;
4207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
4208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef OPENSSL_NO_DSA
4209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[ret++]=SSL3_CT_DSS_EPHEMERAL_DH;
4210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
4211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* !OPENSSL_NO_DH */
4213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
4214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	p[ret++]=SSL3_CT_RSA_SIGN;
4215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
4216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
4217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	p[ret++]=SSL3_CT_DSS_SIGN;
4218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
4219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
4220221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->version >= TLS1_VERSION))
4221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[ret++]=TLS_CT_RSA_FIXED_ECDH;
4223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[ret++]=TLS_CT_ECDSA_FIXED_ECDH;
4224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
4226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
4228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* ECDSA certs can be used with RSA cipher suites as well
4229221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	 * so we don't need to check for SSL_kECDH or SSL_kEECDH
4230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 */
4231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->version >= TLS1_VERSION)
4232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p[ret++]=TLS_CT_ECDSA_SIGN;
4234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
4236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
4237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_shutdown(SSL *s)
4240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
424198d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom	int ret;
4242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Don't do anything much if we have not done the handshake or
4244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * we don't want to send messages :-) */
4245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((s->quiet_shutdown) || (s->state == SSL_ST_BEFORE))
4246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->shutdown=(SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN);
4248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(1);
4249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (!(s->shutdown & SSL_SENT_SHUTDOWN))
4252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->shutdown|=SSL_SENT_SHUTDOWN;
4254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 1
4255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ssl3_send_alert(s,SSL3_AL_WARNING,SSL_AD_CLOSE_NOTIFY);
4256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
4257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* our shutdown alert has been sent now, and if it still needs
4258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 	 * to be written, s->s3->alert_dispatch will be true */
425998d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom	 	if (s->s3->alert_dispatch)
426098d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom	 		return(-1);	/* return WANT_WRITE */
4261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else if (s->s3->alert_dispatch)
4263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* resend it if not sent */
4265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 1
426698d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom		ret=s->method->ssl_dispatch_alert(s);
426798d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom		if(ret == -1)
426898d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			{
426998d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			/* we only get to return -1 here the 2nd/Nth
427098d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			 * invocation, we must  have already signalled
427198d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			 * return 0 upon a previous invoation,
427298d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			 * return WANT_WRITE */
427398d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			return(ret);
427498d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			}
4275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
4276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN))
4278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* If we are waiting for a close from our peer, we are closed */
4280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->method->ssl_read_bytes(s,0,NULL,0,0);
428198d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom		if(!(s->shutdown & SSL_RECEIVED_SHUTDOWN))
428298d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			{
428398d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			return(-1);	/* return WANT_READ */
428498d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			}
4285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) &&
4288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		!s->s3->alert_dispatch)
4289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(1);
4290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
4291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
4292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_write(SSL *s, const void *buf, int len)
4295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
4296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ret,n;
4297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0
4299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->shutdown & SSL_SEND_SHUTDOWN)
4300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->rwstate=SSL_NOTHING;
4302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
4303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
4305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clear_sys_error();
4306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->renegotiate) ssl3_renegotiate_check(s);
4307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* This is an experimental flag that sends the
4309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * last handshake message in the same packet as the first
4310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * use data - used to see if it helps the TCP protocol during
4311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * session-id reuse */
4312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* The second test is because the buffer may have been removed */
4313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((s->s3->flags & SSL3_FLAGS_POP_BUFFER) && (s->wbio == s->bbio))
4314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* First time through, we write into the buffer */
4316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (s->s3->delay_buf_pop_ret == 0)
4317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
4318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret=ssl3_write_bytes(s,SSL3_RT_APPLICATION_DATA,
4319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					     buf,len);
4320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ret <= 0) return(ret);
4321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->s3->delay_buf_pop_ret=ret;
4323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
4324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->rwstate=SSL_WRITING;
4326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		n=BIO_flush(s->wbio);
4327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (n <= 0) return(n);
4328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->rwstate=SSL_NOTHING;
4329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* We have flushed the buffer, so remove it */
4331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ssl_free_wbio_buffer(s);
4332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->s3->flags&= ~SSL3_FLAGS_POP_BUFFER;
4333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=s->s3->delay_buf_pop_ret;
4335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->s3->delay_buf_pop_ret=0;
4336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
4338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=s->method->ssl_write_bytes(s,SSL3_RT_APPLICATION_DATA,
4340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			buf,len);
4341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ret <= 0) return(ret);
4342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
4345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int ssl3_read_internal(SSL *s, void *buf, int len, int peek)
4348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
4349ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu	int n,ret;
4350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clear_sys_error();
4352ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu	if ((s->s3->flags & SSL3_FLAGS_POP_BUFFER) && (s->wbio == s->bbio))
4353ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu		{
4354ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu		/* Deal with an application that calls SSL_read() when handshake data
4355ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu		 * is yet to be written.
4356ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu		 */
4357ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu		if (BIO_wpending(s->wbio) > 0)
4358ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu			{
4359ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu			s->rwstate=SSL_WRITING;
4360ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu			n=BIO_flush(s->wbio);
4361ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu			if (n <= 0) return(n);
4362ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu			s->rwstate=SSL_NOTHING;
4363ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu			}
4364ef1d181713d602df2075f0bf367788fd8b15100dHuahui Wu		}
4365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->renegotiate) ssl3_renegotiate_check(s);
4366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->in_read_app_data=1;
4367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret=s->method->ssl_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek);
4368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((ret == -1) && (s->s3->in_read_app_data == 2))
4369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		/* ssl3_read_bytes decided to call s->handshake_func, which
4371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 * called ssl3_read_bytes to read handshake data.
4372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 * However, ssl3_read_bytes actually found application data
4373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 * and thinks that application data makes sense here; so disable
4374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 * handshake processing and try to read application data again. */
4375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->in_handshake++;
4376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=s->method->ssl_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek);
4377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->in_handshake--;
4378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
4380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s->s3->in_read_app_data=0;
4381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
4383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_read(SSL *s, void *buf, int len)
4386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
4387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return ssl3_read_internal(s, buf, len, 0);
4388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_peek(SSL *s, void *buf, int len)
4391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
4392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return ssl3_read_internal(s, buf, len, 1);
4393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_renegotiate(SSL *s)
4396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
4397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->handshake_func == NULL)
4398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(1);
4399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
4401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
4402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	s->s3->renegotiate=1;
4404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(1);
4405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint ssl3_renegotiate_check(SSL *s)
4408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
4409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ret=0;
4410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s->s3->renegotiate)
4412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
4413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (	(s->s3->rbuf.left == 0) &&
4414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			(s->s3->wbuf.left == 0) &&
4415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			!SSL_in_init(s))
4416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
4417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
4418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectif we are the server, and we have sent a 'RENEGOTIATE' message, we
4419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectneed to go to SSL_ST_ACCEPT.
4420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
4421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* SSL_ST_ACCEPT */
4422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->state=SSL_ST_RENEGOTIATE;
4423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->s3->renegotiate=0;
4424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->s3->num_renegotiations++;
4425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			s->s3->total_renegotiations++;
4426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret=1;
4427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
4428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
4429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
4430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
4431392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* If we are using TLS v1.2 or later and default SHA1+MD5 algorithms switch
4432392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * to new SHA256 PRF and handshake macs
4433392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom */
4434392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromlong ssl_get_algorithm2(SSL *s)
4435392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	{
4436392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	long alg2 = s->s3->tmp.new_cipher->algorithm2;
4437ff41a4bc41ae1e1391f9b05117623ff70b985983Kenny Root	if (s->method->version == TLS1_2_VERSION &&
4438392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	    alg2 == (SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF))
4439392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256;
4440392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	return alg2;
4441392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	}
4442