1d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* ssl/ssl3.h */
2d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * All rights reserved.
4d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
5d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * This package is an SSL implementation written
6d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * by Eric Young (eay@cryptsoft.com).
7d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * The implementation was written so as to conform with Netscapes SSL.
8d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
9d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * This library is free for commercial and non-commercial use as long as
10d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * the following conditions are aheared to.  The following conditions
11d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * apply to all code found in this distribution, be it the RC4, RSA,
12d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * included with this distribution is covered by the same copyright terms
14d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
16d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Copyright remains Eric Young's, and as such any Copyright notices in
17d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * the code are not to be removed.
18d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * If this package is used in a product, Eric Young should be given attribution
19d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * as the author of the parts of the library used.
20d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * This can be in the form of a textual message at program startup or
21d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * in documentation (online or textual) provided with the package.
22d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
23d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Redistribution and use in source and binary forms, with or without
24d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * modification, are permitted provided that the following conditions
25d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * are met:
26d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 1. Redistributions of source code must retain the copyright
27d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    notice, this list of conditions and the following disclaimer.
28d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 2. Redistributions in binary form must reproduce the above copyright
29d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    notice, this list of conditions and the following disclaimer in the
30d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    documentation and/or other materials provided with the distribution.
31d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 3. All advertising materials mentioning features or use of this software
32d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    must display the following acknowledgement:
33d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    "This product includes cryptographic software written by
34d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *     Eric Young (eay@cryptsoft.com)"
35d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    The word 'cryptographic' can be left out if the rouines from the library
36d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    being used are not cryptographic related :-).
37d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 4. If you include any Windows specific code (or a derivative thereof) from
38d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    the apps directory (application code) you must include an acknowledgement:
39d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
41d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * SUCH DAMAGE.
52d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
53d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * The licence and distribution terms for any publically available version or
54d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * derivative of this code cannot be changed.  i.e. this code cannot simply be
55d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * copied and put under another distribution licence
56d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * [including the GNU Public Licence.]
57d9e397b599b13d642138480a28c14db7a136bf0Adam Langley */
58d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* ====================================================================
59d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Copyright (c) 1998-2002 The OpenSSL Project.  All rights reserved.
60d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
61d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Redistribution and use in source and binary forms, with or without
62d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * modification, are permitted provided that the following conditions
63d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * are met:
64d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
65d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 1. Redistributions of source code must retain the above copyright
66d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    notice, this list of conditions and the following disclaimer.
67d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
68d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 2. Redistributions in binary form must reproduce the above copyright
69d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    notice, this list of conditions and the following disclaimer in
70d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    the documentation and/or other materials provided with the
71d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    distribution.
72d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
73d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 3. All advertising materials mentioning features or use of this
74d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    software must display the following acknowledgment:
75d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    "This product includes software developed by the OpenSSL Project
76d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
78d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    endorse or promote products derived from this software without
80d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    prior written permission. For written permission, please contact
81d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    openssl-core@openssl.org.
82d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
83d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 5. Products derived from this software may not be called "OpenSSL"
84d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    nor may "OpenSSL" appear in their names without prior written
85d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    permission of the OpenSSL Project.
86d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
87d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 6. Redistributions of any form whatsoever must retain the following
88d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    acknowledgment:
89d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    "This product includes software developed by the OpenSSL Project
90d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
92d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
96d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * OF THE POSSIBILITY OF SUCH DAMAGE.
104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * ====================================================================
105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * This product includes cryptographic software written by Eric Young
107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * (eay@cryptsoft.com).  This product includes software written by Tim
108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Hudson (tjh@cryptsoft.com).
109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley */
111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* ====================================================================
112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * ECC cipher suite support in OpenSSL originally developed by
114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley */
116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
117e99801b603dea8893dcc61c70b327ef2d00b652cKenny Root#ifndef OPENSSL_HEADER_SSL3_H
118e99801b603dea8893dcc61c70b327ef2d00b652cKenny Root#define OPENSSL_HEADER_SSL3_H
119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
120e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley#include <openssl/aead.h>
121e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley#include <openssl/type_check.h>
122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifdef  __cplusplus
124d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyextern "C" {
125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
127e99801b603dea8893dcc61c70b327ef2d00b652cKenny Root
128b8494591d1b1a143f3b192d845c238bbf3bc629dKenny Root/* These are kept to support clients that negotiates higher protocol versions
129b8494591d1b1a143f3b192d845c238bbf3bc629dKenny Root * using SSLv2 client hello records. */
130b8494591d1b1a143f3b192d845c238bbf3bc629dKenny Root#define SSL2_MT_CLIENT_HELLO 1
131b8494591d1b1a143f3b192d845c238bbf3bc629dKenny Root#define SSL2_VERSION 0x0002
132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
133b8494591d1b1a143f3b192d845c238bbf3bc629dKenny Root/* Signalling cipher suite value from RFC 5746. */
134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_SCSV 0x030000FF
135b8494591d1b1a143f3b192d845c238bbf3bc629dKenny Root/* Fallback signalling cipher suite value from RFC 7507. */
136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_FALLBACK_SCSV 0x03005600
137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_NULL_MD5 0x03000001
139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_NULL_SHA 0x03000002
140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_RC4_40_MD5 0x03000003
141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_RC4_128_MD5 0x03000004
142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_RC4_128_SHA 0x03000005
143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_RC2_40_MD5 0x03000006
144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_IDEA_128_SHA 0x03000007
145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008
146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009
147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A
148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B
150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C
151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D
152d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E
153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F
154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010
155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_EDH_DSS_DES_40_CBC_SHA 0x03000011
157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_EDH_DSS_DES_64_CBC_SHA 0x03000012
158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA 0x03000013
159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_EDH_RSA_DES_40_CBC_SHA 0x03000014
160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_EDH_RSA_DES_64_CBC_SHA 0x03000015
161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA 0x03000016
162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_ADH_RC4_40_MD5 0x03000017
164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_ADH_RC4_128_MD5 0x03000018
165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019
166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A
167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B
168d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5"
170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_NULL_SHA "NULL-SHA"
171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5"
172d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5"
173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA"
174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5"
175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA"
176d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA"
177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA"
178d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA"
179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA"
181d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA"
182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA"
183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA"
184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA"
185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA"
186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA"
188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA"
189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA"
190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA"
191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA"
192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA"
193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5"
195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5"
196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA"
197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA"
198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA"
199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_SSL_SESSION_ID_LENGTH 32
201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MAX_SSL_SESSION_ID_LENGTH 32
202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MASTER_SECRET_SIZE 48
204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RANDOM_SIZE 32
205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_SESSION_ID_SIZE 32
206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_HEADER_LENGTH 5
207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_HM_HEADER_LENGTH 4
209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef SSL3_ALIGN_PAYLOAD
211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* Some will argue that this increases memory footprint, but it's not actually
212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * true. Point is that malloc has to return at least 64-bit aligned pointers,
213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * meaning that allocating 5 bytes wastes 3 bytes in either case. Suggested
214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * pre-gaping simply moves these wasted bytes from the end of allocated region
215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * to its front, but makes data payload aligned, which improves performance. */
216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ALIGN_PAYLOAD 8
217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#else
218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#if (SSL3_ALIGN_PAYLOAD & (SSL3_ALIGN_PAYLOAD - 1)) != 0
219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#error "insane SSL3_ALIGN_PAYLOAD"
220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#undef SSL3_ALIGN_PAYLOAD
221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
222d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* This is the maximum MAC (digest) size used by the SSL library. Currently
225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * maximum of 20 is used by SHA1, but we reserve for future extension for
226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * 512-bit hashes. */
227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_MAX_MD_SIZE 64
229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* Maximum block size used in all ciphersuites. Currently 16 for AES. */
231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16
233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* Maximum plaintext length: defined by SSL/TLS standards */
235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_MAX_PLAIN_LENGTH 16384
236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* Maximum compression overhead: defined by SSL/TLS standards */
237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024
238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
239d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* The standards give a maximum encryption overhead of 1024 bytes. In practice
240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * the value is lower than this. The overhead is the maximum number of padding
241e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * bytes (256) plus the mac size.
242e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley *
243e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * TODO(davidben): This derivation doesn't take AEADs into account, or TLS 1.1
244e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * explicit nonces. It happens to work because |SSL3_RT_MAX_MD_SIZE| is larger
245e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * than necessary and no true AEAD has variable overhead in TLS 1.2. */
246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE)
247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
248e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley/* SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD is the maximum overhead in encrypting a
249e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * record. This does not include the record header. Some ciphers use explicit
250e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * nonces, so it includes both the AEAD overhead as well as the nonce. */
251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \
252e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley    (EVP_AEAD_MAX_OVERHEAD + EVP_AEAD_MAX_NONCE_LENGTH)
253e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley
254e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyOPENSSL_COMPILE_ASSERT(
255e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley    SSL3_RT_MAX_ENCRYPTED_OVERHEAD >= SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD,
256e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley    max_overheads_are_consistent);
257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
258e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley/* SSL3_RT_MAX_COMPRESSED_LENGTH is an alias for
259e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * |SSL3_RT_MAX_PLAIN_LENGTH|. Compression is gone, so don't include the
260e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley * compression overhead. */
261e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH
262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
263d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_MAX_ENCRYPTED_LENGTH \
264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley  (SSL3_RT_MAX_ENCRYPTED_OVERHEAD + SSL3_RT_MAX_COMPRESSED_LENGTH)
265d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_MAX_PACKET_SIZE \
266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley  (SSL3_RT_MAX_ENCRYPTED_LENGTH + SSL3_RT_HEADER_LENGTH)
267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54"
269d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52"
270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_CHANGE_CIPHER_SPEC 20
272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_ALERT 21
273d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_HANDSHAKE 22
274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_APPLICATION_DATA 23
275a12bf4695c4916207f946efafd9728eb941e3f0aRobert Sloan#define SSL3_RT_PLAINTEXT_HANDSHAKE 24
276d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* Pseudo content type for SSL/TLS header info */
278d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_RT_HEADER 0x100
279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AL_WARNING 1
281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AL_FATAL 2
282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
283d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_CLOSE_NOTIFY 0
284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_UNEXPECTED_MESSAGE 10    /* fatal */
285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_BAD_RECORD_MAC 20        /* fatal */
286d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_DECOMPRESSION_FAILURE 30 /* fatal */
287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_HANDSHAKE_FAILURE 40     /* fatal */
288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_NO_CERTIFICATE 41
289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_BAD_CERTIFICATE 42
290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_UNSUPPORTED_CERTIFICATE 43
291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_CERTIFICATE_REVOKED 44
292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_CERTIFICATE_EXPIRED 45
293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_CERTIFICATE_UNKNOWN 46
294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_ILLEGAL_PARAMETER 47      /* fatal */
295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_AD_INAPPROPRIATE_FALLBACK 86 /* fatal */
296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CT_RSA_SIGN 1
298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* SSLv3 */
300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* client */
301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* extra state */
302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_FLUSH (0x100 | SSL_ST_CONNECT)
303e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley#define SSL3_ST_FALSE_START (0x101 | SSL_ST_CONNECT)
304b8494591d1b1a143f3b192d845c238bbf3bc629dKenny Root#define SSL3_ST_VERIFY_SERVER_CERT (0x102 | SSL_ST_CONNECT)
305a94fe0531b3c196ad078174259af2201b2e3a246Robert Sloan#define SSL3_ST_FINISH_CLIENT_HANDSHAKE (0x103 | SSL_ST_CONNECT)
306e56da3e0a18add8be1571c4ae616492a0258ebeaRobert Sloan#define SSL3_ST_WRITE_EARLY_DATA (0x104 | SSL_ST_CONNECT)
307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* write to server */
308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_CLNT_HELLO_A (0x110 | SSL_ST_CONNECT)
309d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* read from server */
310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_SRVR_HELLO_A (0x120 | SSL_ST_CONNECT)
311d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A (0x126 | SSL_ST_CONNECT)
312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_CERT_A (0x130 | SSL_ST_CONNECT)
313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_KEY_EXCH_A (0x140 | SSL_ST_CONNECT)
314d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_CERT_REQ_A (0x150 | SSL_ST_CONNECT)
315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_SRVR_DONE_A (0x160 | SSL_ST_CONNECT)
316d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* write to server */
317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_CERT_A (0x170 | SSL_ST_CONNECT)
318d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_KEY_EXCH_A (0x180 | SSL_ST_CONNECT)
319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_CERT_VRFY_A (0x190 | SSL_ST_CONNECT)
320c895d6b1c580258e72e1ed3fcc86d38970ded9e1David Benjamin#define SSL3_ST_CW_CHANGE (0x1A0 | SSL_ST_CONNECT)
321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_NEXT_PROTO_A (0x200 | SSL_ST_CONNECT)
322d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_CHANNEL_ID_A (0x220 | SSL_ST_CONNECT)
323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CW_FINISHED_A (0x1B0 | SSL_ST_CONNECT)
324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* read from server */
325d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_CHANGE (0x1C0 | SSL_ST_CONNECT)
326d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_FINISHED_A (0x1D0 | SSL_ST_CONNECT)
327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_SESSION_TICKET_A (0x1E0 | SSL_ST_CONNECT)
328d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_CR_CERT_STATUS_A (0x1F0 | SSL_ST_CONNECT)
329d316cba52b5aeac660e03068e65dd873669ce1dbDavid Benjamin
330d316cba52b5aeac660e03068e65dd873669ce1dbDavid Benjamin/* SSL3_ST_CR_SRVR_HELLO_B is a legacy alias for |SSL3_ST_CR_SRVR_HELLO_A| used
331d316cba52b5aeac660e03068e65dd873669ce1dbDavid Benjamin * by some consumers which check |SSL_state|. */
332d316cba52b5aeac660e03068e65dd873669ce1dbDavid Benjamin#define SSL3_ST_CR_SRVR_HELLO_B SSL3_ST_CR_SRVR_HELLO_A
333d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
334d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* server */
335d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* extra state */
336d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SW_FLUSH (0x100 | SSL_ST_ACCEPT)
337d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* read from client */
338d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_CLNT_HELLO_A (0x110 | SSL_ST_ACCEPT)
339d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_CLNT_HELLO_B (0x111 | SSL_ST_ACCEPT)
340d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_CLNT_HELLO_C (0x112 | SSL_ST_ACCEPT)
341c895d6b1c580258e72e1ed3fcc86d38970ded9e1David Benjamin#define SSL3_ST_SR_CLNT_HELLO_D (0x113 | SSL_ST_ACCEPT)
342d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* write to client */
343d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SW_SRVR_HELLO_A (0x130 | SSL_ST_ACCEPT)
344d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SW_CERT_A (0x140 | SSL_ST_ACCEPT)
345d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SW_KEY_EXCH_A (0x150 | SSL_ST_ACCEPT)
346d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SW_SRVR_DONE_A (0x170 | SSL_ST_ACCEPT)
347d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* read from client */
348d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_CERT_A (0x180 | SSL_ST_ACCEPT)
349d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_KEY_EXCH_A (0x190 | SSL_ST_ACCEPT)
350d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_KEY_EXCH_B (0x191 | SSL_ST_ACCEPT)
351d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_CERT_VRFY_A (0x1A0 | SSL_ST_ACCEPT)
352d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_CHANGE (0x1B0 | SSL_ST_ACCEPT)
353d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_NEXT_PROTO_A (0x210 | SSL_ST_ACCEPT)
354d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_CHANNEL_ID_A (0x230 | SSL_ST_ACCEPT)
355d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SR_FINISHED_A (0x1C0 | SSL_ST_ACCEPT)
356d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* write to client */
358d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_ST_SW_FINISHED_A (0x1E0 | SSL_ST_ACCEPT)
359d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
360d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_HELLO_REQUEST 0
361d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_CLIENT_HELLO 1
362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_SERVER_HELLO 2
363d316cba52b5aeac660e03068e65dd873669ce1dbDavid Benjamin#define SSL3_MT_NEW_SESSION_TICKET 4
364c895d6b1c580258e72e1ed3fcc86d38970ded9e1David Benjamin#define SSL3_MT_HELLO_RETRY_REQUEST 6
365c895d6b1c580258e72e1ed3fcc86d38970ded9e1David Benjamin#define SSL3_MT_ENCRYPTED_EXTENSIONS 8
366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_CERTIFICATE 11
367d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_SERVER_KEY_EXCHANGE 12
368d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_CERTIFICATE_REQUEST 13
3696e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin#define SSL3_MT_SERVER_HELLO_DONE 14
370d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_CERTIFICATE_VERIFY 15
371d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_CLIENT_KEY_EXCHANGE 16
372d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_FINISHED 20
373d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_CERTIFICATE_STATUS 22
374d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_SUPPLEMENTAL_DATA 23
375c895d6b1c580258e72e1ed3fcc86d38970ded9e1David Benjamin#define SSL3_MT_KEY_UPDATE 24
376d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_NEXT_PROTO 67
377c895d6b1c580258e72e1ed3fcc86d38970ded9e1David Benjamin#define SSL3_MT_CHANNEL_ID 203
378d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define DTLS1_MT_HELLO_VERIFY_REQUEST 3
379d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
3806e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin/* The following are legacy aliases for consumers which use
3816e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin * |SSL_CTX_set_msg_callback|. */
3826e899c7d3f4c7bd6383a0ca171a50e95aa9d8e2dDavid Benjamin#define SSL3_MT_SERVER_DONE SSL3_MT_SERVER_HELLO_DONE
383d316cba52b5aeac660e03068e65dd873669ce1dbDavid Benjamin#define SSL3_MT_NEWSESSION_TICKET SSL3_MT_NEW_SESSION_TICKET
384d316cba52b5aeac660e03068e65dd873669ce1dbDavid Benjamin
385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_MT_CCS 1
387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/* These are used when changing over to a new cipher */
389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CC_READ 0x01
390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CC_WRITE 0x02
391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CC_CLIENT 0x10
392d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CC_SERVER 0x20
393d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT | SSL3_CC_WRITE)
394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER | SSL3_CC_READ)
395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT | SSL3_CC_READ)
396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER | SSL3_CC_WRITE)
397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
398d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifdef  __cplusplus
400e99801b603dea8893dcc61c70b327ef2d00b652cKenny Root}  /* extern C */
401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
402e99801b603dea8893dcc61c70b327ef2d00b652cKenny Root
403e99801b603dea8893dcc61c70b327ef2d00b652cKenny Root#endif  /* OPENSSL_HEADER_SSL3_H */
404