PolarSSL v1.3.7
ssl_ciphersuites.c
Go to the documentation of this file.
1 
28 #if !defined(POLARSSL_CONFIG_FILE)
29 #include "polarssl/config.h"
30 #else
31 #include POLARSSL_CONFIG_FILE
32 #endif
33 
34 #if defined(POLARSSL_SSL_TLS_C)
35 
37 #include "polarssl/ssl.h"
38 
39 #include <stdlib.h>
40 
41 #if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
42  !defined(EFI32)
43 #define strcasecmp _stricmp
44 #endif
45 
46 /*
47  * Ordered from most preferred to least preferred in terms of security.
48  *
49  * Current rule (except rc4, weak and null which come last):
50  * 1. By key exchange:
51  * Forward-secure non-PSK > forward-secure PSK > other non-PSK > other PSK
52  * 2. By key length and cipher:
53  * AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES
54  * 3. By cipher mode when relevant GCM > CBC
55  * 4. By hash function used
56  * 5. By key exchange/auth again: EC > non-EC
57  */
58 static const int ciphersuite_preference[] =
59 {
60  /* All AES-256 ephemeral suites */
70 
71  /* All CAMELLIA-256 ephemeral suites */
79 
80  /* All AES-128 ephemeral suites */
90 
91  /* All CAMELLIA-128 ephemeral suites */
99 
100  /* All remaining >= 128-bit ephemeral suites */
104 
105  /* The PSK ephemeral suites */
114 
123 
126 
127  /* All AES-256 suites */
137 
138  /* All CAMELLIA-256 suites */
146 
147  /* All AES-128 suites */
157 
158  /* All CAMELLIA-128 suites */
166 
167  /* All remaining >= 128-bit suites */
171 
172  /* The RSA PSK suites */
178 
184 
186 
187  /* The PSK suites */
193 
199 
201 
202  /* RC4 suites */
213 
214  /* Weak suites */
217 
218  /* NULL suites */
227 
239 
240  0
241 };
242 
243 #define MAX_CIPHERSUITES 160
244 static int supported_ciphersuites[MAX_CIPHERSUITES];
245 static int supported_init = 0;
246 
247 static const ssl_ciphersuite_t ciphersuite_definitions[] =
248 {
249 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
250 #if defined(POLARSSL_AES_C)
251 #if defined(POLARSSL_SHA1_C)
252 #if defined(POLARSSL_CIPHER_MODE_CBC)
253  { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
257  0 },
258  { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
262  0 },
263 #endif /* POLARSSL_CIPHER_MODE_CBC */
264 #endif /* POLARSSL_SHA1_C */
265 #if defined(POLARSSL_SHA256_C)
266 #if defined(POLARSSL_CIPHER_MODE_CBC)
267  { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
271  0 },
272 #endif /* POLARSSL_CIPHER_MODE_CBC */
273 #if defined(POLARSSL_GCM_C)
274  { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
278  0 },
279 #endif /* POLARSSL_GCM_C */
280 #endif /* POLARSSL_SHA256_C */
281 #if defined(POLARSSL_SHA512_C)
282 #if defined(POLARSSL_CIPHER_MODE_CBC)
283  { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
287  0 },
288 #endif /* POLARSSL_CIPHER_MODE_CBC */
289 #if defined(POLARSSL_GCM_C)
290  { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
294  0 },
295 #endif /* POLARSSL_GCM_C */
296 #endif /* POLARSSL_SHA512_C */
297 #endif /* POLARSSL_AES_C */
298 
299 #if defined(POLARSSL_CAMELLIA_C)
300 #if defined(POLARSSL_CIPHER_MODE_CBC)
301 #if defined(POLARSSL_SHA256_C)
302  { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
306  0 },
307 #endif /* POLARSSL_SHA256_C */
308 #if defined(POLARSSL_SHA512_C)
309  { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
313  0 },
314 #endif /* POLARSSL_SHA512_C */
315 #endif /* POLARSSL_CIPHER_MODE_CBC */
316 
317 #if defined(POLARSSL_GCM_C)
318 #if defined(POLARSSL_SHA256_C)
319  { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
323  0 },
324 #endif /* POLARSSL_SHA256_C */
325 #if defined(POLARSSL_SHA512_C)
326  { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
330  0 },
331 #endif /* POLARSSL_SHA512_C */
332 #endif /* POLARSSL_GCM_C */
333 #endif /* POLARSSL_CAMELLIA_C */
334 
335 #if defined(POLARSSL_DES_C)
336 #if defined(POLARSSL_CIPHER_MODE_CBC)
337 #if defined(POLARSSL_SHA1_C)
338  { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
342  0 },
343 #endif /* POLARSSL_SHA1_C */
344 #endif /* POLARSSL_CIPHER_MODE_CBC */
345 #endif /* POLARSSL_DES_C */
346 
347 #if defined(POLARSSL_ARC4_C)
348 #if defined(POLARSSL_SHA1_C)
349  { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
353  0 },
354 #endif /* POLARSSL_SHA1_C */
355 #endif /* POLARSSL_ARC4_C */
356 
357 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
358 #if defined(POLARSSL_SHA1_C)
359  { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
364 #endif /* POLARSSL_SHA1_C */
365 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
366 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
367 
368 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
369 #if defined(POLARSSL_AES_C)
370 #if defined(POLARSSL_SHA1_C)
371 #if defined(POLARSSL_CIPHER_MODE_CBC)
372  { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
376  0 },
377  { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
381  0 },
382 #endif /* POLARSSL_CIPHER_MODE_CBC */
383 #endif /* POLARSSL_SHA1_C */
384 #if defined(POLARSSL_SHA256_C)
385 #if defined(POLARSSL_CIPHER_MODE_CBC)
386  { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
390  0 },
391 #endif /* POLARSSL_CIPHER_MODE_CBC */
392 #if defined(POLARSSL_GCM_C)
393  { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
397  0 },
398 #endif /* POLARSSL_GCM_C */
399 #endif /* POLARSSL_SHA256_C */
400 #if defined(POLARSSL_SHA512_C)
401 #if defined(POLARSSL_CIPHER_MODE_CBC)
402  { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
406  0 },
407 #endif /* POLARSSL_CIPHER_MODE_CBC */
408 #if defined(POLARSSL_GCM_C)
409  { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
413  0 },
414 #endif /* POLARSSL_GCM_C */
415 #endif /* POLARSSL_SHA512_C */
416 #endif /* POLARSSL_AES_C */
417 
418 #if defined(POLARSSL_CAMELLIA_C)
419 #if defined(POLARSSL_CIPHER_MODE_CBC)
420 #if defined(POLARSSL_SHA256_C)
421  { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
425  0 },
426 #endif /* POLARSSL_SHA256_C */
427 #if defined(POLARSSL_SHA512_C)
428  { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
432  0 },
433 #endif /* POLARSSL_SHA512_C */
434 #endif /* POLARSSL_CIPHER_MODE_CBC */
435 
436 #if defined(POLARSSL_GCM_C)
437 #if defined(POLARSSL_SHA256_C)
438  { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
442  0 },
443 #endif /* POLARSSL_SHA256_C */
444 #if defined(POLARSSL_SHA512_C)
445  { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
449  0 },
450 #endif /* POLARSSL_SHA512_C */
451 #endif /* POLARSSL_GCM_C */
452 #endif /* POLARSSL_CAMELLIA_C */
453 
454 #if defined(POLARSSL_DES_C)
455 #if defined(POLARSSL_CIPHER_MODE_CBC)
456 #if defined(POLARSSL_SHA1_C)
457  { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
461  0 },
462 #endif /* POLARSSL_SHA1_C */
463 #endif /* POLARSSL_CIPHER_MODE_CBC */
464 #endif /* POLARSSL_DES_C */
465 
466 #if defined(POLARSSL_ARC4_C)
467 #if defined(POLARSSL_SHA1_C)
468  { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
472  0 },
473 #endif /* POLARSSL_SHA1_C */
474 #endif /* POLARSSL_ARC4_C */
475 
476 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
477 #if defined(POLARSSL_SHA1_C)
478  { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
483 #endif /* POLARSSL_SHA1_C */
484 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
485 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
486 
487 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
488 #if defined(POLARSSL_AES_C)
489 #if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
490  { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
494  0 },
495 #endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
496 
497 #if defined(POLARSSL_SHA256_C)
498 #if defined(POLARSSL_GCM_C)
499  { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
503  0 },
504 #endif /* POLARSSL_GCM_C */
505 
506 #if defined(POLARSSL_CIPHER_MODE_CBC)
507  { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
511  0 },
512 
513  { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
517  0 },
518 #endif /* POLARSSL_CIPHER_MODE_CBC */
519 #endif /* POLARSSL_SHA256_C */
520 
521 #if defined(POLARSSL_CIPHER_MODE_CBC)
522 #if defined(POLARSSL_SHA1_C)
523  { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
527  0 },
528 
529  { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
533  0 },
534 #endif /* POLARSSL_SHA1_C */
535 #endif /* POLARSSL_CIPHER_MODE_CBC */
536 #endif /* POLARSSL_AES_C */
537 
538 #if defined(POLARSSL_CAMELLIA_C)
539 #if defined(POLARSSL_CIPHER_MODE_CBC)
540 #if defined(POLARSSL_SHA256_C)
541  { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
545  0 },
546 
547  { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
551  0 },
552 #endif /* POLARSSL_SHA256_C */
553 
554 #if defined(POLARSSL_SHA1_C)
555  { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
559  0 },
560 
561  { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
565  0 },
566 #endif /* POLARSSL_SHA1_C */
567 #endif /* POLARSSL_CIPHER_MODE_CBC */
568 #if defined(POLARSSL_GCM_C)
569 #if defined(POLARSSL_SHA256_C)
570  { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
574  0 },
575 #endif /* POLARSSL_SHA256_C */
576 
577 #if defined(POLARSSL_SHA512_C)
578  { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
582  0 },
583 #endif /* POLARSSL_SHA512_C */
584 #endif /* POLARSSL_GCM_C */
585 #endif /* POLARSSL_CAMELLIA_C */
586 
587 #if defined(POLARSSL_DES_C)
588 #if defined(POLARSSL_CIPHER_MODE_CBC)
589 #if defined(POLARSSL_SHA1_C)
590  { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
594  0 },
595 #endif /* POLARSSL_SHA1_C */
596 #endif /* POLARSSL_CIPHER_MODE_CBC */
597 #endif /* POLARSSL_DES_C */
598 #endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
599 
600 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
601 #if defined(POLARSSL_AES_C)
602 #if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
603  { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
607  0 },
608 #endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
609 
610 #if defined(POLARSSL_SHA256_C)
611 #if defined(POLARSSL_GCM_C)
612  { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
616  0 },
617 #endif /* POLARSSL_GCM_C */
618 
619 #if defined(POLARSSL_CIPHER_MODE_CBC)
620  { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
624  0 },
625 
626  { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
630  0 },
631 #endif /* POLARSSL_CIPHER_MODE_CBC */
632 #endif /* POLARSSL_SHA256_C */
633 
634 #if defined(POLARSSL_SHA1_C)
635 #if defined(POLARSSL_CIPHER_MODE_CBC)
636  { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
640  0 },
641 
642  { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
646  0 },
647 #endif /* POLARSSL_CIPHER_MODE_CBC */
648 #endif /* POLARSSL_SHA1_C */
649 #endif /* POLARSSL_AES_C */
650 
651 #if defined(POLARSSL_CAMELLIA_C)
652 #if defined(POLARSSL_CIPHER_MODE_CBC)
653 #if defined(POLARSSL_SHA256_C)
654  { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
658  0 },
659 
660  { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
664  0 },
665 #endif /* POLARSSL_SHA256_C */
666 
667 #if defined(POLARSSL_SHA1_C)
668  { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
672  0 },
673 
674  { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
678  0 },
679 #endif /* POLARSSL_SHA1_C */
680 #endif /* POLARSSL_CIPHER_MODE_CBC */
681 
682 #if defined(POLARSSL_GCM_C)
683 #if defined(POLARSSL_SHA256_C)
684  { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
688  0 },
689 #endif /* POLARSSL_SHA256_C */
690 
691 #if defined(POLARSSL_SHA1_C)
692  { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
696  0 },
697 #endif /* POLARSSL_SHA1_C */
698 #endif /* POLARSSL_GCM_C */
699 #endif /* POLARSSL_CAMELLIA_C */
700 
701 #if defined(POLARSSL_DES_C)
702 #if defined(POLARSSL_CIPHER_MODE_CBC)
703 #if defined(POLARSSL_SHA1_C)
704  { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
708  0 },
709 #endif /* POLARSSL_SHA1_C */
710 #endif /* POLARSSL_CIPHER_MODE_CBC */
711 #endif /* POLARSSL_DES_C */
712 
713 #if defined(POLARSSL_ARC4_C)
714 #if defined(POLARSSL_MD5_C)
715  { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
719  0 },
720 #endif
721 
722 #if defined(POLARSSL_SHA1_C)
723  { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
727  0 },
728 #endif
729 #endif /* POLARSSL_ARC4_C */
730 #endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
731 
732 #if defined(POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED)
733 #if defined(POLARSSL_AES_C)
734 #if defined(POLARSSL_SHA1_C)
735 #if defined(POLARSSL_CIPHER_MODE_CBC)
736  { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA",
740  0 },
741  { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA",
745  0 },
746 #endif /* POLARSSL_CIPHER_MODE_CBC */
747 #endif /* POLARSSL_SHA1_C */
748 #if defined(POLARSSL_SHA256_C)
749 #if defined(POLARSSL_CIPHER_MODE_CBC)
750  { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA256",
754  0 },
755 #endif /* POLARSSL_CIPHER_MODE_CBC */
756 #if defined(POLARSSL_GCM_C)
757  { TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256",
761  0 },
762 #endif /* POLARSSL_GCM_C */
763 #endif /* POLARSSL_SHA256_C */
764 #if defined(POLARSSL_SHA512_C)
765 #if defined(POLARSSL_CIPHER_MODE_CBC)
766  { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA384",
770  0 },
771 #endif /* POLARSSL_CIPHER_MODE_CBC */
772 #if defined(POLARSSL_GCM_C)
773  { TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-AES-256-GCM-SHA384",
777  0 },
778 #endif /* POLARSSL_GCM_C */
779 #endif /* POLARSSL_SHA512_C */
780 #endif /* POLARSSL_AES_C */
781 
782 #if defined(POLARSSL_CAMELLIA_C)
783 #if defined(POLARSSL_CIPHER_MODE_CBC)
784 #if defined(POLARSSL_SHA256_C)
785  { TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-CBC-SHA256",
789  0 },
790 #endif /* POLARSSL_SHA256_C */
791 #if defined(POLARSSL_SHA512_C)
792  { TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-CBC-SHA384",
796  0 },
797 #endif /* POLARSSL_SHA512_C */
798 #endif /* POLARSSL_CIPHER_MODE_CBC */
799 
800 #if defined(POLARSSL_GCM_C)
801 #if defined(POLARSSL_SHA256_C)
802  { TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-GCM-SHA256",
806  0 },
807 #endif /* POLARSSL_SHA256_C */
808 #if defined(POLARSSL_SHA512_C)
809  { TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-GCM-SHA384",
813  0 },
814 #endif /* POLARSSL_SHA512_C */
815 #endif /* POLARSSL_GCM_C */
816 #endif /* POLARSSL_CAMELLIA_C */
817 
818 #if defined(POLARSSL_DES_C)
819 #if defined(POLARSSL_CIPHER_MODE_CBC)
820 #if defined(POLARSSL_SHA1_C)
821  { TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-RSA-WITH-3DES-EDE-CBC-SHA",
825  0 },
826 #endif /* POLARSSL_SHA1_C */
827 #endif /* POLARSSL_CIPHER_MODE_CBC */
828 #endif /* POLARSSL_DES_C */
829 
830 #if defined(POLARSSL_ARC4_C)
831 #if defined(POLARSSL_SHA1_C)
832  { TLS_ECDH_RSA_WITH_RC4_128_SHA, "TLS-ECDH-RSA-WITH-RC4-128-SHA",
836  0 },
837 #endif /* POLARSSL_SHA1_C */
838 #endif /* POLARSSL_ARC4_C */
839 
840 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
841 #if defined(POLARSSL_SHA1_C)
842  { TLS_ECDH_RSA_WITH_NULL_SHA, "TLS-ECDH-RSA-WITH-NULL-SHA",
847 #endif /* POLARSSL_SHA1_C */
848 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
849 #endif /* POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED */
850 
851 #if defined(POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
852 #if defined(POLARSSL_AES_C)
853 #if defined(POLARSSL_SHA1_C)
854 #if defined(POLARSSL_CIPHER_MODE_CBC)
855  { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA",
859  0 },
860  { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA",
864  0 },
865 #endif /* POLARSSL_CIPHER_MODE_CBC */
866 #endif /* POLARSSL_SHA1_C */
867 #if defined(POLARSSL_SHA256_C)
868 #if defined(POLARSSL_CIPHER_MODE_CBC)
869  { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA256",
873  0 },
874 #endif /* POLARSSL_CIPHER_MODE_CBC */
875 #if defined(POLARSSL_GCM_C)
876  { TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256",
880  0 },
881 #endif /* POLARSSL_GCM_C */
882 #endif /* POLARSSL_SHA256_C */
883 #if defined(POLARSSL_SHA512_C)
884 #if defined(POLARSSL_CIPHER_MODE_CBC)
885  { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384",
889  0 },
890 #endif /* POLARSSL_CIPHER_MODE_CBC */
891 #if defined(POLARSSL_GCM_C)
892  { TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384",
896  0 },
897 #endif /* POLARSSL_GCM_C */
898 #endif /* POLARSSL_SHA512_C */
899 #endif /* POLARSSL_AES_C */
900 
901 #if defined(POLARSSL_CAMELLIA_C)
902 #if defined(POLARSSL_CIPHER_MODE_CBC)
903 #if defined(POLARSSL_SHA256_C)
904  { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
908  0 },
909 #endif /* POLARSSL_SHA256_C */
910 #if defined(POLARSSL_SHA512_C)
911  { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
915  0 },
916 #endif /* POLARSSL_SHA512_C */
917 #endif /* POLARSSL_CIPHER_MODE_CBC */
918 
919 #if defined(POLARSSL_GCM_C)
920 #if defined(POLARSSL_SHA256_C)
921  { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
925  0 },
926 #endif /* POLARSSL_SHA256_C */
927 #if defined(POLARSSL_SHA512_C)
928  { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
932  0 },
933 #endif /* POLARSSL_SHA512_C */
934 #endif /* POLARSSL_GCM_C */
935 #endif /* POLARSSL_CAMELLIA_C */
936 
937 #if defined(POLARSSL_DES_C)
938 #if defined(POLARSSL_CIPHER_MODE_CBC)
939 #if defined(POLARSSL_SHA1_C)
940  { TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-ECDSA-WITH-3DES-EDE-CBC-SHA",
944  0 },
945 #endif /* POLARSSL_SHA1_C */
946 #endif /* POLARSSL_CIPHER_MODE_CBC */
947 #endif /* POLARSSL_DES_C */
948 
949 #if defined(POLARSSL_ARC4_C)
950 #if defined(POLARSSL_SHA1_C)
951  { TLS_ECDH_ECDSA_WITH_RC4_128_SHA, "TLS-ECDH-ECDSA-WITH-RC4-128-SHA",
955  0 },
956 #endif /* POLARSSL_SHA1_C */
957 #endif /* POLARSSL_ARC4_C */
958 
959 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
960 #if defined(POLARSSL_SHA1_C)
961  { TLS_ECDH_ECDSA_WITH_NULL_SHA, "TLS-ECDH-ECDSA-WITH-NULL-SHA",
966 #endif /* POLARSSL_SHA1_C */
967 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
968 #endif /* POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
969 
970 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
971 #if defined(POLARSSL_AES_C)
972 #if defined(POLARSSL_GCM_C)
973 #if defined(POLARSSL_SHA256_C)
974  { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
978  0 },
979 #endif /* POLARSSL_SHA256_C */
980 
981 #if defined(POLARSSL_SHA512_C)
982  { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
986  0 },
987 #endif /* POLARSSL_SHA512_C */
988 #endif /* POLARSSL_GCM_C */
989 
990 #if defined(POLARSSL_CIPHER_MODE_CBC)
991 #if defined(POLARSSL_SHA256_C)
992  { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
996  0 },
997 #endif /* POLARSSL_SHA256_C */
998 
999 #if defined(POLARSSL_SHA512_C)
1000  { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
1004  0 },
1005 #endif /* POLARSSL_SHA512_C */
1006 
1007 #if defined(POLARSSL_SHA1_C)
1008  { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
1012  0 },
1013 
1014  { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
1018  0 },
1019 #endif /* POLARSSL_SHA1_C */
1020 #endif /* POLARSSL_CIPHER_MODE_CBC */
1021 #endif /* POLARSSL_AES_C */
1022 
1023 #if defined(POLARSSL_CAMELLIA_C)
1024 #if defined(POLARSSL_CIPHER_MODE_CBC)
1025 #if defined(POLARSSL_SHA256_C)
1026  { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1030  0 },
1031 #endif /* POLARSSL_SHA256_C */
1032 
1033 #if defined(POLARSSL_SHA512_C)
1034  { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1038  0 },
1039 #endif /* POLARSSL_SHA512_C */
1040 #endif /* POLARSSL_CIPHER_MODE_CBC */
1041 
1042 #if defined(POLARSSL_GCM_C)
1043 #if defined(POLARSSL_SHA256_C)
1044  { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1048  0 },
1049 #endif /* POLARSSL_SHA256_C */
1050 
1051 #if defined(POLARSSL_SHA512_C)
1052  { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1056  0 },
1057 #endif /* POLARSSL_SHA512_C */
1058 #endif /* POLARSSL_GCM_C */
1059 #endif /* POLARSSL_CAMELLIA_C */
1060 
1061 #if defined(POLARSSL_DES_C)
1062 #if defined(POLARSSL_CIPHER_MODE_CBC)
1063 #if defined(POLARSSL_SHA1_C)
1064  { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
1068  0 },
1069 #endif /* POLARSSL_SHA1_C */
1070 #endif /* POLARSSL_CIPHER_MODE_CBC */
1071 #endif /* POLARSSL_DES_C */
1072 
1073 #if defined(POLARSSL_ARC4_C)
1074 #if defined(POLARSSL_SHA1_C)
1075  { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
1079  0 },
1080 #endif /* POLARSSL_SHA1_C */
1081 #endif /* POLARSSL_ARC4_C */
1082 #endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1083 
1084 #if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
1085 #if defined(POLARSSL_AES_C)
1086 #if defined(POLARSSL_GCM_C)
1087 #if defined(POLARSSL_SHA256_C)
1088  { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
1092  0 },
1093 #endif /* POLARSSL_SHA256_C */
1094 
1095 #if defined(POLARSSL_SHA512_C)
1096  { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
1100  0 },
1101 #endif /* POLARSSL_SHA512_C */
1102 #endif /* POLARSSL_GCM_C */
1103 
1104 #if defined(POLARSSL_CIPHER_MODE_CBC)
1105 #if defined(POLARSSL_SHA256_C)
1106  { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
1110  0 },
1111 #endif /* POLARSSL_SHA256_C */
1112 
1113 #if defined(POLARSSL_SHA512_C)
1114  { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
1118  0 },
1119 #endif /* POLARSSL_SHA512_C */
1120 
1121 #if defined(POLARSSL_SHA1_C)
1122  { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
1126  0 },
1127 
1128  { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
1132  0 },
1133 #endif /* POLARSSL_SHA1_C */
1134 #endif /* POLARSSL_CIPHER_MODE_CBC */
1135 #endif /* POLARSSL_AES_C */
1136 
1137 #if defined(POLARSSL_CAMELLIA_C)
1138 #if defined(POLARSSL_CIPHER_MODE_CBC)
1139 #if defined(POLARSSL_SHA256_C)
1140  { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1144  0 },
1145 #endif /* POLARSSL_SHA256_C */
1146 
1147 #if defined(POLARSSL_SHA512_C)
1148  { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1152  0 },
1153 #endif /* POLARSSL_SHA512_C */
1154 #endif /* POLARSSL_CIPHER_MODE_CBC */
1155 
1156 #if defined(POLARSSL_GCM_C)
1157 #if defined(POLARSSL_SHA256_C)
1158  { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1162  0 },
1163 #endif /* POLARSSL_SHA256_C */
1164 
1165 #if defined(POLARSSL_SHA512_C)
1166  { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1170  0 },
1171 #endif /* POLARSSL_SHA512_C */
1172 #endif /* POLARSSL_GCM_C */
1173 #endif /* POLARSSL_CAMELLIA_C */
1174 
1175 #if defined(POLARSSL_DES_C)
1176 #if defined(POLARSSL_CIPHER_MODE_CBC)
1177 #if defined(POLARSSL_SHA1_C)
1178  { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
1182  0 },
1183 #endif /* POLARSSL_SHA1_C */
1184 #endif /* POLARSSL_CIPHER_MODE_CBC */
1185 #endif /* POLARSSL_DES_C */
1186 
1187 #if defined(POLARSSL_ARC4_C)
1188 #if defined(POLARSSL_SHA1_C)
1189  { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
1193  0 },
1194 #endif /* POLARSSL_SHA1_C */
1195 #endif /* POLARSSL_ARC4_C */
1196 #endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1197 
1198 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
1199 #if defined(POLARSSL_AES_C)
1200 
1201 #if defined(POLARSSL_CIPHER_MODE_CBC)
1202 #if defined(POLARSSL_SHA256_C)
1203  { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
1207  0 },
1208 #endif /* POLARSSL_SHA256_C */
1209 
1210 #if defined(POLARSSL_SHA512_C)
1211  { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
1215  0 },
1216 #endif /* POLARSSL_SHA512_C */
1217 
1218 #if defined(POLARSSL_SHA1_C)
1219  { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
1223  0 },
1224 
1225  { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
1229  0 },
1230 #endif /* POLARSSL_SHA1_C */
1231 #endif /* POLARSSL_CIPHER_MODE_CBC */
1232 #endif /* POLARSSL_AES_C */
1233 
1234 #if defined(POLARSSL_CAMELLIA_C)
1235 #if defined(POLARSSL_CIPHER_MODE_CBC)
1236 #if defined(POLARSSL_SHA256_C)
1237  { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1241  0 },
1242 #endif /* POLARSSL_SHA256_C */
1243 
1244 #if defined(POLARSSL_SHA512_C)
1245  { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1249  0 },
1250 #endif /* POLARSSL_SHA512_C */
1251 #endif /* POLARSSL_CIPHER_MODE_CBC */
1252 #endif /* POLARSSL_CAMELLIA_C */
1253 
1254 #if defined(POLARSSL_DES_C)
1255 #if defined(POLARSSL_CIPHER_MODE_CBC)
1256 #if defined(POLARSSL_SHA1_C)
1257  { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
1261  0 },
1262 #endif /* POLARSSL_SHA1_C */
1263 #endif /* POLARSSL_CIPHER_MODE_CBC */
1264 #endif /* POLARSSL_DES_C */
1265 
1266 #if defined(POLARSSL_ARC4_C)
1267 #if defined(POLARSSL_SHA1_C)
1268  { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
1272  0 },
1273 #endif /* POLARSSL_SHA1_C */
1274 #endif /* POLARSSL_ARC4_C */
1275 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1276 
1277 #if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
1278 #if defined(POLARSSL_AES_C)
1279 #if defined(POLARSSL_GCM_C)
1280 #if defined(POLARSSL_SHA256_C)
1281  { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
1285  0 },
1286 #endif /* POLARSSL_SHA256_C */
1287 
1288 #if defined(POLARSSL_SHA512_C)
1289  { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
1293  0 },
1294 #endif /* POLARSSL_SHA512_C */
1295 #endif /* POLARSSL_GCM_C */
1296 
1297 #if defined(POLARSSL_CIPHER_MODE_CBC)
1298 #if defined(POLARSSL_SHA256_C)
1299  { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1303  0 },
1304 #endif /* POLARSSL_SHA256_C */
1305 
1306 #if defined(POLARSSL_SHA512_C)
1307  { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1311  0 },
1312 #endif /* POLARSSL_SHA512_C */
1313 
1314 #if defined(POLARSSL_SHA1_C)
1315  { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
1319  0 },
1320 
1321  { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
1325  0 },
1326 #endif /* POLARSSL_SHA1_C */
1327 #endif /* POLARSSL_CIPHER_MODE_CBC */
1328 #endif /* POLARSSL_AES_C */
1329 
1330 #if defined(POLARSSL_CAMELLIA_C)
1331 #if defined(POLARSSL_CIPHER_MODE_CBC)
1332 #if defined(POLARSSL_SHA256_C)
1333  { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1337  0 },
1338 #endif /* POLARSSL_SHA256_C */
1339 
1340 #if defined(POLARSSL_SHA512_C)
1341  { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1345  0 },
1346 #endif /* POLARSSL_SHA512_C */
1347 #endif /* POLARSSL_CIPHER_MODE_CBC */
1348 
1349 #if defined(POLARSSL_GCM_C)
1350 #if defined(POLARSSL_SHA256_C)
1351  { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1355  0 },
1356 #endif /* POLARSSL_SHA256_C */
1357 
1358 #if defined(POLARSSL_SHA512_C)
1359  { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1363  0 },
1364 #endif /* POLARSSL_SHA512_C */
1365 #endif /* POLARSSL_GCM_C */
1366 #endif /* POLARSSL_CAMELLIA_C */
1367 
1368 #if defined(POLARSSL_DES_C)
1369 #if defined(POLARSSL_CIPHER_MODE_CBC)
1370 #if defined(POLARSSL_SHA1_C)
1371  { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
1375  0 },
1376 #endif /* POLARSSL_SHA1_C */
1377 #endif /* POLARSSL_CIPHER_MODE_CBC */
1378 #endif /* POLARSSL_DES_C */
1379 
1380 #if defined(POLARSSL_ARC4_C)
1381 #if defined(POLARSSL_SHA1_C)
1382  { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
1386  0 },
1387 #endif /* POLARSSL_SHA1_C */
1388 #endif /* POLARSSL_ARC4_C */
1389 #endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1390 
1391 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
1392 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
1393 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
1394 #if defined(POLARSSL_MD5_C)
1395  { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
1400 #endif
1401 
1402 #if defined(POLARSSL_SHA1_C)
1403  { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
1408 #endif
1409 
1410 #if defined(POLARSSL_SHA256_C)
1411  { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
1416 #endif
1417 #endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1418 
1419 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
1420 #if defined(POLARSSL_SHA1_C)
1421  { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
1426 #endif /* POLARSSL_SHA1_C */
1427 
1428 #if defined(POLARSSL_SHA256_C)
1429  { TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",
1434 #endif
1435 
1436 #if defined(POLARSSL_SHA512_C)
1437  { TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",
1442 #endif
1443 #endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1444 
1445 #if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
1446 #if defined(POLARSSL_SHA1_C)
1447  { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1452 #endif /* POLARSSL_SHA1_C */
1453 
1454 #if defined(POLARSSL_SHA256_C)
1455  { TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",
1460 #endif
1461 
1462 #if defined(POLARSSL_SHA512_C)
1463  { TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",
1468 #endif
1469 #endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1470 
1471 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
1472 #if defined(POLARSSL_SHA1_C)
1473  { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1478 #endif /* POLARSSL_SHA1_C */
1479 
1480 #if defined(POLARSSL_SHA256_C)
1481  { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1486 #endif
1487 
1488 #if defined(POLARSSL_SHA512_C)
1489  { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1494 #endif
1495 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1496 
1497 #if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
1498 #if defined(POLARSSL_SHA1_C)
1499  { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1504 #endif /* POLARSSL_SHA1_C */
1505 
1506 #if defined(POLARSSL_SHA256_C)
1507  { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",
1512 #endif
1513 
1514 #if defined(POLARSSL_SHA512_C)
1515  { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",
1520 #endif
1521 #endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1522 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
1523 
1524 #if defined(POLARSSL_DES_C)
1525 #if defined(POLARSSL_CIPHER_MODE_CBC)
1526 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
1527 #if defined(POLARSSL_SHA1_C)
1528  { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1533 #endif /* POLARSSL_SHA1_C */
1534 #endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
1535 
1536 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
1537 #if defined(POLARSSL_SHA1_C)
1538  { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1543 #endif /* POLARSSL_SHA1_C */
1544 #endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1545 #endif /* POLARSSL_CIPHER_MODE_CBC */
1546 #endif /* POLARSSL_DES_C */
1547 #endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1548 
1549  { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
1550 };
1551 
1552 const int *ssl_list_ciphersuites( void )
1553 {
1554  /*
1555  * On initial call filter out all ciphersuites not supported by current
1556  * build based on presence in the ciphersuite_definitions.
1557  */
1558  if( supported_init == 0 )
1559  {
1560  const int *p = ciphersuite_preference;
1561  int *q = supported_ciphersuites;
1562  size_t i;
1563  size_t max = sizeof(supported_ciphersuites) / sizeof(int);
1564 
1565  for( i = 0; i < max - 1 && p[i] != 0; i++ )
1566  {
1567  if( ssl_ciphersuite_from_id( p[i] ) != NULL )
1568  *(q++) = p[i];
1569  }
1570  *q = 0;
1571 
1572  supported_init = 1;
1573  }
1574 
1575  return supported_ciphersuites;
1576 };
1577 
1579  const char *ciphersuite_name )
1580 {
1581  const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1582 
1583  if( NULL == ciphersuite_name )
1584  return( NULL );
1585 
1586  while( cur->id != 0 )
1587  {
1588  if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1589  return( cur );
1590 
1591  cur++;
1592  }
1593 
1594  return( NULL );
1595 }
1596 
1597 const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1598 {
1599  const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1600 
1601  while( cur->id != 0 )
1602  {
1603  if( cur->id == ciphersuite )
1604  return( cur );
1605 
1606  cur++;
1607  }
1608 
1609  return( NULL );
1610 }
1611 
1612 const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1613 {
1614  const ssl_ciphersuite_t *cur;
1615 
1616  cur = ssl_ciphersuite_from_id( ciphersuite_id );
1617 
1618  if( cur == NULL )
1619  return( "unknown" );
1620 
1621  return( cur->name );
1622 }
1623 
1624 int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1625 {
1626  const ssl_ciphersuite_t *cur;
1627 
1628  cur = ssl_ciphersuite_from_string( ciphersuite_name );
1629 
1630  if( cur == NULL )
1631  return( 0 );
1632 
1633  return( cur->id );
1634 }
1635 
1636 #if defined(POLARSSL_PK_C)
1638 {
1639  switch( info->key_exchange )
1640  {
1645  return( POLARSSL_PK_RSA );
1646 
1648  return( POLARSSL_PK_ECDSA );
1649 
1652  return( POLARSSL_PK_ECKEY );
1653 
1654  default:
1655  return( POLARSSL_PK_NONE );
1656  }
1657 }
1658 #endif /* POLARSSL_PK_C */
1659 
1660 #if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
1661 int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1662 {
1663  switch( info->key_exchange )
1664  {
1670  return( 1 );
1671 
1672  default:
1673  return( 0 );
1674  }
1675 }
1676 #endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
1677 
1678 #if defined(POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED)
1680 {
1681  switch( info->key_exchange )
1682  {
1687  return( 1 );
1688 
1689  default:
1690  return( 0 );
1691  }
1692 }
1693 #endif /* POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED */
1694 
1695 #endif /* POLARSSL_SSL_TLS_C */
#define TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
int ssl_ciphersuite_uses_ec(const ssl_ciphersuite_t *info)
#define TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
TLS 1.2.
#define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
Not in SSL3!
#define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
Not in SSL3!
#define TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_PSK_WITH_NULL_SHA
Weak!
#define TLS_RSA_WITH_RC4_128_MD5
#define TLS_DHE_PSK_WITH_NULL_SHA
Weak!
#define TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
Not in SSL3!
#define TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_DHE_PSK_WITH_NULL_SHA384
Weak!
#define TLS_PSK_WITH_3DES_EDE_CBC_SHA
#define TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
Not in SSL3!
#define TLS_RSA_PSK_WITH_NULL_SHA384
Weak!
#define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
Not in SSL3!
#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
TLS 1.2.
#define TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_RSA_PSK_WITH_AES_128_CBC_SHA
#define TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
#define TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_RSA_WITH_NULL_MD5
Weak!
#define TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_PSK_WITH_AES_256_CBC_SHA
#define TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Not in SSL3!
#define TLS_DHE_PSK_WITH_AES_128_CBC_SHA
#define TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
Not in SSL3!
#define TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
#define TLS_ECDHE_PSK_WITH_NULL_SHA256
Weak! No SSL3!
Configuration options (set of defines)
#define TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_ECDHE_RSA_WITH_RC4_128_SHA
Not in SSL3!
#define TLS_PSK_WITH_AES_128_CBC_SHA
#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA
#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS 1.2.
#define TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS 1.2.
#define TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
Not in SSL3!
SSL Ciphersuites for PolarSSL.
#define SSL_MAJOR_VERSION_3
Definition: ssl.h:151
#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
TLS 1.2.
#define TLS_RSA_PSK_WITH_RC4_128_SHA
pk_type_t ssl_get_ciphersuite_sig_pk_alg(const ssl_ciphersuite_t *info)
#define TLS_ECDHE_PSK_WITH_NULL_SHA
Weak! No SSL3!
#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
Not in SSL3!
int ssl_get_ciphersuite_id(const char *ciphersuite_name)
Return the ID of the ciphersuite associated with the given name.
#define SSL_MINOR_VERSION_1
Definition: ssl.h:153
#define TLS_RSA_WITH_RC4_128_SHA
#define TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
#define TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_ECDHE_ECDSA_WITH_NULL_SHA
Weak!
#define TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS 1.2.
#define TLS_DHE_PSK_WITH_AES_256_CBC_SHA
#define TLS_DHE_PSK_WITH_NULL_SHA256
Weak!
#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS 1.2.
#define TLS_ECDHE_PSK_WITH_RC4_128_SHA
Not in SSL3!
#define TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
#define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
TLS 1.2.
#define TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_ECDH_ECDSA_WITH_RC4_128_SHA
Not in SSL3!
#define TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
Not in SSL3!
#define TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
#define TLS_RSA_WITH_AES_128_GCM_SHA256
TLS 1.2.
#define SSL_MINOR_VERSION_0
Definition: ssl.h:152
#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
TLS 1.2.
#define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
TLS 1.2.
#define TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
Not in SSL3!
#define TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
Not in SSL3!
#define POLARSSL_CIPHERSUITE_WEAK
Weak ciphersuite flag.
#define TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
key_exchange_type_t key_exchange
#define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
Not in SSL3!
#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS 1.2.
#define TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_RSA_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_PSK_WITH_NULL_SHA256
Weak!
#define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
Not in SSL3!
#define TLS_PSK_WITH_NULL_SHA384
Weak!
#define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
Not in SSL3!
#define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
Not in SSL3!
#define TLS_RSA_WITH_AES_256_CBC_SHA
#define TLS_PSK_WITH_AES_128_GCM_SHA256
TLS 1.2.
#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA
#define TLS_ECDHE_RSA_WITH_NULL_SHA
Weak!
int ssl_ciphersuite_uses_psk(const ssl_ciphersuite_t *info)
#define TLS_DHE_PSK_WITH_RC4_128_SHA
#define TLS_RSA_PSK_WITH_NULL_SHA256
Weak!
#define SSL_MINOR_VERSION_3
Definition: ssl.h:155
#define TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
pk_type_t
Public key types.
Definition: pk.h:95
#define TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
TLS 1.2.
const ssl_ciphersuite_t * ssl_ciphersuite_from_string(const char *ciphersuite_name)
#define TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
TLS 1.2.
#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
Not in SSL3!
#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_ECDH_RSA_WITH_NULL_SHA
Weak!
#define TLS_ECDHE_PSK_WITH_NULL_SHA384
Weak! No SSL3!
This structure is used for storing ciphersuite information.
#define TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
Not in SSL3!
#define TLS_ECDH_ECDSA_WITH_NULL_SHA
Weak!
#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS 1.2.
#define TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
TLS 1.2.
#define TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
#define TLS_PSK_WITH_AES_256_CBC_SHA384
const ssl_ciphersuite_t * ssl_ciphersuite_from_id(int ciphersuite_id)
#define TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS 1.2.
#define TLS_RSA_WITH_NULL_SHA256
Weak!
#define TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_RSA_WITH_3DES_EDE_CBC_SHA
#define TLS_DHE_RSA_WITH_DES_CBC_SHA
Weak! Not in TLS 1.2.
#define TLS_RSA_WITH_DES_CBC_SHA
Weak! Not in TLS 1.2.
#define TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
Not in SSL3!
#define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
Not in SSL3!
#define TLS_ECDH_RSA_WITH_RC4_128_SHA
Not in SSL3!
#define TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
Not in SSL3!
#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
Not in SSL3!
#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
Not in SSL3!
#define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
TLS 1.2.
const int * ssl_list_ciphersuites(void)
Returns the list of ciphersuites supported by the SSL/TLS module.
#define TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
SSL/TLS functions.
#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS 1.2.
#define TLS_RSA_WITH_NULL_SHA
Weak!
#define TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
TLS 1.2.
#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
#define TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
Not in SSL3!
#define TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
TLS 1.2.
#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
TLS 1.2.
#define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
TLS 1.2.
#define TLS_PSK_WITH_AES_128_CBC_SHA256
#define TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
#define TLS_RSA_PSK_WITH_AES_256_CBC_SHA
#define TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS 1.2.
#define TLS_RSA_PSK_WITH_NULL_SHA
Weak!
#define TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
#define TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
#define TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_RSA_WITH_AES_256_CBC_SHA256
TLS 1.2.
#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
const char * ssl_get_ciphersuite_name(const int ciphersuite_id)
Return the name of the ciphersuite associated with the given ID.
#define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
Not in SSL3!
#define TLS_RSA_WITH_AES_128_CBC_SHA256
TLS 1.2.
#define TLS_RSA_WITH_AES_128_CBC_SHA
#define TLS_PSK_WITH_RC4_128_SHA
#define TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
#define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
Not in SSL3!
#define TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
Not in SSL3!
#define TLS_PSK_WITH_AES_256_GCM_SHA384
TLS 1.2.
#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Not in SSL3!
#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA