Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
certs.cpython-313.pyc262 linesDownload Raw Back to __pycache__
1�

2��j�f��l�SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSK	J3r4 SSKJr SSK
Jr SSK
Jr SSK
Jr SSK
Jr SSKrSS	KJr SS5KJr SSKJr SSKJr SS
KJr SSKJr SSKJr SSKJr SSK J!r! SSK J"r" SSK#J$r$ \RJS:aSSK&J'r' OSSKJ'r' \RP"\)5r*\RV"SS9r,\RV"SS9r-\RV"SS9r.\RV"SS9r/Sr0"SS\$Rb5r2S\RfS\4\5\6\644S jr7S!\6S"\6S#\8S\5\Rr\Rt44S$jr;S%\\Rx\4\6-S\Rz4S&jr>S7S'\R~S(\RtS)\6S-S%\\RxS!\6S-S*\6S-S\24S+jjr@S'\R~S(\RtS\A4S,jrB\6"S-S.9"S/S055rC\6rD\5\\6\Rz4rE\\D\E4rF\"S1\A5rG"S2S35rHS4\AS5\AS-S\R~4S6jrIg)8�N)�Iterable)�	dataclass)�Path)�cast)�NewType)�Optional)�Union)�x509)�hashes)�
serialization)�dsa)�ec)�rsa)�CertificatePublicKeyTypes)�pkcs12)�ExtendedKeyUsageOID)�NameOID)�serializable)��
)�7deprecatediB)�days��������s8-----BEGIN DH PARAMETERS-----9MIICCAKCAgEAyT6LzpwVFS3gryIo29J5icvgxCnCebcdSe/NHMkD8dKJf8suFCg310O2+dguLakSVif/t6dhImxInJk230HmfC8q93hdcg/j8rLGJYDKu3ik6H//BAHKIv11j5O9yjU3rXCfmVJQic2Nne39sg3CreAepEts2TvYHhVv3TEAzEqCtOuTjgDv0ntJ12Gwpj+BJBRQGG9NvprX1YGJ7WOFBP/hWU7d6tgvE6Xa7T/u9QIKpYHMIkcN/l3ZFB13chZEqVlyrcngtSXCROTPcDOQ6Q8QzhaBJS+Z6rcsd7X+haiQqvoFcmaJ08Ks6LQC14ZIL2EtYJw8V8z7C0igVEBIADZBI6OTbuuhDwRw//zU1uq52Oc48CIZlGxTYG/Evq15o9EWAXUYVzWkDSTeBH1r4z/qLPE2cnhtMxbFxuvK53jGB0emy2y1Ei6IhKshJ5qX16IB/aE7SSHyQ3MDHHkCmQJCsOd4Mo26YX61NZ+n501XjqpCBQ2+DfZCBh8Va2wDyv17A2Ryg9SUz8j0AXViRNMJgJrr446yro/FuJZwnQcO3WQnXeqSBnURqKjmqkeFP+d8186mk2tqJaY507lRNqtGlLnj7f5RNoBFJDCLBNurVgfvq9TCVWKDIFD4vZRjCrnl6I19rD693XKIHUCWOjMh1if6omGXKHH40QuME2gNa50+YPn1iYDl88uDbbMCAQI=20-----END DH PARAMETERS-----21c��\rSrSr%Sr\R\S'S\R4SjrSr	Sr22Sr\S	5r
S23rSr\S\S
S4Sj5rS
\4Sjr\S\R(R*S
S4Sj5r\"S5S
\R(R*4Sj5rS
\R4SjrS
\4SjrS
\4Sjr\S
\\\ \ 44Sj5r!\S
\"RD4Sj5r#\S
\"RD4Sj5r$S
\%4Sjr&\S
\\\ \ 44Sj5r'\S
\(4Sj5r)\S
\%4Sj5r*\S
\\ \(44Sj5r+\S
\ S-4S j5r,\S
\ S-4S!j5r-\S
\R\4S"j5r/\S
\\ 4S#j5r0S$r1g)%�Cert�@z&Representation of a (TLS) certificate.�_cert�certc�R�[U[R5(deXlg�N)�24isinstancer25�Certificater)�selfr s  �UD:\code\apps\devtools\python\user_packages\Python313\site-packages\mitmproxy/certs.py�__init__�
Cert.__init__Es ���$�� 0� 0�1�1�1�1��26�c�D�UR5UR5:H$r")�fingerprint)r%�others  r&�__eq__�Cert.__eq__Is�����!�U�%6�%6�%8�8�8r)c��URVs/sHn[UR5PM nnSUR<SU<S3$s snf)Nz	<Cert(cn=z, altnames=z)>)�altnames�str�value�cn)r%�xr0s   r&�__repr__�
Cert.__repr__Ls@��*.�-�-�8�-�Q�C����L�-��8��4�7�7�+�[���B�?�?��9s�Ac�6�URR5$r")r�__hash__�r%s r&r8�
Cert.__hash__Ps���z�z�"�"�$�$r)c�$�URU5$r")�from_pem)�cls�states  r&�27from_state�Cert.from_stateSs���|�|�E�"�"r)c�"�UR5$r")�to_pemr9s r&�	get_state�Cert.get_stateWs���{�{�}�r)c�:�[R"U5Ulgr")r28�load_pem_x509_certificater)r%r>s  r&�	set_state�Cert.set_stateZs���3�3�E�:��29r)�data�returnc�>�[R"U5nU"U5$r")r30rF)r=rIr s   r&r<�
Cert.from_pem]s���-�-�d�3���4�y�r)c�h�URR[RR5$r")r�public_bytesr�Encoding�PEMr9s r&rB�Cert.to_pembs#���z�z�&�&�}�'=�'=�'A�'A�B�Br)r31c�6�[UR"55$r")r�to_cryptography)r%r32s  r&�from_pyopenssl�Cert.from_pyopenssles���D�(�(�*�+�+r)zUse `to_cryptography` instead.c�h�[RRRUR5$r")�OpenSSL�crypto�X509�from_cryptographyrr9s r&�to_pyopenssl�Cert.to_pyopensslis!���~�~�"�"�4�4�T�Z�Z�@�@r)c��UR$r"�rr9s r&rS�Cert.to_cryptographyms���z�z�r)c�6�URR5$r")r�33public_keyr9s r&ra�Cert.public_keyps���z�z�$�$�&�&r)c�^�URR[R"55$r")rr+r�SHA256r9s r&r+�Cert.fingerprintss���z�z�%�%�f�m�m�o�6�6r)c�@�[URR5$r")�_name_to_keyvalr�issuerr9s r&rh�Cert.issuervs���t�z�z�0�0�1�1r)c��URR$![a4 URRR	[34RS9s$f=f�N)�tzinfo)r�not_valid_before_utc�AttributeError�not_valid_before�replace�datetime�UTCr9s r&�	notbefore�Cert.notbeforezsK��	L��:�:�2�2�2���	L��:�:�.�.�6�6�h�l�l�6�K�K�	L����;A�Ac��URR$![a4 URRR	[35RS9s$f=frk)r�not_valid_after_utcrn�not_valid_afterrprqrrr9s r&�notafter�
Cert.notafter�sK��	K��:�:�1�1�1���	K��:�:�-�-�5�5�X�\�\�5�J�J�	K�ruc��[RS:a:[RR[R5UR36:�$[RR[R5UR37:�$)N)r�)�sys�version_inforq�nowrrryr9s r&�has_expired�Cert.has_expired�sX�����g�%��$�$�(�(����6����F�F�� � �$�$�X�\�\�2�T�]�]�B�Br)c�@�[URR5$r")rgr�subjectr9s r&r��Cert.subject�s���t�z�z�1�1�2�2r)c�.�URR$r")r�
serial_numberr9s r&�serial�Cert.serial�s���z�z�'�'�'r)c���URRR[R5R38nUR$![Ra gf=f)NF)r�39extensions�get_extension_for_classr40�BasicConstraintsr2�ca�ExtensionNotFound)r%�constraintss  r&�is_ca�41Cert.is_ca�sV��	��*�*�/�/�G�G��%�%���e�
��>�>�!���%�%�	��	�s�AA�A"�!A"c���URR5n[U[R5(aSUR424$[U[R5(aSUR434$[U[R5(a&SURRS3UR444$URRRSS5RSS5[USS	54$)45N�RSA�DSAzEC (�)�	PublicKey��_�key_size�����)rrar#r�RSAPublicKeyr�r
�DSAPublicKeyr�EllipticCurvePublicKey�curve�name�	__class__�__name__rp�getattr)r%ras  r&�keyinfo�Cert.keyinfo�s����Z�Z�*�*�,�46��j�#�"2�"2�3�3��*�-�-�-�-��j�#�"2�"2�3�3��*�-�-�-�-��j�"�";�";�<�<��*�*�*�/�/�0��2�J�4G�4G�G�G�� � �)�)�1�1�+�r�B�J�J�3�PR�S��J�47�B�/�48�	49r)Nc���URRR[RR505nU(a[
[USR5$g�Nr)	rr��get_attributes_for_oidr51r�COMMON_NAMErr1r2�r%�attrss  r&r3�Cert.cn�sA���52�53�"�"�9�9�$�,�,�:R�:R�S�����U�1�X�^�^�,�,�r)c���URRR[RR545nU(a[
[USR5$gr�)	rr�r�r55r�ORGANIZATION_NAMErr1r2r�s  r&�organization�Cert.organization�sF���56�57�"�"�9�9��L�L�*�*�58�����U�1�X�^�^�,�,�r)c�59�URRR[R5R60n[R"U5$![Ra [R"/5s$f=f)z.61Get all SubjectAlternativeName DNS altnames.62)rr�r�r63�SubjectAlternativeNamer2�GeneralNamesr�)r%�sanss  r&r0�
Cert.altnames�sm��64	+��:�:�(�(�@�@��+�+���e�
��$�$�T�*�*���%�%�	)��$�$�R�(�(�	)�s�=A�*B�Bc��URRR[R5R65nUVs/sH]nUR(dM[URS[R5(dMDURSR66PM_ sn$s snf![Ra /s$f=fr�)67rr�r�r68�CRLDistributionPointsr2�	full_namer#�UniformResourceIdentifierr�)r%�ext�69dist_points   r&�crl_distribution_points�Cert.crl_distribution_points�s���	��*�*�'�'�?�?��*�*���e�
�#&��"%�J��'�'�.��z�3�3�A�6��8V�8V�W�.�70�$�$�Q�'�-�-�"%��
�����%�%�	��I�	�s#�=B/�B*�*B*�71B*�/C�Cr^)2r��72__module__�__qualname__�__firstlineno__�__doc__r73r$�__annotations__r'r-r5r8�classmethodr?rCrG�bytesr<rBrWrXrYrTrr[rSrrar+�property�list�tupler1rhrqrsry�boolr�r��intr�r�r�r3r�r�r0r��__static_attributes__�r)r&rr@s���0������T�-�-��9�@�%��#��#��;���E��f����C��C��,�7�>�>�#6�#6�,�6�,��,��0�1�A�g�n�n�1�1�A�2�A���!1�!1��'�5�'�7�U�7��2��U�3��8�_�-�2��2��L�8�,�,�L��L��K�(�+�+�K��K�C�T�C�74�3��e�C��H�o�.�3��3��(��(��(���t�����75��s�C�x��76��77���C�$�J������c�D�j�����+�$�+�+�+��+��
��c��
��
r)rr�rJc��/nUHQnUR5RS5Sn[[UR5nURX445 MS U$)N�=r)�rfc4514_string�	partitionrr1r2�append)r��parts�attr�k�vs     r&rgrg�sT���E������!�+�+�C�0��3����d�j�j�!��
���a�V����Lr)r�r3r�c�H�[RR5n[R"SUS9n[R78"[R"[RU5[R"[RU5/5n[R"5nUR[R"55nURU5nURU[-5nUR!U[-["-5nUR%U5nUR'UR'55nUR)[R*"SSS9SS9nUR)[R,"[.R0/5SS9nUR)[R2"SSSSSSSSSS9	SS9nUR)[R4R7UR'55SS9nUR9U[:R<"5S9nXG4$)	Ni)�public_exponentr�T)r��path_length��criticalF)	�digital_signature�content_commitment�key_encipherment�data_encipherment�
key_agreement�
key_cert_sign�crl_sign�
encipher_only�
decipher_only��private_key�	algorithm)rqrr�generate_private_keyr79�Name�
NameAttributerr�r��CertificateBuilderr��random_serial_number�subject_namero�CERT_VALIDITY_OFFSETrx�	CA_EXPIRY�issuer_namera�
add_extensionr��ExtendedKeyUsager�SERVER_AUTH�KeyUsage�SubjectKeyIdentifier�from_public_key�signrrd)r�r3r�rr�r��builderr s        r&�	create_car��s���80�81�82�83�84�85!�C��*�*����K��9�9����w�2�2�B�7����w�8�8�,�G�	86��D��%�%�'�G��#�#�D�$=�$=�$?�@�G��"�"�4�(�G��&�&�s�-A�'A�B�G��%�%�c�,@�&@�9�&L�M�G��!�!�$�'�G�� � ��!7�!7�!9�:�G��#�#�����4�8�4�$��G��#�#����2�>�>�?�@�5�$��G��#�#��
�
�#�$�"�#������87	88��$�
�G��#�#��!�!�1�1�+�2H�2H�2J�K��$��G��<�<�K�6�=�=�?�<�K�D���r)r�c���[U[R5(aU$[U[5(a�[	U5S:�a�[US[895(a�[R"S[SS9 /n[[[90U5H?n[R"U5nUR[R"U55 MA [R"U5$[R"[[$[R&U55$![aH URS5R!5nUR[R""U55 M�f=f)z�91SANs used to be a list of strings in mitmproxy 10.1 and below, but now they're a list of GeneralNames.92This function converts the old format to the new one.93rz0Passing SANs as a list of strings is deprecated.�)�94stacklevel�idna)r#r95r�r��lenr1�warnings�warn�DeprecationWarningr�	ipaddress�96ip_addressr��	IPAddress�97ValueError�encode�decode�DNSNamer�GeneralName)r��ssr4�ips    r&�_fix_legacy_sansr	s��98�$��)�)�*�*����4����3�t�9�q�=�Z��Q���5M�5M��
�
�>���	99�&(���d�3�i��&�A�
.��)�)�!�,��100�	�	�$�.�.��,�-�'�� � ��$�$�� � ��h�t�/?�/?�&@�$�!G�H�H���
+��H�H�V�$�+�+�-���	�	�$�,�,�q�/�*�
+�s�D�AE1�0E1�privkey�cacert�101commonname�crl_urlc�0�[R"5nURUR5nUR	[R102"[R/5SS9nURUR55n[RR5nURU[-5nURU[-[-5n/nUSL=(a [U5S:n	U	(a9UceUR![R""[$R&U55 Ub9UceUR![R""[$R(U55 UR+[R,"U55nUR/[R0"55nUR	[R2"[5U55U	(+S9nUR6R9[R:5R<n103[R>RAU1045nUR	USS9nU(aOUR	[RF"[RH"[RJ"U5/SSSS9/5SS9nURMU[NRP"5S9n[SU5$![RBa0 [R>REUR55nN�f=f)aI105Generates a dummy certificate.106 107privkey: CA private key108cacert: CA certificate109commonname: Common name for the generated certificate.110sans: A list of Subject Alternate Names.111organization: Organization name for the generated certificate.112crl_url: URL of CRL distribution point113 114Returns cert if operation succeeded, None if not.115Fr�Nr)�
relative_name�116crl_issuer�reasonsr�)*r117r�r�r�r�r�rr�rarqrror�rx�CERT_EXPIRYr�r�r�rr�r�r�r�r�r�r�r	r�r�r�r2�AuthorityKeyIdentifier�"from_issuer_subject_key_identifierr��from_issuer_public_keyr��DistributionPointr�r�rrdr)
r118rrr�r�r
r�rr��is_valid_commonname�119issuer_ski�akir s
             r&�120dummy_certr:s���(�%�%�'�G��!�!�&�.�.�1�G��#�#����2�>�>�?�@�5�$��G�� � ��!2�!2�!4�5�G�121�122�123�124�125�126!�C��&�&�s�-A�'A�B�G��%�%�c�,@�&@�;�&N�O�G��G�$�D�0�I�S��_�r�5I����%�%�%����t�)�)�'�*=�*=�z�J�K����'�'�'����t�)�)�'�*C�*C�\�R�S��"�"�4�9�9�W�#5�6�G��#�#�D�$=�$=�$?�@�G��#�#��#�#�$4�T�$:�;�(�(�$��G� V��&�&�>�>��%�%�127�128�%�	��)�)�L�L�Z�X��129�#�#�C�%�#�8�G���'�'��&�&��*�*��7�7��@�A�&*�#'� $�	��	
��(�130���<�<�G�v�}�}��<�G�D���:���5�!�!�V��)�)�@�@��AR�AR�AT�U��V�s�+AK�AL�Lc���[R"5nURUR5n[RR5nUR
U[-5nURU[-[-5nUR[R"S5S5nURU[R"5S9nUR[ R"R$5$)zz131Generates an empty CRL signed with the CA key132 133privkey: CA private key134cacert: CA certificate135 136Returns a CRL DER encoded137i�Fr�)r138� CertificateRevocationListBuilderr�rhrqr�last_updater��next_update�139CRL_EXPIRYr��	CRLNumberr�rrdrNrrO�DER)r140rr�r�crls     r&�	dummy_crlr#�s����3�3�5�G��!�!�&�-�-�0�G�141�142�143�144�145�146!�C��!�!�#�(<�"<�=�G��!�!�#�(<�"<�z�"I�J�G��#�#�D�N�N�4�$8�%�@�G�147�,�,�7�f�m�m�o�,�148F�C����M�2�2�6�6�7�7r)T)�frozenc�^�\rSrSr%\\S'\R\S'\S-\S'\	\\S'Sr149g)�CertStoreEntryi�r �150privatekeyN�151chain_file�chain_certsr�)r�r�r�r�rr�r�
RSAPrivateKeyrr�r�r�r)r&r&r&�s'��152�J��!�!�!��t����d��r)r&�DHParamsc��\rSrSr%SrSr\R\S'\	\S'\153S-\S'\\	\S'\\S	'\
\\4\S154'\\\S'S\RS\	S\155S-S\S	\4156S
jrS\SS4Sjr\S\157S\4Sj5r\S(S\158\-S\S\S\S-SS4159Sjj5r\S(S\160S\161S\S-SS4Sjj5r\\R6S55r\S)S\162S\S\SS4Sjj5rS(S\S\163S\S-SS4SjjrS\S\SS4Sjr\S \\ RB-S\\4S!j5r"S)S"\S-S#\#\ RBS$\S-S%\S-S\4164S&jjr$S'r%g)*�	CertStorei�z,165Implements an in-memory certificate store.166�d�default_privatekey�167default_caN�default_chain_file�default_chain_certs�dhparams�certs�expire_queue�default_crlc�(�XlX lX0lX@lUR(aH[R168"URR
55Vs/sHn[U5PM snOU/UlXPl	0Ul169/Ulgs snfr")r/r0r1r6r170�load_pem_x509_certificates�171read_bytesrr2r3r4r5)r%r/r0r1r6r3�cs       r&r'�CertStore.__init__�s���#5��$��"4��&���&�&�	�8�8��+�+�6�6�8��
��A��Q���
���	
� �!�
���172�����
s�B�entryrJc�:�URRU5 [UR5UR:�aWURR	S5nUR173R
5VVs0sHup4XB:wdMX4_M snnUlggs snnfr�)r5r�r��	STORE_CAP�popr4�items)r%r<�dr�r�s     r&�expire�CertStore.expire�sz����� � ��'��t� � �!�D�N�N�2��!�!�%�%�a�(�A�+/�:�:�+;�+;�+=�H�+=�4�1���$�!�$�+=�H�D�J�3��Hs�7B�B�pathc���UR5(dUR[5 [RR174R
[U5R[R"55S5nU[RRR:wGa,[RRRU[RR175R5n[RR176RU[RRR[RRR[RRR5n[RRRU[RR177R 5nU$[#S5e)N�rzError loading DH Params.)�exists�write_bytes�DEFAULT_DHPARAMrW�SSL�_lib�BIO_new_filer1rr}�getfilesystemencoding�_ffi�NULL�gc�BIO_free�PEM_read_bio_DHparams�DH_free�RuntimeError)rD�bio�dhs   r&�load_dhparam�CertStore.load_dhparam�s1���{�{�}�}����_�-��k�k���+�+���I���S�6�6�8�9�4�178���'�+�+�"�"�'�'�'��+�+�"�"�%�%�c�7�;�;�+;�+;�+D�+D�E�C����!�!�7�7����� � �%�%���� � �%�%���� � �%�%�	�B����!�!�$�$�R����)9�)9�)A�)A�B�B��I��5�6�6r)�basenamer��179passphrasec��[U5nXS3-nXS3-nUR5(dURXU5 URXVU5$)N�-ca.pem�-dhparam.pem)rrG�create_store�180from_files)r=rDrYr�rZ�ca_file�dhparam_files       r&�181from_store�CertStore.from_storesY���D�z���:�W�-�-���182�,�7�7���~�~������T�X�6��~�~�g�Z�@�@r)r`rac��UR5n[XC5nURU5n[R"U5n[US5n[
XXR5n	[U5S:�aUn183OSn184U"XXX�U5$)Nr�)	r9�load_pem_private_keyrWr185r8rr#rr�)r=r`rarZ�raw�keyrVr4r�r"r(s           r&r_�CertStore.from_filess{��� � �"��"�3�3��
�
�
�l�
+���/�/��4��
�%��(�^����X�X�&���u�:��>�&-�J��J��3�J�R�0�0r)c#��# �[R"S5n[R"US-5 Sv� [R"U5 g![R"U5 f=f7f)z�186Context to temporarily set umask to its original value bitor 0o77.187Useful when writing private keys to disk so that only the owner188will be able to read them.189r�?N)�os�umask)�original_umasks r&�umask_secret�CertStore.umask_secret#sE������!���190����$�&�'�	%���H�H�^�$��B�H�H�^�$�s�0A)�A�A)�A&�&A)c���URSSS9 U=(d UnU=(d Un[X4US9upV[R5 XS3-R	UR[RR[RR[R"5S9UR[RR5-5 XS3-R	[R"UR5UUS[R"5S95 SSS5 UR[RR5nXS3-R	U5 XS	3-R	U5 XS1913-R	[R"UR5SUS[R"5S95 XS3-R	[ 5 g!,(df   N�=f)NT)�parents�exist_ok)r�r3r�r\)�encoding�format�encryption_algorithmz-ca.p12)r�rhr �casrvz-ca-cert.pemz-ca-cert.cerz-ca-cert.p12r])�mkdirr�r-rorH�
private_bytesrrOrP�
PrivateFormat�TraditionalOpenSSL�NoEncryptionrNr�serialize_key_and_certificatesrrI)rDrYr�r�r3rhr��pem_certs        r&r^�CertStore.create_store2s���	
�192�193�4�$�194�/�#�/�x��
�^�8����x�P����
#�
#�
%�
�j��(�
(�5�5��!�!�*�3�3�7�7�(�6�6�I�I�)6�)C�)C�)E�"��195�/�/�-�"8�"8�"<�"<�=�>�
��j��(�
(�5�5��5�5�!���*����)6�)C�)C�)E��
�&�.�?�?�=�#9�#9�#=�#=�>��	
�*�L�)�	)�6�6�x�@�	
�*�L�)�	)�6�6�x�@�196�*�L�)�	)�6�6��1�1��_�_�&����%2�%?�%?�%A�
�	197�198�*�L�)�	)�6�6��G�O&�
%�s
�C G,�,199G:�specc	�h�UR5n[RU5n[XCS9nUR	5UR	5:wa@[SUR
5SUR	5<SUR	5<35e[R"U5Vs/sHn[U5PM n	nUR(a'[RSUR
5S	35 UR[XVX)5U5 g![200aXnURnUR	5UR	5:wa [SUR
5SU35UeSnAN�SnAff=fs snf![201a%n[RSU35 U/n	SnAN�SnAff=f)202N)�passwordzPrivate and public keys in "z"" do not match:203cert.public_key()=z204private_key.public_key()=zUnable to find private key in "z": z"Failed to read certificate chain: �"z�" is a certificate authority and not a leaf certificate. This indicates a misconfiguration, see https://docs.mitmproxy.org/stable/concepts-certificates/.)r9rr<rfrar�absoluter/r205r8�logger�warningr��add_certr&)206r%r�rDrZrgr r��er4�chains207          r&�
add_cert_file�CertStore.add_cert_fileis����o�o����}�}�S�!��	�.�s�H�K���� �K�$:�$:�$<�<� �2�4�=�=�?�2C�D*����(�*�+1�"�-�-�/�1�3���=�	�&*�&E�&E�c�&J�K�&J��T�!�W�&J�E�K�208�:�:��N�N��D�M�M�O�$�%s�t�
�209	
�
�
�n�T��D�d�K��5�	��1�1�K���� �K�$:�$:�$<�<� �5�d�m�m�o�5F�c�!��M����=��	��L���	��N�N�?��s�C�D��F�E��	�sB�	D�F�,E=�F�210E:�"AE5�5E:�=F�211F1�F,�,F1�namesc�(�URR(a"XRURR'URRH$nXR[	UR2125'M& UHnXRU'M g)z�213Adds a cert to the certstore. We register the CN in the cert plus214any SANs, and also the list of names provided as an argument.215N)r r3r4r0r1r2)r%r<r��is    r&r��CertStore.add_cert�s`��216�:�:�=�=�(-�J�J�u�z�z�}�}�%����$�$�A�',�J�J�s�1�7�7�|�$�%��A�!�J�J�q�M�r)�dnc	��[U[5(aWURS5nU/n[S[	U55H(nURSSR
XS5-5 M* U$[U[R5(a[RUR5$[UR5/$)z�217Return all asterisk forms for a domain. For example, for www.example.com this will return218[b"www.example.com", b"*.example.com", b"*.com"]. The single wildcard "*" is omitted.219�.rez*.N)r#r1�split�ranger�r��joinr220rr-�asterisk_formsr2)r�r��retr�s    r&r��CertStore.asterisk_forms�s����b�#����H�H�S�M�E��$�C��1�c�%�j�)���221�222�4�#�(�(�5��9�"5�5�6�*��J�
��D�L�L�
)�
)��+�+�B�H�H�5�5�����M�?�"r)rr�r�r
c223�Z^�[U5n/nU(a URTRU55 UH#nURTRU55 M% URS5 URX45 [	[U4SjU5S5nU(aTRUnU$[[TRTRRUUUU5TRTRTRS9nUTRX4'TRU5 U$)a224commonname: Common name for the generated certificate. Must be a225valid, plain-ASCII, IDNA-encoded domain name.226 227sans: A list of Subject Alternate Names.228 229organization: Organization name for the generated certificate.230 231crl_url: URL of CRL distribution point232�*c�">�UTR;$r")r4)rhr%s �r&�<lambda>�$CertStore.get_cert.<locals>.<lambda>�s���s�d�j�j�'8r)N)r r'r(r))r	�extendr�r��next�filterr4r&rr/r0rr1r2rB)	r%rr�r�r
�potential_keys�sr�r<s	`        r&�get_cert�CertStore.get_cert�s���" ��%��(*����!�!�$�"5�"5�j�"A�B��A��!�!�$�"5�"5�a�"8�9�����c�"����z�0�1��F�8�.�I�4�P����J�J�t�$�E�$��!#���+�+��O�O�)�)��� ��
� �2�2��2�2� �4�4��E�.3�D�J�J�233�)�*��K�K����r))r4r0r2r1r6r/r3r5r"�NN)&r�r�r�r�r�r>rr*r�rrr�r+�dict�TCertIdr&r�r'rB�staticmethodrWr�r1r�rbr_�234contextlib�contextmanagerror^r�r�r235rr�rr�r�r�r)r&r-r-�s�����I��)�)�)����t��#��d��#������'�(�(��~�&�&���-�-����!�4�K�	�236���
�4I�N�I�t�I��7�4�7�H�7��7�.�$(�A��S�j�A��A��	A�237�D�L�A�238�
A��A��KO�
1��
1�*.�
1�<A�D�L�
1�	�
1��
1�����%���%��HL�4H��4H�!�4H�-0�4H�	
�4H��4H�nAE�!L��!L�#�!L�16���!L�	
�!L�F239"�n�240"�c�241"�d�242"��#�3��!1�!1�1�#�d�3�i�#��#�($(�"�/��$�J�/��t�'�'�(�/��D�j�	/�243�t��/�244�
/�/r)r-rIr�c�p�[R"X5$![a Ub[US5s$ef=f)z~245like cryptography's load_pem_private_key, but silently falls back to not using a password246if the private key is unencrypted.247N)rrf�	TypeError)rIr�s  r&rfrf�s=��248��1�1�$�A�A������'��d�3�3�
��s��5�5r�)Jr�rqr��loggingrlr}r��collections.abcr�dataclassesr�pathlibr�typingrrrr	rW�cryptographyr249�cryptography.hazmat.primitivesrr�)cryptography.hazmat.primitives.asymmetricr
rr�/cryptography.hazmat.primitives.asymmetric.typesr�,cryptography.hazmat.primitives.serializationr�cryptography.x509rr�mitmproxy.coretypesrr~�typing_extensionsr�	getLoggerr�r��	timedeltar�rrr�rI�Serializablerr�r�r�r1rgr��RSAPrivateKeyWithSerializationr$r�rr�r	r*rr�r#r&�
TCustomCertId�TGeneratedCertIdr�r+r-rfr�r)r&�<module>r�s�������	�250��$�!��������1�8�9�8�9�U�?�1�%�,����g��,�#�	�	�	�8�	$��251
���H�-�	�� � �c�*��
�
�
�Q�
'�252��)�)�r�2����"\�<�$�$�\�~�$�)�)���U�3��8�_�(=��1��1��1��1��3�-�-�t�/?�/?�?�@�	1�hI�8�D�$4�$4�5��S�	�A�I�d�FW�FW�I�F $��
Z�
�
�
�Z����Z��d�253�Z��4�#�#�254$�	Z�255��*�Z��4�Z�
Z�256�Z�z8�
�
�
�8����8��8�0�$�������
���#���(9�(9�9�:��257�
�/�/�2580���:�u�%��Z�Z�z259�u�260����261��AR�AR�262r)
codekingpro/portable-devtools · Team Ai