root / lab4 / .minix-src / include / openssl / ssl3.h @ 14
History | View | Annotate | Download (30.5 KB)
1 | 13 | up20180614 | /* ssl/ssl3.h */
|
---|---|---|---|
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||
3 | * All rights reserved.
|
||
4 | *
|
||
5 | * This package is an SSL implementation written
|
||
6 | * by Eric Young (eay@cryptsoft.com).
|
||
7 | * The implementation was written so as to conform with Netscapes SSL.
|
||
8 | *
|
||
9 | * This library is free for commercial and non-commercial use as long as
|
||
10 | * the following conditions are aheared to. The following conditions
|
||
11 | * apply to all code found in this distribution, be it the RC4, RSA,
|
||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||
13 | * included with this distribution is covered by the same copyright terms
|
||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||
15 | *
|
||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in
|
||
17 | * the code are not to be removed.
|
||
18 | * If this package is used in a product, Eric Young should be given attribution
|
||
19 | * as the author of the parts of the library used.
|
||
20 | * This can be in the form of a textual message at program startup or
|
||
21 | * in documentation (online or textual) provided with the package.
|
||
22 | *
|
||
23 | * Redistribution and use in source and binary forms, with or without
|
||
24 | * modification, are permitted provided that the following conditions
|
||
25 | * are met:
|
||
26 | * 1. Redistributions of source code must retain the copyright
|
||
27 | * notice, this list of conditions and the following disclaimer.
|
||
28 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
29 | * notice, this list of conditions and the following disclaimer in the
|
||
30 | * documentation and/or other materials provided with the distribution.
|
||
31 | * 3. All advertising materials mentioning features or use of this software
|
||
32 | * must display the following acknowledgement:
|
||
33 | * "This product includes cryptographic software written by
|
||
34 | * Eric Young (eay@cryptsoft.com)"
|
||
35 | * The word 'cryptographic' can be left out if the rouines from the library
|
||
36 | * being used are not cryptographic related :-).
|
||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from
|
||
38 | * the apps directory (application code) you must include an acknowledgement:
|
||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||
40 | *
|
||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
51 | * SUCH DAMAGE.
|
||
52 | *
|
||
53 | * The licence and distribution terms for any publically available version or
|
||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be
|
||
55 | * copied and put under another distribution licence
|
||
56 | * [including the GNU Public Licence.]
|
||
57 | */
|
||
58 | /* ====================================================================
|
||
59 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
|
||
60 | *
|
||
61 | * Redistribution and use in source and binary forms, with or without
|
||
62 | * modification, are permitted provided that the following conditions
|
||
63 | * are met:
|
||
64 | *
|
||
65 | * 1. Redistributions of source code must retain the above copyright
|
||
66 | * notice, this list of conditions and the following disclaimer.
|
||
67 | *
|
||
68 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
69 | * notice, this list of conditions and the following disclaimer in
|
||
70 | * the documentation and/or other materials provided with the
|
||
71 | * distribution.
|
||
72 | *
|
||
73 | * 3. All advertising materials mentioning features or use of this
|
||
74 | * software must display the following acknowledgment:
|
||
75 | * "This product includes software developed by the OpenSSL Project
|
||
76 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
||
77 | *
|
||
78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||
79 | * endorse or promote products derived from this software without
|
||
80 | * prior written permission. For written permission, please contact
|
||
81 | * openssl-core@openssl.org.
|
||
82 | *
|
||
83 | * 5. Products derived from this software may not be called "OpenSSL"
|
||
84 | * nor may "OpenSSL" appear in their names without prior written
|
||
85 | * permission of the OpenSSL Project.
|
||
86 | *
|
||
87 | * 6. Redistributions of any form whatsoever must retain the following
|
||
88 | * acknowledgment:
|
||
89 | * "This product includes software developed by the OpenSSL Project
|
||
90 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
||
91 | *
|
||
92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||
93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||
96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||
98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||
101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||
103 | * OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
104 | * ====================================================================
|
||
105 | *
|
||
106 | * This product includes cryptographic software written by Eric Young
|
||
107 | * (eay@cryptsoft.com). This product includes software written by Tim
|
||
108 | * Hudson (tjh@cryptsoft.com).
|
||
109 | *
|
||
110 | */
|
||
111 | /* ====================================================================
|
||
112 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
|
||
113 | * ECC cipher suite support in OpenSSL originally developed by
|
||
114 | * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
|
||
115 | */
|
||
116 | |||
117 | #ifndef HEADER_SSL3_H
|
||
118 | # define HEADER_SSL3_H
|
||
119 | |||
120 | # ifndef OPENSSL_NO_COMP
|
||
121 | # include <openssl/comp.h> |
||
122 | # endif
|
||
123 | # include <openssl/buffer.h> |
||
124 | # include <openssl/evp.h> |
||
125 | # include <openssl/ssl.h> |
||
126 | |||
127 | #ifdef __cplusplus
|
||
128 | extern "C" { |
||
129 | #endif
|
||
130 | |||
131 | /*
|
||
132 | * Signalling cipher suite value from RFC 5746
|
||
133 | * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV)
|
||
134 | */
|
||
135 | # define SSL3_CK_SCSV 0x030000FF |
||
136 | |||
137 | /*
|
||
138 | * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00
|
||
139 | * (TLS_FALLBACK_SCSV)
|
||
140 | */
|
||
141 | # define SSL3_CK_FALLBACK_SCSV 0x03005600 |
||
142 | |||
143 | # define SSL3_CK_RSA_NULL_MD5 0x03000001 |
||
144 | # define SSL3_CK_RSA_NULL_SHA 0x03000002 |
||
145 | # define SSL3_CK_RSA_RC4_40_MD5 0x03000003 |
||
146 | # define SSL3_CK_RSA_RC4_128_MD5 0x03000004 |
||
147 | # define SSL3_CK_RSA_RC4_128_SHA 0x03000005 |
||
148 | # define SSL3_CK_RSA_RC2_40_MD5 0x03000006 |
||
149 | # define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 |
||
150 | # define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 |
||
151 | # define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 |
||
152 | # define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A |
||
153 | |||
154 | # define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B |
||
155 | # define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C |
||
156 | # define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D |
||
157 | # define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E |
||
158 | # define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F |
||
159 | # define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 |
||
160 | |||
161 | # define SSL3_CK_EDH_DSS_DES_40_CBC_SHA 0x03000011 |
||
162 | # define SSL3_CK_EDH_DSS_DES_64_CBC_SHA 0x03000012 |
||
163 | # define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA 0x03000013 |
||
164 | # define SSL3_CK_EDH_RSA_DES_40_CBC_SHA 0x03000014 |
||
165 | # define SSL3_CK_EDH_RSA_DES_64_CBC_SHA 0x03000015 |
||
166 | # define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA 0x03000016 |
||
167 | |||
168 | # define SSL3_CK_ADH_RC4_40_MD5 0x03000017 |
||
169 | # define SSL3_CK_ADH_RC4_128_MD5 0x03000018 |
||
170 | # define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 |
||
171 | # define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A |
||
172 | # define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B |
||
173 | |||
174 | # if 0
|
||
175 | # define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C
|
||
176 | # define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D
|
||
177 | # if 0 /* Because it clashes with KRB5, is never
|
||
178 | * used any more, and is safe to remove
|
||
179 | * according to David Hopwood
|
||
180 | * <david.hopwood@zetnet.co.uk> of the
|
||
181 | * ietf-tls list */
|
||
182 | # define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E
|
||
183 | # endif
|
||
184 | # endif
|
||
185 | |||
186 | /*
|
||
187 | * VRS Additional Kerberos5 entries
|
||
188 | */
|
||
189 | # define SSL3_CK_KRB5_DES_64_CBC_SHA 0x0300001E
|
||
190 | # define SSL3_CK_KRB5_DES_192_CBC3_SHA 0x0300001F
|
||
191 | # define SSL3_CK_KRB5_RC4_128_SHA 0x03000020
|
||
192 | # define SSL3_CK_KRB5_IDEA_128_CBC_SHA 0x03000021
|
||
193 | # define SSL3_CK_KRB5_DES_64_CBC_MD5 0x03000022
|
||
194 | # define SSL3_CK_KRB5_DES_192_CBC3_MD5 0x03000023
|
||
195 | # define SSL3_CK_KRB5_RC4_128_MD5 0x03000024
|
||
196 | # define SSL3_CK_KRB5_IDEA_128_CBC_MD5 0x03000025
|
||
197 | |||
198 | # define SSL3_CK_KRB5_DES_40_CBC_SHA 0x03000026
|
||
199 | # define SSL3_CK_KRB5_RC2_40_CBC_SHA 0x03000027
|
||
200 | # define SSL3_CK_KRB5_RC4_40_SHA 0x03000028
|
||
201 | # define SSL3_CK_KRB5_DES_40_CBC_MD5 0x03000029
|
||
202 | # define SSL3_CK_KRB5_RC2_40_CBC_MD5 0x0300002A
|
||
203 | # define SSL3_CK_KRB5_RC4_40_MD5 0x0300002B
|
||
204 | |||
205 | # define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5"
|
||
206 | # define SSL3_TXT_RSA_NULL_SHA "NULL-SHA"
|
||
207 | # define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5"
|
||
208 | # define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5"
|
||
209 | # define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA"
|
||
210 | # define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5"
|
||
211 | # define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA"
|
||
212 | # define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA"
|
||
213 | # define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA"
|
||
214 | # define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA"
|
||
215 | |||
216 | # define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA"
|
||
217 | # define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA"
|
||
218 | # define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA"
|
||
219 | # define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA"
|
||
220 | # define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA"
|
||
221 | # define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA"
|
||
222 | |||
223 | # define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA"
|
||
224 | # define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA"
|
||
225 | # define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA"
|
||
226 | # define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA"
|
||
227 | # define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA"
|
||
228 | # define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA"
|
||
229 | |||
230 | # define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5"
|
||
231 | # define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5"
|
||
232 | # define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA"
|
||
233 | # define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA"
|
||
234 | # define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA"
|
||
235 | |||
236 | # if 0
|
||
237 | # define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA"
|
||
238 | # define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA"
|
||
239 | # define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA"
|
||
240 | # endif
|
||
241 | |||
242 | # define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA"
|
||
243 | # define SSL3_TXT_KRB5_DES_192_CBC3_SHA "KRB5-DES-CBC3-SHA"
|
||
244 | # define SSL3_TXT_KRB5_RC4_128_SHA "KRB5-RC4-SHA"
|
||
245 | # define SSL3_TXT_KRB5_IDEA_128_CBC_SHA "KRB5-IDEA-CBC-SHA"
|
||
246 | # define SSL3_TXT_KRB5_DES_64_CBC_MD5 "KRB5-DES-CBC-MD5"
|
||
247 | # define SSL3_TXT_KRB5_DES_192_CBC3_MD5 "KRB5-DES-CBC3-MD5"
|
||
248 | # define SSL3_TXT_KRB5_RC4_128_MD5 "KRB5-RC4-MD5"
|
||
249 | # define SSL3_TXT_KRB5_IDEA_128_CBC_MD5 "KRB5-IDEA-CBC-MD5"
|
||
250 | |||
251 | # define SSL3_TXT_KRB5_DES_40_CBC_SHA "EXP-KRB5-DES-CBC-SHA"
|
||
252 | # define SSL3_TXT_KRB5_RC2_40_CBC_SHA "EXP-KRB5-RC2-CBC-SHA"
|
||
253 | # define SSL3_TXT_KRB5_RC4_40_SHA "EXP-KRB5-RC4-SHA"
|
||
254 | # define SSL3_TXT_KRB5_DES_40_CBC_MD5 "EXP-KRB5-DES-CBC-MD5"
|
||
255 | # define SSL3_TXT_KRB5_RC2_40_CBC_MD5 "EXP-KRB5-RC2-CBC-MD5"
|
||
256 | # define SSL3_TXT_KRB5_RC4_40_MD5 "EXP-KRB5-RC4-MD5"
|
||
257 | |||
258 | # define SSL3_SSL_SESSION_ID_LENGTH 32
|
||
259 | # define SSL3_MAX_SSL_SESSION_ID_LENGTH 32
|
||
260 | |||
261 | # define SSL3_MASTER_SECRET_SIZE 48
|
||
262 | # define SSL3_RANDOM_SIZE 32
|
||
263 | # define SSL3_SESSION_ID_SIZE 32
|
||
264 | # define SSL3_RT_HEADER_LENGTH 5
|
||
265 | |||
266 | # ifndef SSL3_ALIGN_PAYLOAD
|
||
267 | /*
|
||
268 | * Some will argue that this increases memory footprint, but it's not
|
||
269 | * actually true. Point is that malloc has to return at least 64-bit aligned
|
||
270 | * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case.
|
||
271 | * Suggested pre-gaping simply moves these wasted bytes from the end of
|
||
272 | * allocated region to its front, but makes data payload aligned, which
|
||
273 | * improves performance:-)
|
||
274 | */
|
||
275 | # define SSL3_ALIGN_PAYLOAD 8
|
||
276 | # else
|
||
277 | # if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0
|
||
278 | # error "insane SSL3_ALIGN_PAYLOAD"
|
||
279 | # undef SSL3_ALIGN_PAYLOAD
|
||
280 | # endif
|
||
281 | # endif
|
||
282 | |||
283 | /*
|
||
284 | * This is the maximum MAC (digest) size used by the SSL library. Currently
|
||
285 | * maximum of 20 is used by SHA1, but we reserve for future extension for
|
||
286 | * 512-bit hashes.
|
||
287 | */
|
||
288 | |||
289 | # define SSL3_RT_MAX_MD_SIZE 64
|
||
290 | |||
291 | /*
|
||
292 | * Maximum block size used in all ciphersuites. Currently 16 for AES.
|
||
293 | */
|
||
294 | |||
295 | # define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16
|
||
296 | |||
297 | # define SSL3_RT_MAX_EXTRA (16384)
|
||
298 | |||
299 | /* Maximum plaintext length: defined by SSL/TLS standards */
|
||
300 | # define SSL3_RT_MAX_PLAIN_LENGTH 16384
|
||
301 | /* Maximum compression overhead: defined by SSL/TLS standards */
|
||
302 | # define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024
|
||
303 | |||
304 | /*
|
||
305 | * The standards give a maximum encryption overhead of 1024 bytes. In
|
||
306 | * practice the value is lower than this. The overhead is the maximum number
|
||
307 | * of padding bytes (256) plus the mac size.
|
||
308 | */
|
||
309 | # define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE)
|
||
310 | |||
311 | /*
|
||
312 | * OpenSSL currently only uses a padding length of at most one block so the
|
||
313 | * send overhead is smaller.
|
||
314 | */
|
||
315 | |||
316 | # define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \
|
||
317 | (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE)
|
||
318 | |||
319 | /* If compression isn't used don't include the compression overhead */
|
||
320 | |||
321 | # ifdef OPENSSL_NO_COMP
|
||
322 | # define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH
|
||
323 | # else
|
||
324 | # define SSL3_RT_MAX_COMPRESSED_LENGTH \
|
||
325 | (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD)
|
||
326 | # endif
|
||
327 | # define SSL3_RT_MAX_ENCRYPTED_LENGTH \
|
||
328 | (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH)
|
||
329 | # define SSL3_RT_MAX_PACKET_SIZE \
|
||
330 | (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH)
|
||
331 | |||
332 | # define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54"
|
||
333 | # define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52"
|
||
334 | |||
335 | # define SSL3_VERSION 0x0300
|
||
336 | # define SSL3_VERSION_MAJOR 0x03
|
||
337 | # define SSL3_VERSION_MINOR 0x00
|
||
338 | |||
339 | # define SSL3_RT_CHANGE_CIPHER_SPEC 20
|
||
340 | # define SSL3_RT_ALERT 21
|
||
341 | # define SSL3_RT_HANDSHAKE 22
|
||
342 | # define SSL3_RT_APPLICATION_DATA 23
|
||
343 | # define TLS1_RT_HEARTBEAT 24
|
||
344 | |||
345 | # define SSL3_AL_WARNING 1
|
||
346 | # define SSL3_AL_FATAL 2
|
||
347 | |||
348 | # define SSL3_AD_CLOSE_NOTIFY 0
|
||
349 | # define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */
|
||
350 | # define SSL3_AD_BAD_RECORD_MAC 20/* fatal */
|
||
351 | # define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */
|
||
352 | # define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */
|
||
353 | # define SSL3_AD_NO_CERTIFICATE 41
|
||
354 | # define SSL3_AD_BAD_CERTIFICATE 42
|
||
355 | # define SSL3_AD_UNSUPPORTED_CERTIFICATE 43
|
||
356 | # define SSL3_AD_CERTIFICATE_REVOKED 44
|
||
357 | # define SSL3_AD_CERTIFICATE_EXPIRED 45
|
||
358 | # define SSL3_AD_CERTIFICATE_UNKNOWN 46
|
||
359 | # define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */
|
||
360 | |||
361 | # define TLS1_HB_REQUEST 1
|
||
362 | # define TLS1_HB_RESPONSE 2
|
||
363 | |||
364 | # ifndef OPENSSL_NO_SSL_INTERN
|
||
365 | |||
366 | typedef struct ssl3_record_st {
|
||
367 | /* type of record */
|
||
368 | /*
|
||
369 | * r
|
||
370 | */ int type;
|
||
371 | /* How many bytes available */
|
||
372 | /*
|
||
373 | * rw
|
||
374 | */ unsigned int length;
|
||
375 | /* read/write offset into 'buf' */
|
||
376 | /*
|
||
377 | * r
|
||
378 | */ unsigned int off;
|
||
379 | /* pointer to the record data */
|
||
380 | /*
|
||
381 | * rw
|
||
382 | */ unsigned char *data;
|
||
383 | /* where the decode bytes are */
|
||
384 | /*
|
||
385 | * rw
|
||
386 | */ unsigned char *input;
|
||
387 | /* only used with decompression - malloc()ed */
|
||
388 | /*
|
||
389 | * r
|
||
390 | */ unsigned char *comp;
|
||
391 | /* epoch number, needed by DTLS1 */
|
||
392 | /*
|
||
393 | * r
|
||
394 | */ unsigned long epoch;
|
||
395 | /* sequence number, needed by DTLS1 */
|
||
396 | /*
|
||
397 | * r
|
||
398 | */ unsigned char seq_num[8];
|
||
399 | } SSL3_RECORD;
|
||
400 | |||
401 | typedef struct ssl3_buffer_st {
|
||
402 | /* at least SSL3_RT_MAX_PACKET_SIZE bytes, see ssl3_setup_buffers() */
|
||
403 | unsigned char *buf;
|
||
404 | /* buffer size */
|
||
405 | size_t len;
|
||
406 | /* where to 'copy from' */
|
||
407 | int offset;
|
||
408 | /* how many bytes left */
|
||
409 | int left;
|
||
410 | } SSL3_BUFFER;
|
||
411 | |||
412 | # endif
|
||
413 | |||
414 | # define SSL3_CT_RSA_SIGN 1
|
||
415 | # define SSL3_CT_DSS_SIGN 2
|
||
416 | # define SSL3_CT_RSA_FIXED_DH 3
|
||
417 | # define SSL3_CT_DSS_FIXED_DH 4
|
||
418 | # define SSL3_CT_RSA_EPHEMERAL_DH 5
|
||
419 | # define SSL3_CT_DSS_EPHEMERAL_DH 6
|
||
420 | # define SSL3_CT_FORTEZZA_DMS 20
|
||
421 | /*
|
||
422 | * SSL3_CT_NUMBER is used to size arrays and it must be large enough to
|
||
423 | * contain all of the cert types defined either for SSLv3 and TLSv1.
|
||
424 | */
|
||
425 | # define SSL3_CT_NUMBER 9
|
||
426 | |||
427 | # define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001
|
||
428 | # define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002
|
||
429 | # define SSL3_FLAGS_POP_BUFFER 0x0004
|
||
430 | # define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
|
||
431 | # define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010
|
||
432 | # define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020
|
||
433 | /*
|
||
434 | * Set when the handshake is ready to process peer's ChangeCipherSpec message.
|
||
435 | * Cleared after the message has been processed.
|
||
436 | */
|
||
437 | # define SSL3_FLAGS_CCS_OK 0x0080
|
||
438 | |||
439 | /*
|
||
440 | * SSL3_FLAGS_SGC_RESTART_DONE is set when we restart a handshake because of
|
||
441 | * MS SGC and so prevents us from restarting the handshake in a loop. It's
|
||
442 | * reset on a renegotiation, so effectively limits the client to one restart
|
||
443 | * per negotiation. This limits the possibility of a DDoS attack where the
|
||
444 | * client handshakes in a loop using SGC to restart. Servers which permit
|
||
445 | * renegotiation can still be effected, but we can't prevent that.
|
||
446 | */
|
||
447 | # define SSL3_FLAGS_SGC_RESTART_DONE 0x0040
|
||
448 | |||
449 | # ifndef OPENSSL_NO_SSL_INTERN
|
||
450 | |||
451 | typedef struct ssl3_state_st {
|
||
452 | long flags;
|
||
453 | int delay_buf_pop_ret;
|
||
454 | unsigned char read_sequence[8];
|
||
455 | int read_mac_secret_size;
|
||
456 | unsigned char read_mac_secret[EVP_MAX_MD_SIZE];
|
||
457 | unsigned char write_sequence[8];
|
||
458 | int write_mac_secret_size;
|
||
459 | unsigned char write_mac_secret[EVP_MAX_MD_SIZE];
|
||
460 | unsigned char server_random[SSL3_RANDOM_SIZE];
|
||
461 | unsigned char client_random[SSL3_RANDOM_SIZE];
|
||
462 | /* flags for countermeasure against known-IV weakness */
|
||
463 | int need_empty_fragments;
|
||
464 | int empty_fragment_done;
|
||
465 | /* The value of 'extra' when the buffers were initialized */
|
||
466 | int init_extra;
|
||
467 | SSL3_BUFFER rbuf; /* read IO goes into here */
|
||
468 | SSL3_BUFFER wbuf; /* write IO goes into here */
|
||
469 | SSL3_RECORD rrec; /* each decoded record goes in here */
|
||
470 | SSL3_RECORD wrec; /* goes out from here */
|
||
471 | /*
|
||
472 | * storage for Alert/Handshake protocol data received but not yet
|
||
473 | * processed by ssl3_read_bytes:
|
||
474 | */
|
||
475 | unsigned char alert_fragment[2];
|
||
476 | unsigned int alert_fragment_len;
|
||
477 | unsigned char handshake_fragment[4];
|
||
478 | unsigned int handshake_fragment_len;
|
||
479 | /* partial write - check the numbers match */
|
||
480 | unsigned int wnum; /* number of bytes sent so far */
|
||
481 | int wpend_tot; /* number bytes written */
|
||
482 | int wpend_type;
|
||
483 | int wpend_ret; /* number of bytes submitted */
|
||
484 | const unsigned char *wpend_buf;
|
||
485 | /* used during startup, digest all incoming/outgoing packets */
|
||
486 | BIO *handshake_buffer;
|
||
487 | /*
|
||
488 | * When set of handshake digests is determined, buffer is hashed and
|
||
489 | * freed and MD_CTX-es for all required digests are stored in this array
|
||
490 | */
|
||
491 | EVP_MD_CTX **handshake_dgst;
|
||
492 | /*
|
||
493 | * Set whenever an expected ChangeCipherSpec message is processed.
|
||
494 | * Unset when the peer's Finished message is received.
|
||
495 | * Unexpected ChangeCipherSpec messages trigger a fatal alert.
|
||
496 | */
|
||
497 | int change_cipher_spec;
|
||
498 | int warn_alert;
|
||
499 | int fatal_alert;
|
||
500 | /*
|
||
501 | * we allow one fatal and one warning alert to be outstanding, send close
|
||
502 | * alert via the warning alert
|
||
503 | */
|
||
504 | int alert_dispatch;
|
||
505 | unsigned char send_alert[2];
|
||
506 | /*
|
||
507 | * This flag is set when we should renegotiate ASAP, basically when there
|
||
508 | * is no more data in the read or write buffers
|
||
509 | */
|
||
510 | int renegotiate;
|
||
511 | int total_renegotiations;
|
||
512 | int num_renegotiations;
|
||
513 | int in_read_app_data;
|
||
514 | /*
|
||
515 | * Opaque PRF input as used for the current handshake. These fields are
|
||
516 | * used only if TLSEXT_TYPE_opaque_prf_input is defined (otherwise, they
|
||
517 | * are merely present to improve binary compatibility)
|
||
518 | */
|
||
519 | void *client_opaque_prf_input;
|
||
520 | size_t client_opaque_prf_input_len;
|
||
521 | void *server_opaque_prf_input;
|
||
522 | size_t server_opaque_prf_input_len;
|
||
523 | struct {
|
||
524 | /* actually only needs to be 16+20 */
|
||
525 | unsigned char cert_verify_md[EVP_MAX_MD_SIZE * 2];
|
||
526 | /* actually only need to be 16+20 for SSLv3 and 12 for TLS */
|
||
527 | unsigned char finish_md[EVP_MAX_MD_SIZE * 2];
|
||
528 | int finish_md_len;
|
||
529 | unsigned char peer_finish_md[EVP_MAX_MD_SIZE * 2];
|
||
530 | int peer_finish_md_len;
|
||
531 | unsigned long message_size;
|
||
532 | int message_type;
|
||
533 | /* used to hold the new cipher we are going to use */
|
||
534 | const SSL_CIPHER *new_cipher;
|
||
535 | # ifndef OPENSSL_NO_DH
|
||
536 | DH *dh;
|
||
537 | # endif
|
||
538 | # ifndef OPENSSL_NO_ECDH
|
||
539 | EC_KEY *ecdh; /* holds short lived ECDH key */
|
||
540 | # endif
|
||
541 | /* used when SSL_ST_FLUSH_DATA is entered */
|
||
542 | int next_state;
|
||
543 | int reuse_message;
|
||
544 | /* used for certificate requests */
|
||
545 | int cert_req;
|
||
546 | int ctype_num;
|
||
547 | char ctype[SSL3_CT_NUMBER];
|
||
548 | STACK_OF(X509_NAME) *ca_names;
|
||
549 | int use_rsa_tmp;
|
||
550 | int key_block_length;
|
||
551 | unsigned char *key_block;
|
||
552 | const EVP_CIPHER *new_sym_enc;
|
||
553 | const EVP_MD *new_hash;
|
||
554 | int new_mac_pkey_type;
|
||
555 | int new_mac_secret_size;
|
||
556 | # ifndef OPENSSL_NO_COMP
|
||
557 | const SSL_COMP *new_compression;
|
||
558 | # else
|
||
559 | char *new_compression;
|
||
560 | # endif
|
||
561 | int cert_request;
|
||
562 | } tmp;
|
||
563 | |||
564 | /* Connection binding to prevent renegotiation attacks */
|
||
565 | unsigned char previous_client_finished[EVP_MAX_MD_SIZE];
|
||
566 | unsigned char previous_client_finished_len;
|
||
567 | unsigned char previous_server_finished[EVP_MAX_MD_SIZE];
|
||
568 | unsigned char previous_server_finished_len;
|
||
569 | int send_connection_binding; /* TODOEKR */
|
||
570 | |||
571 | # ifndef OPENSSL_NO_NEXTPROTONEG
|
||
572 | /*
|
||
573 | * Set if we saw the Next Protocol Negotiation extension from our peer.
|
||
574 | */
|
||
575 | int next_proto_neg_seen;
|
||
576 | # endif
|
||
577 | |||
578 | # ifndef OPENSSL_NO_TLSEXT
|
||
579 | # ifndef OPENSSL_NO_EC
|
||
580 | /*
|
||
581 | * This is set to true if we believe that this is a version of Safari
|
||
582 | * running on OS X 10.6 or newer. We wish to know this because Safari on
|
||
583 | * 10.8 .. 10.8.3 has broken ECDHE-ECDSA support.
|
||
584 | */
|
||
585 | char is_probably_safari;
|
||
586 | # endif /* !OPENSSL_NO_EC */
|
||
587 | # endif /* !OPENSSL_NO_TLSEXT */
|
||
588 | } SSL3_STATE;
|
||
589 | |||
590 | # endif
|
||
591 | |||
592 | /* SSLv3 */
|
||
593 | /*
|
||
594 | * client
|
||
595 | */
|
||
596 | /* extra state */
|
||
597 | # define SSL3_ST_CW_FLUSH (0x100|SSL_ST_CONNECT)
|
||
598 | # ifndef OPENSSL_NO_SCTP
|
||
599 | # define DTLS1_SCTP_ST_CW_WRITE_SOCK (0x310|SSL_ST_CONNECT)
|
||
600 | # define DTLS1_SCTP_ST_CR_READ_SOCK (0x320|SSL_ST_CONNECT)
|
||
601 | # endif
|
||
602 | /* write to server */
|
||
603 | # define SSL3_ST_CW_CLNT_HELLO_A (0x110|SSL_ST_CONNECT)
|
||
604 | # define SSL3_ST_CW_CLNT_HELLO_B (0x111|SSL_ST_CONNECT)
|
||
605 | /* read from server */
|
||
606 | # define SSL3_ST_CR_SRVR_HELLO_A (0x120|SSL_ST_CONNECT)
|
||
607 | # define SSL3_ST_CR_SRVR_HELLO_B (0x121|SSL_ST_CONNECT)
|
||
608 | # define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A (0x126|SSL_ST_CONNECT)
|
||
609 | # define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B (0x127|SSL_ST_CONNECT)
|
||
610 | # define SSL3_ST_CR_CERT_A (0x130|SSL_ST_CONNECT)
|
||
611 | # define SSL3_ST_CR_CERT_B (0x131|SSL_ST_CONNECT)
|
||
612 | # define SSL3_ST_CR_KEY_EXCH_A (0x140|SSL_ST_CONNECT)
|
||
613 | # define SSL3_ST_CR_KEY_EXCH_B (0x141|SSL_ST_CONNECT)
|
||
614 | # define SSL3_ST_CR_CERT_REQ_A (0x150|SSL_ST_CONNECT)
|
||
615 | # define SSL3_ST_CR_CERT_REQ_B (0x151|SSL_ST_CONNECT)
|
||
616 | # define SSL3_ST_CR_SRVR_DONE_A (0x160|SSL_ST_CONNECT)
|
||
617 | # define SSL3_ST_CR_SRVR_DONE_B (0x161|SSL_ST_CONNECT)
|
||
618 | /* write to server */
|
||
619 | # define SSL3_ST_CW_CERT_A (0x170|SSL_ST_CONNECT)
|
||
620 | # define SSL3_ST_CW_CERT_B (0x171|SSL_ST_CONNECT)
|
||
621 | # define SSL3_ST_CW_CERT_C (0x172|SSL_ST_CONNECT)
|
||
622 | # define SSL3_ST_CW_CERT_D (0x173|SSL_ST_CONNECT)
|
||
623 | # define SSL3_ST_CW_KEY_EXCH_A (0x180|SSL_ST_CONNECT)
|
||
624 | # define SSL3_ST_CW_KEY_EXCH_B (0x181|SSL_ST_CONNECT)
|
||
625 | # define SSL3_ST_CW_CERT_VRFY_A (0x190|SSL_ST_CONNECT)
|
||
626 | # define SSL3_ST_CW_CERT_VRFY_B (0x191|SSL_ST_CONNECT)
|
||
627 | # define SSL3_ST_CW_CHANGE_A (0x1A0|SSL_ST_CONNECT)
|
||
628 | # define SSL3_ST_CW_CHANGE_B (0x1A1|SSL_ST_CONNECT)
|
||
629 | # ifndef OPENSSL_NO_NEXTPROTONEG
|
||
630 | # define SSL3_ST_CW_NEXT_PROTO_A (0x200|SSL_ST_CONNECT)
|
||
631 | # define SSL3_ST_CW_NEXT_PROTO_B (0x201|SSL_ST_CONNECT)
|
||
632 | # endif
|
||
633 | # define SSL3_ST_CW_FINISHED_A (0x1B0|SSL_ST_CONNECT)
|
||
634 | # define SSL3_ST_CW_FINISHED_B (0x1B1|SSL_ST_CONNECT)
|
||
635 | /* read from server */
|
||
636 | # define SSL3_ST_CR_CHANGE_A (0x1C0|SSL_ST_CONNECT)
|
||
637 | # define SSL3_ST_CR_CHANGE_B (0x1C1|SSL_ST_CONNECT)
|
||
638 | # define SSL3_ST_CR_FINISHED_A (0x1D0|SSL_ST_CONNECT)
|
||
639 | # define SSL3_ST_CR_FINISHED_B (0x1D1|SSL_ST_CONNECT)
|
||
640 | # define SSL3_ST_CR_SESSION_TICKET_A (0x1E0|SSL_ST_CONNECT)
|
||
641 | # define SSL3_ST_CR_SESSION_TICKET_B (0x1E1|SSL_ST_CONNECT)
|
||
642 | # define SSL3_ST_CR_CERT_STATUS_A (0x1F0|SSL_ST_CONNECT)
|
||
643 | # define SSL3_ST_CR_CERT_STATUS_B (0x1F1|SSL_ST_CONNECT)
|
||
644 | |||
645 | /* server */
|
||
646 | /* extra state */
|
||
647 | # define SSL3_ST_SW_FLUSH (0x100|SSL_ST_ACCEPT)
|
||
648 | # ifndef OPENSSL_NO_SCTP
|
||
649 | # define DTLS1_SCTP_ST_SW_WRITE_SOCK (0x310|SSL_ST_ACCEPT)
|
||
650 | # define DTLS1_SCTP_ST_SR_READ_SOCK (0x320|SSL_ST_ACCEPT)
|
||
651 | # endif
|
||
652 | /* read from client */
|
||
653 | /* Do not change the number values, they do matter */
|
||
654 | # define SSL3_ST_SR_CLNT_HELLO_A (0x110|SSL_ST_ACCEPT)
|
||
655 | # define SSL3_ST_SR_CLNT_HELLO_B (0x111|SSL_ST_ACCEPT)
|
||
656 | # define SSL3_ST_SR_CLNT_HELLO_C (0x112|SSL_ST_ACCEPT)
|
||
657 | /* write to client */
|
||
658 | # define DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A (0x113|SSL_ST_ACCEPT)
|
||
659 | # define DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B (0x114|SSL_ST_ACCEPT)
|
||
660 | # define SSL3_ST_SW_HELLO_REQ_A (0x120|SSL_ST_ACCEPT)
|
||
661 | # define SSL3_ST_SW_HELLO_REQ_B (0x121|SSL_ST_ACCEPT)
|
||
662 | # define SSL3_ST_SW_HELLO_REQ_C (0x122|SSL_ST_ACCEPT)
|
||
663 | # define SSL3_ST_SW_SRVR_HELLO_A (0x130|SSL_ST_ACCEPT)
|
||
664 | # define SSL3_ST_SW_SRVR_HELLO_B (0x131|SSL_ST_ACCEPT)
|
||
665 | # define SSL3_ST_SW_CERT_A (0x140|SSL_ST_ACCEPT)
|
||
666 | # define SSL3_ST_SW_CERT_B (0x141|SSL_ST_ACCEPT)
|
||
667 | # define SSL3_ST_SW_KEY_EXCH_A (0x150|SSL_ST_ACCEPT)
|
||
668 | # define SSL3_ST_SW_KEY_EXCH_B (0x151|SSL_ST_ACCEPT)
|
||
669 | # define SSL3_ST_SW_CERT_REQ_A (0x160|SSL_ST_ACCEPT)
|
||
670 | # define SSL3_ST_SW_CERT_REQ_B (0x161|SSL_ST_ACCEPT)
|
||
671 | # define SSL3_ST_SW_SRVR_DONE_A (0x170|SSL_ST_ACCEPT)
|
||
672 | # define SSL3_ST_SW_SRVR_DONE_B (0x171|SSL_ST_ACCEPT)
|
||
673 | /* read from client */
|
||
674 | # define SSL3_ST_SR_CERT_A (0x180|SSL_ST_ACCEPT)
|
||
675 | # define SSL3_ST_SR_CERT_B (0x181|SSL_ST_ACCEPT)
|
||
676 | # define SSL3_ST_SR_KEY_EXCH_A (0x190|SSL_ST_ACCEPT)
|
||
677 | # define SSL3_ST_SR_KEY_EXCH_B (0x191|SSL_ST_ACCEPT)
|
||
678 | # define SSL3_ST_SR_CERT_VRFY_A (0x1A0|SSL_ST_ACCEPT)
|
||
679 | # define SSL3_ST_SR_CERT_VRFY_B (0x1A1|SSL_ST_ACCEPT)
|
||
680 | # define SSL3_ST_SR_CHANGE_A (0x1B0|SSL_ST_ACCEPT)
|
||
681 | # define SSL3_ST_SR_CHANGE_B (0x1B1|SSL_ST_ACCEPT)
|
||
682 | # ifndef OPENSSL_NO_NEXTPROTONEG
|
||
683 | # define SSL3_ST_SR_NEXT_PROTO_A (0x210|SSL_ST_ACCEPT)
|
||
684 | # define SSL3_ST_SR_NEXT_PROTO_B (0x211|SSL_ST_ACCEPT)
|
||
685 | # endif
|
||
686 | # define SSL3_ST_SR_FINISHED_A (0x1C0|SSL_ST_ACCEPT)
|
||
687 | # define SSL3_ST_SR_FINISHED_B (0x1C1|SSL_ST_ACCEPT)
|
||
688 | /* write to client */
|
||
689 | # define SSL3_ST_SW_CHANGE_A (0x1D0|SSL_ST_ACCEPT)
|
||
690 | # define SSL3_ST_SW_CHANGE_B (0x1D1|SSL_ST_ACCEPT)
|
||
691 | # define SSL3_ST_SW_FINISHED_A (0x1E0|SSL_ST_ACCEPT)
|
||
692 | # define SSL3_ST_SW_FINISHED_B (0x1E1|SSL_ST_ACCEPT)
|
||
693 | # define SSL3_ST_SW_SESSION_TICKET_A (0x1F0|SSL_ST_ACCEPT)
|
||
694 | # define SSL3_ST_SW_SESSION_TICKET_B (0x1F1|SSL_ST_ACCEPT)
|
||
695 | # define SSL3_ST_SW_CERT_STATUS_A (0x200|SSL_ST_ACCEPT)
|
||
696 | # define SSL3_ST_SW_CERT_STATUS_B (0x201|SSL_ST_ACCEPT)
|
||
697 | |||
698 | # define SSL3_MT_HELLO_REQUEST 0
|
||
699 | # define SSL3_MT_CLIENT_HELLO 1
|
||
700 | # define SSL3_MT_SERVER_HELLO 2
|
||
701 | # define SSL3_MT_NEWSESSION_TICKET 4
|
||
702 | # define SSL3_MT_CERTIFICATE 11
|
||
703 | # define SSL3_MT_SERVER_KEY_EXCHANGE 12
|
||
704 | # define SSL3_MT_CERTIFICATE_REQUEST 13
|
||
705 | # define SSL3_MT_SERVER_DONE 14
|
||
706 | # define SSL3_MT_CERTIFICATE_VERIFY 15
|
||
707 | # define SSL3_MT_CLIENT_KEY_EXCHANGE 16
|
||
708 | # define SSL3_MT_FINISHED 20
|
||
709 | # define SSL3_MT_CERTIFICATE_STATUS 22
|
||
710 | # ifndef OPENSSL_NO_NEXTPROTONEG
|
||
711 | # define SSL3_MT_NEXT_PROTO 67
|
||
712 | # endif
|
||
713 | # define DTLS1_MT_HELLO_VERIFY_REQUEST 3
|
||
714 | |||
715 | # define SSL3_MT_CCS 1
|
||
716 | |||
717 | /* These are used when changing over to a new cipher */
|
||
718 | # define SSL3_CC_READ 0x01
|
||
719 | # define SSL3_CC_WRITE 0x02
|
||
720 | # define SSL3_CC_CLIENT 0x10
|
||
721 | # define SSL3_CC_SERVER 0x20
|
||
722 | # define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE)
|
||
723 | # define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ)
|
||
724 | # define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ)
|
||
725 | # define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE)
|
||
726 | |||
727 | #ifdef __cplusplus
|
||
728 | }
|
||
729 | #endif
|
||
730 | #endif |