@@ -237,6 +237,12 @@ class SignatureScheme(TLSEnum):
237237 rsa_pss_sha384 = (8 , 5 )
238238 rsa_pss_sha512 = (8 , 6 )
239239
240+ dsa_sha1 = (2 , 2 )
241+ dsa_sha224 = (3 , 2 )
242+ dsa_sha256 = (4 , 2 )
243+ dsa_sha384 = (5 , 2 )
244+ dsa_sha512 = (6 , 2 )
245+
240246 @classmethod
241247 def toRepr (cls , value , blacklist = None ):
242248 """Convert numeric type to name representation"""
@@ -337,6 +343,16 @@ class AlgorithmOID(TLSEnum):
337343 SignatureScheme .rsa_pss_rsae_sha384
338344 oid [bytes (a2b_hex ('300b0609608648016503040203' ))] = \
339345 SignatureScheme .rsa_pss_rsae_sha512
346+ oid [bytes (a2b_hex ('06072A8648CE380403' ))] = \
347+ SignatureScheme .dsa_sha1
348+ oid [bytes (a2b_hex ('0609608648016503040301' ))] = \
349+ SignatureScheme .dsa_sha224
350+ oid [bytes (a2b_hex ('0609608648016503040302' ))] = \
351+ SignatureScheme .dsa_sha256
352+ oid [bytes (a2b_hex ('0609608648016503040303' ))] = \
353+ SignatureScheme .dsa_sha384
354+ oid [bytes (a2b_hex ('0609608648016503040304' ))] = \
355+ SignatureScheme .dsa_sha512
340356
341357
342358class GroupName (TLSEnum ):
@@ -656,6 +672,10 @@ class CipherSuite:
656672 ietfNames [0x0005 ] = 'TLS_RSA_WITH_RC4_128_SHA'
657673 TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A
658674 ietfNames [0x000A ] = 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
675+ TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D
676+ ietfNames [0x000D ] = 'TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA'
677+ TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013
678+ ietfNames [0x0013 ] = 'TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA'
659679 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016
660680 ietfNames [0x0016 ] = 'TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA'
661681 TLS_DH_ANON_WITH_RC4_128_MD5 = 0x0018
@@ -664,12 +684,20 @@ class CipherSuite:
664684 ietfNames [0x001B ] = 'TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA'
665685 TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F
666686 ietfNames [0x002F ] = 'TLS_RSA_WITH_AES_128_CBC_SHA'
687+ TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x0030
688+ ietfNames [0x0030 ] = 'TLS_DH_DSS_WITH_AES_128_CBC_SHA'
689+ TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032
690+ ietfNames [0x0032 ] = 'TLS_DHE_DSS_WITH_AES_128_CBC_SHA'
667691 TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033
668692 ietfNames [0x0033 ] = 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA'
669693 TLS_DH_ANON_WITH_AES_128_CBC_SHA = 0x0034
670694 ietfNames [0x0034 ] = 'TLS_DH_ANON_WITH_AES_128_CBC_SHA'
671695 TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035
672696 ietfNames [0x0035 ] = 'TLS_RSA_WITH_AES_256_CBC_SHA'
697+ TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x0036
698+ ietfNames [0x0036 ] = 'TLS_DH_DSS_WITH_AES_256_CBC_SHA'
699+ TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038
700+ ietfNames [0x0038 ] = 'TLS_DHE_DSS_WITH_AES_256_CBC_SHA'
673701 TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039
674702 ietfNames [0x0039 ] = 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA'
675703 TLS_DH_ANON_WITH_AES_256_CBC_SHA = 0x003A
@@ -680,8 +708,16 @@ class CipherSuite:
680708 ietfNames [0x003C ] = 'TLS_RSA_WITH_AES_128_CBC_SHA256'
681709 TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D
682710 ietfNames [0x003D ] = 'TLS_RSA_WITH_AES_256_CBC_SHA256'
711+ TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = 0x003E
712+ ietfNames [0x003E ] = 'TLS_DH_DSS_WITH_AES_128_CBC_SHA256'
713+ TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040
714+ ietfNames [0x0040 ] = 'TLS_DHE_DSS_WITH_AES_128_CBC_SHA256'
683715 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067
684716 ietfNames [0x0067 ] = 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA256'
717+ TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = 0x0068
718+ ietfNames [0x0068 ] = 'TLS_DH_DSS_WITH_AES_256_CBC_SHA256'
719+ TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A
720+ ietfNames [0x006A ] = 'TLS_DHE_DSS_WITH_AES_256_CBC_SHA256'
685721 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B
686722 ietfNames [0x006B ] = 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA256'
687723 TLS_DH_ANON_WITH_AES_128_CBC_SHA256 = 0x006C
@@ -698,6 +734,14 @@ class CipherSuite:
698734 ietfNames [0x009E ] = 'TLS_DHE_RSA_WITH_AES_128_GCM_SHA256'
699735 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F
700736 ietfNames [0x009F ] = 'TLS_DHE_RSA_WITH_AES_256_GCM_SHA384'
737+ TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2
738+ ietfNames [0x00A2 ] = 'TLS_DHE_DSS_WITH_AES_128_GCM_SHA256'
739+ TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3
740+ ietfNames [0x00A3 ] = 'TLS_DHE_DSS_WITH_AES_256_GCM_SHA384'
741+ TLS_DH_DSS_WITH_AES_128_GCM_SHA256 = 0x00A4
742+ ietfNames [0x00A4 ] = 'TLS_DH_DSS_WITH_AES_128_GCM_SHA256'
743+ TLS_DH_DSS_WITH_AES_256_GCM_SHA384 = 0x00A5
744+ ietfNames [0x00A5 ] = 'TLS_DH_DSS_WITH_AES_256_GCM_SHA384'
701745 TLS_DH_ANON_WITH_AES_128_GCM_SHA256 = 0x00A6
702746 ietfNames [0x00A6 ] = 'TLS_DH_ANON_WITH_AES_128_GCM_SHA256'
703747 TLS_DH_ANON_WITH_AES_256_GCM_SHA384 = 0x00A7
@@ -806,14 +850,20 @@ class CipherSuite:
806850 ietfNames [0xC01A ] = 'TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA'
807851 TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA = 0xC01B
808852 ietfNames [0xC01B ] = 'TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA'
853+ TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA = 0xC01C
854+ ietfNames [0xC01C ] = 'TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA'
809855 TLS_SRP_SHA_WITH_AES_128_CBC_SHA = 0xC01D
810856 ietfNames [0xC01D ] = 'TLS_SRP_SHA_WITH_AES_128_CBC_SHA'
811857 TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA = 0xC01E
812858 ietfNames [0xC01E ] = 'TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA'
859+ TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA = 0xC01F
860+ ietfNames [0xC01F ] = 'TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA'
813861 TLS_SRP_SHA_WITH_AES_256_CBC_SHA = 0xC020
814862 ietfNames [0xC020 ] = 'TLS_SRP_SHA_WITH_AES_256_CBC_SHA'
815863 TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA = 0xC021
816864 ietfNames [0xC021 ] = 'TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA'
865+ TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA = 0xC022
866+ ietfNames [0xC022 ] = 'TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA'
817867
818868 # RFC 5289 - ECC Ciphers with SHA-256/SHA-384 HMAC and AES-GCM
819869 # unsupported! - no support for ECDSA certificates
@@ -904,6 +954,9 @@ class CipherSuite:
904954 tripleDESSuites .append (TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA )
905955 tripleDESSuites .append (TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA )
906956 tripleDESSuites .append (TLS_ECDH_ANON_WITH_3DES_EDE_CBC_SHA )
957+ tripleDESSuites .append (TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA ) # unsupported
958+ tripleDESSuites .append (TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA ) # unsupported
959+ tripleDESSuites .append (TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA ) # unsupp
907960
908961 #: AES-128 CBC ciphers
909962 aes128Suites = []
@@ -924,6 +977,11 @@ class CipherSuite:
924977 aes128Suites .append (TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA )
925978 aes128Suites .append (TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 )
926979 aes128Suites .append (TLS_ECDH_ANON_WITH_AES_128_CBC_SHA )
980+ aes128Suites .append (TLS_DH_DSS_WITH_AES_128_CBC_SHA ) # unsupported
981+ aes128Suites .append (TLS_DHE_DSS_WITH_AES_128_CBC_SHA ) # unsupported
982+ aes128Suites .append (TLS_DH_DSS_WITH_AES_128_CBC_SHA256 ) # unsupported
983+ aes128Suites .append (TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 ) # unsupported
984+ aes128Suites .append (TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA ) # unsupported
927985
928986 #: AES-256 CBC ciphers
929987 aes256Suites = []
@@ -944,6 +1002,11 @@ class CipherSuite:
9441002 aes256Suites .append (TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA )
9451003 aes256Suites .append (TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 )
9461004 aes256Suites .append (TLS_ECDH_ANON_WITH_AES_256_CBC_SHA )
1005+ aes256Suites .append (TLS_DH_DSS_WITH_AES_256_CBC_SHA ) # unsupported
1006+ aes256Suites .append (TLS_DHE_DSS_WITH_AES_256_CBC_SHA ) # unsupported
1007+ aes256Suites .append (TLS_DH_DSS_WITH_AES_256_CBC_SHA256 ) # unsupported
1008+ aes256Suites .append (TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 ) # unsupported
1009+ aes256Suites .append (TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA ) # unsupported
9471010
9481011 #: AES-128 GCM ciphers
9491012 aes128GcmSuites = []
@@ -955,6 +1018,8 @@ class CipherSuite:
9551018 aes128GcmSuites .append (TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 ) # unsupp
9561019 aes128GcmSuites .append (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 )
9571020 aes128GcmSuites .append (TLS_AES_128_GCM_SHA256 )
1021+ aes128GcmSuites .append (TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 ) # unsupported
1022+ aes128GcmSuites .append (TLS_DH_DSS_WITH_AES_128_GCM_SHA256 ) # unsupported
9581023
9591024 #: AES-256-GCM ciphers (implicit SHA384, see sha384PrfSuites)
9601025 aes256GcmSuites = []
@@ -966,6 +1031,8 @@ class CipherSuite:
9661031 aes256GcmSuites .append (TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 ) # unsupported
9671032 aes256GcmSuites .append (TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 )
9681033 aes256GcmSuites .append (TLS_AES_256_GCM_SHA384 )
1034+ aes256GcmSuites .append (TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 ) # unsupported
1035+ aes256GcmSuites .append (TLS_DH_DSS_WITH_AES_256_GCM_SHA384 ) # unsupported
9691036
9701037 #: AES-128 CCM_8 ciphers
9711038 aes128Ccm_8Suites = []
@@ -1037,16 +1104,25 @@ class CipherSuite:
10371104 shaSuites .append (TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA )
10381105 shaSuites .append (TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA )
10391106 shaSuites .append (TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA )
1107+ shaSuites .append (TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA ) # unsupported
1108+ shaSuites .append (TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA ) # unsupported
1109+ shaSuites .append (TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA ) # unsupported
10401110 shaSuites .append (TLS_RSA_WITH_3DES_EDE_CBC_SHA )
10411111 shaSuites .append (TLS_RSA_WITH_AES_128_CBC_SHA )
10421112 shaSuites .append (TLS_RSA_WITH_AES_256_CBC_SHA )
10431113 shaSuites .append (TLS_RSA_WITH_RC4_128_SHA )
10441114 shaSuites .append (TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA )
10451115 shaSuites .append (TLS_DHE_RSA_WITH_AES_128_CBC_SHA )
10461116 shaSuites .append (TLS_DHE_RSA_WITH_AES_256_CBC_SHA )
1117+ shaSuites .append (TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA ) # unsupported
1118+ shaSuites .append (TLS_DHE_DSS_WITH_AES_128_CBC_SHA ) # unsupported
1119+ shaSuites .append (TLS_DHE_DSS_WITH_AES_256_CBC_SHA ) # unsupported
10471120 shaSuites .append (TLS_DH_ANON_WITH_AES_128_CBC_SHA )
10481121 shaSuites .append (TLS_DH_ANON_WITH_AES_256_CBC_SHA )
10491122 shaSuites .append (TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA )
1123+ shaSuites .append (TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA ) # unsupported
1124+ shaSuites .append (TLS_DH_DSS_WITH_AES_128_CBC_SHA ) # unsupported
1125+ shaSuites .append (TLS_DH_DSS_WITH_AES_256_CBC_SHA ) # unsupported
10501126 shaSuites .append (TLS_RSA_WITH_NULL_SHA )
10511127 shaSuites .append (TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA )
10521128 shaSuites .append (TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA )
@@ -1094,6 +1170,8 @@ class CipherSuite:
10941170 sha384Suites .append (TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 ) # unsupported
10951171 sha384Suites .append (TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 ) # unsupported
10961172 sha384Suites .append (TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 )
1173+ sha384Suites .append (TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 ) # unsupported
1174+ sha384Suites .append (TLS_DH_DSS_WITH_AES_256_GCM_SHA384 ) # unsupported
10971175
10981176 #: stream cipher construction
10991177 streamSuites = []
0 commit comments