@@ -432,6 +432,8 @@ public enum CipherSuite {
432432
433433 private int value ;
434434
435+ public static final int EXPORT_SYMMETRIC_KEY_SIZE_BYTES = 5 ;
436+
435437 private static final Map <Integer , CipherSuite > MAP ;
436438
437439 private CipherSuite (int value ) {
@@ -501,10 +503,10 @@ public int getValue() {
501503 * Returns true in case the cipher suite enforces ephemeral keys. This is
502504 * the case for ECDHE and DHE cipher suites.
503505 *
504- * @return True if the Ciphersuite is Ephermaral
506+ * @return True if the Ciphersuite is Ephemeral
505507 */
506508 public boolean isEphemeral () {
507- return this .name ().contains ("DHE_" );
509+ return this .name ().contains ("DHE_" ) || this . isAnon () ;
508510 }
509511
510512 public boolean isPskOrDhPsk () {
@@ -532,6 +534,11 @@ public boolean isExport() {
532534 return this .name ().contains ("EXPORT" );
533535 }
534536
537+ public boolean isExportSymmetricCipher () {
538+ return this .name ().contains ("DES40" ) || this .name ().contains ("RC4_40" ) || this .name ().contains ("RC2_CBC_40" )
539+ || this .name ().contains ("DES_CBC_40" );
540+ }
541+
535542 /**
536543 * Returns true in case the cipher suite is a CBC cipher suite.
537544 *
@@ -640,14 +647,21 @@ public static List<CipherSuite> getImplemented() {
640647 list .add (TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA );
641648 list .add (TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA );
642649 list .add (TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA );
650+ list .add (TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 );
651+ list .add (TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA );
652+ list .add (TLS_DH_anon_WITH_RC4_128_MD5 );
653+ list .add (TLS_DH_anon_WITH_DES_CBC_SHA );
654+ list .add (TLS_DH_anon_WITH_3DES_EDE_CBC_SHA );
643655 list .add (TLS_DH_DSS_WITH_AES_128_CBC_SHA );
644656 list .add (TLS_DH_RSA_WITH_AES_128_CBC_SHA );
645657 list .add (TLS_DHE_DSS_WITH_AES_128_CBC_SHA );
646658 list .add (TLS_DHE_RSA_WITH_AES_128_CBC_SHA );
659+ list .add (TLS_DH_anon_WITH_AES_128_CBC_SHA );
647660 list .add (TLS_DH_DSS_WITH_AES_256_CBC_SHA );
648661 list .add (TLS_DH_RSA_WITH_AES_256_CBC_SHA );
649662 list .add (TLS_DHE_DSS_WITH_AES_256_CBC_SHA );
650663 list .add (TLS_DHE_RSA_WITH_AES_256_CBC_SHA );
664+ list .add (TLS_DH_anon_WITH_AES_256_CBC_SHA );
651665 list .add (TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA );
652666 list .add (TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA );
653667 list .add (TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA );
@@ -666,10 +680,14 @@ public static List<CipherSuite> getImplemented() {
666680 list .add (TLS_DH_RSA_WITH_AES_256_GCM_SHA384 );
667681 list .add (TLS_DH_RSA_WITH_AES_128_GCM_SHA256 );
668682 list .add (TLS_DH_DSS_WITH_AES_256_GCM_SHA384 );
683+ list .add (TLS_DH_anon_WITH_AES_128_GCM_SHA256 );
684+ list .add (TLS_DH_anon_WITH_AES_256_GCM_SHA384 );
669685 list .add (TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 );
670686 list .add (TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 );
671687 list .add (TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 );
672688 list .add (TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 );
689+ list .add (TLS_DH_anon_WITH_AES_128_CBC_SHA256 );
690+ list .add (TLS_DH_anon_WITH_AES_256_CBC_SHA256 );
673691 list .add (TLS_DHE_RSA_WITH_DES_CBC_SHA );
674692 list .add (TLS_DHE_RSA_WITH_AES_128_CCM );
675693 list .add (TLS_DHE_RSA_WITH_AES_256_CCM );
@@ -750,6 +768,7 @@ public static List<CipherSuite> getImplemented() {
750768 list .add (TLS_ECDH_ECDSA_WITH_RC4_128_SHA );
751769 list .add (TLS_ECDHE_ECDSA_WITH_RC4_128_SHA );
752770 list .add (TLS_ECDH_RSA_WITH_RC4_128_SHA );
771+ list .add (TLS_ECDH_anon_WITH_NULL_SHA );
753772 list .add (TLS_SRP_SHA_WITH_AES_128_CBC_SHA );
754773 list .add (TLS_SRP_SHA_WITH_AES_256_CBC_SHA );
755774 list .add (TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 );
@@ -849,6 +868,57 @@ public static List<CipherSuite> getImplemented() {
849868 list .add (TLS_ECDHE_PSK_WITH_NULL_SHA );
850869 list .add (TLS_ECDHE_PSK_WITH_NULL_SHA256 );
851870 list .add (TLS_ECDHE_PSK_WITH_NULL_SHA384 );
871+ list .add (TLS_DH_DSS_WITH_DES_CBC_SHA );
872+ list .add (TLS_DHE_DSS_WITH_DES_CBC_SHA );
873+ list .add (TLS_DH_DSS_WITH_AES_128_CBC_SHA256 );
874+ list .add (TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 );
875+ list .add (TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA );
876+ list .add (TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA );
877+ list .add (TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA );
878+ list .add (UNOFFICIAL_TLS_ECDH_anon_WITH_NULL_SHA );
879+ list .add (UNOFFICIAL_TLS_ECDH_anon_WITH_RC4_128_SHA );
880+ list .add (UNOFFICIAL_TLS_ECDH_anon_WITH_DES_CBC_SHA );
881+ list .add (UNOFFICIAL_TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA );
882+ list .add (TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 );
883+ list .add (TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA );
884+ list .add (TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA );
885+ list .add (TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA );
886+ list .add (TLS_DH_DSS_WITH_SEED_CBC_SHA );
887+ list .add (TLS_DHE_DSS_WITH_SEED_CBC_SHA );
888+ list .add (TLS_DH_anon_WITH_SEED_CBC_SHA );
889+ list .add (TLS_DH_DSS_WITH_AES_128_GCM_SHA256 );
890+ list .add (TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 );
891+ list .add (TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 );
892+ list .add (TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 );
893+ list .add (TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 );
894+ list .add (TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 );
895+ list .add (TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 );
896+ list .add (TLS_ECDH_anon_WITH_RC4_128_SHA );
897+ list .add (TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA );
898+ list .add (TLS_ECDH_anon_WITH_AES_128_CBC_SHA );
899+ list .add (TLS_ECDH_anon_WITH_AES_256_CBC_SHA );
900+ list .add (TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 );
901+ list .add (TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 );
902+ list .add (TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 );
903+ list .add (TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 );
904+ list .add (TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 );
905+ list .add (TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 );
906+ list .add (TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 );
907+ list .add (TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 );
908+ list .add (TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 );
909+ list .add (TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 );
910+ list .add (TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 );
911+ list .add (TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 );
912+ list .add (TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 );
913+ list .add (TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 );
914+ list .add (TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 );
915+ list .add (TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 );
916+ list .add (TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 );
917+ list .add (TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 );
918+ list .add (TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 );
919+ list .add (TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 );
920+ list .add (TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256 );
921+ list .add (TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384 );
852922 return list ;
853923 }
854924
@@ -874,4 +944,12 @@ public boolean isTLS13() {
874944 public boolean isImplemented () {
875945 return getImplemented ().contains (this );
876946 }
947+
948+ public boolean isSHA256 () {
949+ return this .name ().contains ("SHA256" );
950+ }
951+
952+ public boolean isAnon () {
953+ return this .name ().contains ("anon" );
954+ }
877955}
0 commit comments