U v`U@sdZGdddeZeddddddded d d d d d d ed d d d d d deddddddeddddddeddddddeddddddeddddddeddddddeddddddd d!ed"ddd#dded$ddd%dded&ddd'dded(ddd)dded*d+d,d%dded-d+d.d'dded/d+d.d)dded0d+dd%dded1d+d2d'dded3d+d2d)dded4d5d,d6dded7d5d8d'dded9d5d8d)dded:d5dd6dded;d5dd+d?d@ddedAd+dBdddedCd+d?d6ddedDd+dBd'ddedEd+dBd)ddedFdGdd'ddedHdGdd)ddedIdGddddedJdGdd#ddedKdGdd'ddedLdGdd)ddedMdGddddedNdGdd#ddedOdPdQd%dddRd!edSdPdQdddd d!edTdPdQdddedUdPdQd%dddRd!edVdPdQdddd d!edWdPdQdddedXddYdddedZd[dYddded\d]dYddded^d]dd_dded`dadbd_ddedcdaddd_ddeded[dbd_ddedfd[ddd_ddedgdadhd_ddedid]ddjddedkdadbdjddedldadddjddedmd[dbdjddednd[dddjddedodadhdjddedpd]ddddqedrd]dd_ddqedsd]ddjddqedtdadbd_ddqedudaddd_ddqedvd[dbd_ddqedwd]ddxdydedzdadbdxdyded{dadddxdyded|d[dbdxdyded}d[dddxdyded~dadhdxdydedd[ddd_ddqeddadbdjddqeddadddjddqedd[dbdjddqedd[dddjddqeddadhd_ddqeddadhdjddqedd]dddydeddadbddydeddaddddydedd[dbddydedd[ddddydeddadhddydedddYdddedddYd)ddedddYd_ddedddYdjddedd[dYdddedd[dYd)ddedd[dYd_ddedd[dYdjddedd]dYdddedd]dYd)ddedd]dYd_ddedd]dYdjddedd]ddddeddadbdddeddadddddedd[dbdddedd[dddddeddadhdddedd]dd_ddqedd]ddjddedd[ddd_ddqedd[dddjddeddaddd_ddqeddadddjddedd[dbd_ddqedd[dbdjddeddadbd_ddqeddadbdjddeddadhd_ddqeddadhdjddedddYd_ddqedddYdjddedd[dYd_ddqedd[dYdjddedd]dYd_ddqedd]dYdjddedddYd_ddqedddYdjddedddYdddqedddYdddedd[dYd_ddqedd[dYdjddedd[dYdddqedd[dYdddedd]dYd_ddqedd]dYdjddedd]dYdddqedd]dYdddedd]ddxdydqeddadbdxdydqeddadddxdydqedd[dbdxdydqedd[dddxdydqeddadhdxdydqedd]dddydqeddadbddydqeddaddddydqedd[dbddydqedd[ddddydqeddadhddydqedddd_ddqddύeddddjddddύeddddddqddύedddd_ddqddύedddd_ddqddύeddddddeddddddedddd)ddedddd_ddeddddjddeddddddeddddddedddd)ddedddd_ddeddddjddeddddddeddddddedddd)ddedddd_ddeddddjddeddddddeddddddedddd)ddedddd_ddeddddjddeddddddeddddddedddd)ddedddd_ddeddddjddedddd)ddedddd)ddedddd)ddedddd_ddedddd_ddedddd_ddeddddjddeddddjddeddddjddedddd_ddqeddddjdded ddd_ddqed dddjdded ddd_ddqed dddjdded ddd_ddqeddddjddedddd_ddqeddddjddedddd_ddqeddddjddedddd_ddqeddddjddedddd_ddqeddddjddeddddddedddd)ddedddd_ddeddddjddedddd_ddqeddddjddeddddddeddddddqed ddddded!d]dd"ddqed#d]dd$dded%dadbd"ddqed&dadbd$dded'daddd"ddqed(daddd$dded)d[dbd"ddqed*d[dbd$dded+d[ddd"ddqed,d[ddd$dded-dadhd"ddqed.dadhd$dded/ddސd"ddqed0ddސd$dded1ddސd"ddqed2ddސd$dded3ddd"ddqed4ddd$dded5ddd"ddqed6ddd$dded7d]dd"ddqed8d]dd$dded9d[ddd"ddqed:d[ddd$dded;daddd"ddqedd[dbd$dded?dadbd"ddqed@dadbd$ddedAdadhd"ddqedBdadhd$ddedCddސd"ddqedDddސd$ddedEddސd"ddqedFddސd$ddedGddd"ddqedHddd$ddedIddd"ddqedJddd$ddedKddYd"ddqedLddYd$ddedMd[dYd"ddqedNd[dYd$ddedOd]dYd"ddqedPd]dYd$ddedQddYd"ddqedRddYd$ddedSd[dYd"ddqedTd[dYd$ddedUd]dYd"ddqedVd]dYd$ddedWddd"ddqedXddd$ddedYdddxdydqedZddddyded[dddxdydqed\ddddyded]dddxdydqed^ddddyded_dddxdydqed`ddddydedad]ddxdbdqedcd]dddbdeddd[dddxdbdqeded[ddddbdedfdadddxdbdqedgdaddddbdedhd[dbdxdbdqedid[dbddbdedjdadbdxdbdqedkdadbddbdedldadhdxdbdqedmdadhddbdedndddxdbdqedoddddbdedpdddxdbdqedqddddbdedrdddxdbdqedsddddbdedtdddxdbdqeduddddbdedvddYdxdbdqedwddYddbdedxd[dYdxdbdqedyd[dYddbdedzd]dYdxdbdqed{d]dYddbded|ddYdxdydqed}ddYddyded~d[dYdxdydqedd[dYddydedd]dYdxdydqedd]dYddydeddddxdydqedddddydedd]dd_dd edd]ddjdd edd[ddd_dd edd[dddjdd edd]dd_dd edd]ddjdd edd[ddd_dd edd[dddjdd edddYd_dd edddYdjdd edd[dYd_dd edd[dYdjdd edddYd_dd edddYdjdd edd[dYd_dd edd[dYdjdd edddd_dd eddddjdd edddd_dd eddddjdd eddddddqdeddddddqdeddddddqdeddddddqeddddddqeddddddqeddddddqeddddddqeddddddqeddddddqgOZeddeDZdaddZedZGdddeZ dS(z Nicely formatted cipher suite definitions for TLS A list of cipher suites in the form of CipherSuite objects. These are supposed to be immutable; don't mess with them. c@seZdZdZd#ddZeddZeddZed d Zed d Z ed dZ ddZ dddddZ dddddddddddddddZ eddZeddZeddZedd Zed!d"ZdS)$ CipherSuitea Encapsulates a cipher suite. Members/args: * code: two-byte ID code, as int * kx: key exchange algorithm, e.g. 'RSA' or 'DHE' * auth: authentication algorithm, e.g. 'RSA' or 'DSS' * cipher: stream or block cipher algorithm, e.g. 'AES_128' * mode: mode of operation for block ciphers, e.g. 'CBC' or 'GCM' * mac: message authentication code algorithm, e.g. 'MD5' or 'SHA256' * name: cipher suite name as defined in the RFCs, e.g. 'TLS_RSA_WITH_RC4_40_MD5', can be generated by default from the other parameters * encoding: encoding algorithm, defaults to cipher+mode Additional members: * kx_auth: kx+auth algorithm, as 'KeyExchangeAlgorithm' in RFCs Nc CsH||_||_||_||_||_||_||_||_dSN) coderstrip_kx_authciphermodemac_name _encoding) selfrkxauthrrr nameencodingrm/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/ssl_ciphersuites.py__init__s     zCipherSuite.__init__cCs|jdkr|jS|jSdSN)rrr rrrr *s zCipherSuite.kxcCs|jdkr|jS|jSdSrrrrrrrr1s zCipherSuite.authcCs4|jdkr|jS|jdkr |jS|jd|jSdSNr_rrrrrkx_auth8s   zCipherSuite.kx_authcCs6|jdkr,|jdkr|jS|jd|jSn|jSdSr)r rrrrrrrAs   zCipherSuite.encodingcCsR|jdkrH|jdkr(d|jd|jSd|jd|jd|jSn|jSdS)NrZTLS_Z_WITH_r)r r rrrrrrrKs    zCipherSuite.namecCs d|jS)NzCipherSuite(%s)rrrrr__repr__UszCipherSuite.__repr__ 0)MD5SHASHA256SHA384@)3DES_EDEZAES_128ZAES_256ZARIA CAMELLIA_128 CAMELLIA_256CHACHA20ZDESZDES40IDEAZRC2_40ZRC4_40ZRC4_128SEEDcCs|j|jdS)zIn bytes. Default to 0.) MAC_SIZESgetr rrrrmac_sizepszCipherSuite.mac_sizecCs|j|jdS)zIn bytes. Default to 1.) BLOCK_SIZESr/rrrrr block_sizeuszCipherSuite.block_sizecCs |jdkS)N)DHEECDHE)r rrrrpfszszCipherSuite.pfscCs |jdkS)N)ZCCMCCM_8GCM)rrrrraead~szCipherSuite.aeadcCs |jdS)Nanon)r startswithrrrr anonymousszCipherSuite.anonymous)NN)__name__ __module__ __qualname____doc__rpropertyr rrrrrr.r2r0r3r6r9r<rrrrr sV          rNULLz zNULL z TLS_EMPTY_RENEGOTIATION_INFOiVrz Z TLS_FALLBACKiZUNKNOWN_CIPHERr-r1RSA r!r"Z RSA_EXPORTz zRC4_40 zRC4_128 zRC2_40 CBC Z RC2_CBC_40)rzIDEA r%zDES40 DES r' DHZ DSS_EXPORT z DSS z RSA rr4zDES40 z DSS rz RSA Z anon_EXPORTzRC4_40 z anon KRB5r!"#$%&Z KRB5_EXPORT Z DES_CBC_40'()*+,zPSK -zDHE .zRSA /zAES_128 r zDH zDSS 1zRSA 234zanon 5zAES_256 6789:;r#<=>?r&Ar(CBCBCDEFghijklmr)zSEED zGCM r$izGCM TLS_AES_128_GCM_SHA256riTLS_AES_256_GCM_SHA384r*ZPOLY1305TLS_CHACHA20_POLY1305_SHA256izCCM ZTLS_AES_128_CCM_SHA256izCCM_8 ZTLS_AES_128_CCM_8_SHA256izECDH zECDSA iiiiir5ii i i zRSA i i iiiiiiiizanon iiiiSRP_SHAz izRSA izDSS iii i!i"i#i$i%i&'i(i)i*i+i,i-i.i/i0i1i2i3zPSK i4i56i7i8i9i:i;i<ZARIA_128i=ZARIA_256i>i?i@iAiBiCiDEiFiGiHiIiJiKiLiMiNiOiPiQRiSiTiUiViWiXiYiZi[i\i]i^i_i`iaibicidieifighiiijikiliminioipiqiristiuiviwixiyizr8i{i|i}i~iiiiiiiiiiiiiiiiiiiiiiiiiiiiizCCM iiir7iiiiiiiiiiiiiZ/OLD_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256Z1OLD_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256zDHE -OLD_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256iiiiiccs|]}|j|fVqdSr)r).0rrrr 5srNcCs"tdkrtddtDat|S)Ncss|]}|j|fVqdSrr)rZsuiterrrr@szBY_NAME..) BY_NAME_DICTdict CIPHERSUITESrrrrBY_NAME<src@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)TestCipherSuitescCs,tdjdksttdjdks$ttdjdks6ttdjdksHttd jdksZttd jdkslttd jdks~ttd jdksttd jdksttdjdksttdjdksttdjdksttdjdksttdjdksttdjdksttdjdks$ttdjdks8ttdjdksLttdjdks`ttdjdkstttdjdksttdjdksttdjdksttd jdksttd!jdksttd"jdksttd#jdksttd$jdksttd%jdks(tdS)&NrJrErdrbrqr4rwrRrrrrrrrrPSKrrr5rECDHrrrrrrrrrrrrrrr)BY_CODEr AssertionErrorrrrrtest_kxIs:zTestCipherSuites.test_kxcCs,tdjdksttdjdks$ttdjdks6ttdjdksHttd jdksZttd jd kslttd jd ks~ttd jdksttdjdksttdjdksttdjdksttdjdksttdjd ksttdjdksttdjdksttdjdks$ttdjdks8ttdjdksLttdjdks`ttdjdkstttdjdksttdjdksttdjdksttdjdksttd jdksttd!jdksttd"jdksttd#jdksttd$jdks(tdS)%NrJrErdrbrqrrwr:rrZDSSrrrrrrrrECDSArrrrrrrrrrrrrrrr)rrrrrrr test_authis:zTestCipherSuites.test_authcCs:tdjdksttdjdks$ttdjdks6tdS)NTLS_RSA_WITH_RC4_128_SHAF#TLS_DHE_DSS_WITH_AES_256_CBC_SHA256T%TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA)rr6rrrrrtest_pfsszTestCipherSuites.test_pfscCsLtdjdksttdjdks$ttdjdks6ttdjdksHtdS)NTLS_RSA_WITH_AES_128_CBC_SHA256FTLS_RSA_WITH_AES_256_CCMTTLS_DHE_RSA_WITH_AES_128_CCM_8#TLS_DHE_PSK_WITH_AES_256_GCM_SHA384)rr9rrrrr test_aeadszTestCipherSuites.test_aeadcCs:tdjdksttdjdks$ttdjdks6tdS)NrF TLS_DH_anon_WITH_AES_128_CBC_SHATZ%TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA)rr<rrrrrtest_anonymousszTestCipherSuites.test_anonymouscCstdtdksttdtdks(ttdtdksksttd?td@kstdS)ANrBrDriZ#TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHArJrrdZTLS_KRB5_WITH_IDEA_CBC_SHArqZTLS_DHE_PSK_WITH_NULL_SHArwrrrrZ$TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHArrrZ!TLS_RSA_WITH_CAMELLIA_256_CBC_SHArZ TLS_DHE_PSK_WITH_AES_256_CBC_SHArZTLS_DH_RSA_WITH_SEED_CBC_SHArrrZTLS_PSK_WITH_NULL_SHA256rZ'TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256rrrrrZTLS_ECDH_anon_WITH_RC4_128_SHArZ TLS_SRP_SHA_WITH_AES_128_CBC_SHArZ%TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256rZ"TLS_ECDHE_PSK_WITH_AES_256_CBC_SHArZ$TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384rZ$TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256rZ$TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256rZ+TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256rZ)TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384rrrrrZ TLS_ECDHE_ECDSA_WITH_AES_256_CCMrZ+TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256rZ)TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256rr)rrrrrrrtest_by_name_and_codes@z&TestCipherSuites.test_by_name_and_codecCsBtdddddd}t|dks"t|jdks0t|jd ks>tdS) NrNrErFrOrLr"z%CipherSuite(TLS_RSA_WITH_DES_CBC_SHA)rr%)rreprrr0r3)r csrrr test_reprszTestCipherSuites.test_reprN) r=r>r?rrrrrrrrrrrrGs  'r) r@objectrrrrrrZ NULL_SUITErrrrrs.