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