Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
hazmat.cpython-313.pyc147 linesDownload Raw Back to __pycache__
1�

2��j�1��P�SrSSKJr SSKrSSKrSSKJrJrJrJ	r	 SSK3r4SSKJrJ
r
JrJrJrJrJr SSKr\5R*"SS9"S	S655rS'SjrS(SjrS)S
jrS*Sjr\7R*"SS9"SS55r\8R*"SS9"SS55r\9R*"SS9"SS55r\10R*"SS9"SS55r\\\\\4r\	"SS\55r \11R*"SSS9"SS55r!\12R*"SS9"SS55r"\13R*"SSS9"SS 55r#\14R*"SSS9"S!S"55r$S+S#jr%S,S$jr&\'RQS%S&5r)g!\a SrGNlf=f)-z15Common verification code.16�)�annotationsN)�Protocol�Sequence�Union�runtime_checkable�)�CertificateError�DNSMismatch�IPAddressMismatch�Mismatch�SRVMismatch�URIMismatch�VerificationErrorT)�slotsc�r�\rSrSr%Sr\R"5rS\S'\R"5r	S\S'Sr17g)	�ServiceMatch�z418A match of a service id and a certificate pattern.19�	ServiceID�20service_id�CertificatePattern�cert_pattern�N)�__name__�21__module__�__qualname__�__firstlineno__�__doc__�attr�ibr�__annotations__r�__static_attributes__r��]D:\code\apps\devtools\python\user_packages\Python313\site-packages\service_identity/hazmat.pyrrs*���!�G�G�I�J�	�%�'+�w�w�y�L�$�0r"rc��U(d
Sn[U5e/n[X5[X5-nUVs/sHofRPM nnUH(nX�;dM22URUR	US95 M* UHDnX�;dM23[XR5(dM&URUR	US95 MF U(a	[US9eU$s snf)z�24Verify whether *cert_patterns* are valid for *obligatory_ids* and25*optional_ids*.26 27*obligatory_ids* must be both present and match.  *optional_ids* must match28if a pattern of the respective type is present.29z3Certificate does not contain any `subjectAltName`s.)�
mismatched_id)�errors)r	�
_find_matchesr�append�error_on_mismatch�_contains_instance_of�
pattern_classr)	�
cert_patterns�obligatory_ids�optional_ids�msgr&�matches�match�matched_ids�is	         r#�verify_service_identityr4)s����C���s�#�#�
�F��M�:�]��>��G�29�9���#�#��K�9�
�����M�M��#�#�!�#�4�
����30
��$9��?�?�%31�%32�
�M�M��#�#�!�#�4�
����v�.�.��N��-:s�Cc	��/nUH<nUH3nURU5(dMUR[XCS95 M5 M> U$)zt33Search for matching certificate patterns and service_ids.34 35Args:36    service_ids: List of service IDs like DNS_ID.37)rr)�verifyr(r)r,�service_idsr0�sid�cids     r#r'r'WsE���G��� �C��z�z�#������ �c�B��!���Nr"c�.^�[U4SjU55$)Nc3�<># �UHn[UT5v� M g7f�N)�38isinstance)�.0�e�cls  �r#�	<genexpr>�(_contains_instance_of.<locals>.<genexpr>ms����.�#�Q�z�!�R� � �#�s�)�any)�seqr@s `r#r*r*ls����.�#�.�.�.r"c��[U[5(aURS5n[	U5 g![a gf=f![39a Of=f[R"URSS55 g![40a gf=f)z�41Check whether *pattern* could be/match an IP address.42 43Args:44    pattern: A pattern for a host name.45 46Returns:47    `True` if *pattern* could be an IP address, else `False`.48�asciiFT�*�1)	r=�bytes�decode�UnicodeError�int�49ValueError�	ipaddress�50ip_address�replace��patterns r#�_is_ip_addressrSps����'�5�!�!�	��n�n�W�-�G���G�����	��	��51�
��
��52����W�_�_�S�#�6�7�������s2�5�A�53A�A�54A�A�&A=�=55B56�	B57c�~�\rSrSr%Sr\R"5rS\S'\	R"S5r\S	Sj5r
Srg)58�59DNSPattern�z/60A DNS pattern as extracted from certificates.61rIrR�^[a-z0-9\-_.]+$c��[U[5(d
Sn[U5eUR5nUS:Xd[	U5(dSU;aSU<S3n[U5eUR
[5nSU;a[U5 U"US9$)Nz'The DNS pattern must be a bytes string.r"�zInvalid DNS pattern �.�*rQ)	r=rI�	TypeError�striprSr	�	translate�_TRANS_TO_LOWER�_validate_pattern)�clsrRr/s   r#�62from_bytes�DNSPattern.from_bytes�s����'�5�)�)�;�C��C�.� ��-�-�/���c�>�^�G�4�4���8H�(���1�5�C�"�3�'�'��#�#�O�4���7�?��g�&��7�#�#r"rN)rRrI�returnrU)rrrrrrrrRr �re�compile�_RE_LEGAL_CHARS�classmethodrbr!rr"r#rUrU�s:���63�W�W�Y�G�U���j�j�!4�5�O��$��$r"rUc�Z�\rSrSr%Sr\R"5rS\S'\	SSj5r64Srg)	�IPAddressPattern�z765An IP address pattern as extracted from certificates.66�-ipaddress.IPv4Address | ipaddress.IPv6AddressrRc�z�U"[R"U5S9$![a SU<S3n[U5Sef=f)NrQzInvalid IP address pattern rZ)rNrOrMr	)ra�bsr/s   r#rb�IPAddressPattern.from_bytes�sG��	2��y�3�3�B�7�8�8���	2�/��v�Q�7�C�"�3�'�T�1�	2�s��:rN)rnrIrdrj)rrrrrrrrRr rhrbr!rr"r#rjrj�s-���67>B�W�W�Y�G�
:�F��2��2r"rjc��\rSrSr%Sr\R"5rS\S'\R"5r	S\S'\68S69Sj5rSrg	)�70URIPattern�z071An URI pattern as extracted from certificates.72rI�protocol_patternrU�dns_patternc�B�[U[5(d
Sn[U5eUR5R	[735nSU;dSU;d[
U5(aSU<S3n[U5eURS5up4U"U[RU5S9$)Nz'The URI pattern must be a bytes string.�:r[zInvalid URI pattern rZ)rsrt�r=rIr\r]r^r_rSr	�splitrUrb)rarRr/rs�hostnames     r#rb�URIPattern.from_bytes�s����'�5�)�)�;�C��C�.� ��-�-�/�+�+�O�<���w��$�'�/�^�G�5L�5L�(���1�5�C�"�3�'�'�%,�]�]�4�%8�"���-�"�-�-�h�7�74�	75r"rN)rRrIrdrq)
rrrrrrrrsr rtrhrbr!rr"r#rqrq�s<���76#�g�g�i��e�'�"�g�g�i�K��'��77��78r"rqc��\rSrSr%Sr\R"5rS\S'\R"5r	S\S'\79S80Sj5rSrg	)�81SRVPattern��z082An SRV pattern as extracted from certificates.83rI�name_patternrUrtc�\�[U[5(d
Sn[U5eUR5R	[845nUSS:wdSU;dSU;d[
U5(aSU<S3n[U5eURSS5up4U"USS[RU5S	9$)85Nz'The SRV pattern must be a bytes string.r�_�.r[zInvalid SRV pattern rZr)r~rtrw)rarRr/�namerys     r#rb�SRVPattern.from_bytes�s����'�5�)�)�;�C��C�.� ��-�-�/�+�+�O�<��
�A�J�'�!��7�"��w���g�&�&�(���1�5�C�"�3�'�'� ���t�Q�/�����a�b��z�/D�/D�X�/N�86�	87r"rN)rRrIrdr|)
rrrrrrrr~r rtrhrbr!rr"r#r|r|�s;���88�'�'�)�L�%�#�"�g�g�i�K��'��89��90r"r|c�F�\rSrSr\SSj5r\SSj5rS	SjrSrg)91ri	c��gr<r��selfs r#r+�ServiceID.pattern_classs��9<r"c��gr<rr�s r#r)�ServiceID.error_on_mismatchs��36r"c��gr<r�r�rRs  r#r6�ServiceID.verifys��3r"rN)rdztype[CertificatePattern])rdztype[Mismatch]�rRrrd�bool)	rrrr�propertyr+r)r6r!rr"r#rr	s!��
�<��<�
�6��6�>r"rF)�initrc��\rSrSr%Sr\R"5rS\S'\	R"S5r\r
\rS92SjrSSjrSrg	)�DNS_IDiz!93A DNS service ID, aka hostname.94rIryrWc���[U[5(d
Sn[U5eUR5nU(a[	U5(a
Sn[U5e[
SU55(a/[(a[R"U5nOSn[U5eURS5nUR[5UlURRUR5c
Sn[U5eg)NzDNS-ID must be a text string.zInvalid DNS-ID.c3�># �UHn[U5S:�v� M g7f)�N)�ord)r>�cs  r#rA�"DNS_ID.__init__.<locals>.<genexpr>+s���.�X��s�1�v��|�X�s�z+idna library is required for non-ASCII IDs.rF)r=�strr\r]rSrMrC�idna�encode�ImportErrorr^r_ryrgr1)r�ryr/�ascii_ids    r#�__init__�DNS_ID.__init__!s����(�C�(�(�1�C��C�.� ��>�>�#���>�(�3�3�#�C��S�/�!��.�X�.�.�.��t��;�;�x�0��C��!�#�&�&����w�/�H� �*�*�?�;��
����%�%�d�m�m�4�<�#�C��S�/�!�=r"c�x�[XR5(a [URUR5$g)z395https://tools.ietf.org/search/rfc6125#section-6.496F)r=r+�_hostname_matchesrRryr�s  r#r6�
DNS_ID.verify9s-���g�1�1�2�2�$�W�_�_�d�m�m�D�D�r")ryN)ryr�r�)rrrrrrrryr rerfrgrUr+r97r)r�r6r!rr"r#r�r�s?����g�g�i�H�e���j�j�!4�5�O��M�#��"�0r"r�c�j�\rSrSr%Sr\R"\RS9r	S\98S'\r\
rS	SjrSrg)99�IPAddress_IDiCz100An IP address service ID.101)�	converterrl�ipc�j�[XR5(aURUR:H$g)z3102https://tools.ietf.org/search/rfc2818#section-3.1103F)r=r+r�rRr�s  r#r6�IPAddress_ID.verifyPs+���g�1�1�2�2��7�7�g�o�o�-�-�r"rNr�)rrrrrrrrNrOr�r rjr+rr)r6r!rr"r#r�r�Cs:���9=����&�&�9�B�5��%�M�)��r"r�c��\rSrSr%Sr\R"5rS\S'\R"5r	S\S'\104r\r
SSjrSSjrS	rg105)
�URI_IDiZz106An URI service ID.107rI�protocolr��dns_idc�d�[U[5(d
Sn[U5eUR5nSU;d[	U5(a
Sn[U5eUR
S5up4URS5R[5Ul108[URS55Ulg)NzURI-ID must be a text string.�:zInvalid URI-ID.rF�/)
r=r�r\r]rSrMrxr�r^r_r�r�r�)r��urir/�protrys     r#r��URI_ID.__init__fs����#�s�#�#�1�C��C�.� ��i�i�k���c�>�^�C�0�0�#�C��S�/�!����3�������G�,�6�6��G��
��X�^�^�C�0�1��r"c���[XR5(aEURUR:H=(a% URRUR5$g)z5109https://tools.ietf.org/search/rfc6125#section-6.5.2110F)r=r+rsr�r�r6rtr�s  r#r6�
URI_ID.verifyusN���g�1�1�2�2��(�(�D�M�M�9�<��K�K�&�&�w�':�':�;�
�111r")r�r�N)r�r�r�)rrrrrrrr�r r�rqr+rr)r�r6r!rr"r#r�r�Zs>����g�g�i�H�e���W�W�Y�F�F���M�#��
2�112r"r�c��\rSrSr%Sr\R"5rS\S'\R"5r	S\S'\113r\r
SSjrSSjrS	rg114)
�SRV_IDi�z115An SRV service ID.116rIr�r�r�c�`�[U[5(d
Sn[U5eUR5nSU;d[	U5(d	USS:wa
Sn[U5eUR
SS5up4USSRS5R[5Ul117[U5Ulg)NzSRV-ID must be a text string.rZr�_zInvalid SRV-ID.rrF)
r=r�r\r]rSrMrxr�r^r_r�r�r�)r��srvr/r�rys     r#r��SRV_ID.__init__�s����#�s�#�#�1�C��C�.� ��i�i�k���c�>�^�C�0�0�C��F�c�M�#�C��S�/�!����3��*������H�O�O�G�,�6�6��G��	��X�&��r"c���[XR5(aEURUR:H=(a% URRUR5$g)z5118https://tools.ietf.org/search/rfc6125#section-6.5.1119F)r=r+r�r~r�r6rtr�s  r#r6�
SRV_ID.verify�sP���g�1�1�2�2��9�9�� 4� 4�4�����9K�9K��#�#�:�
�r")r�r�N)r�r�r�)rrrrrrrr�r r�r|r+r
r)r�r6r!rr"r#r�r��s>����'�'�)�D�%���W�W�Y�F�F���M�#��
'�	r"r�c��SU;aLURSS5up#URSS5upEX5:wagURS5(agUSU4;$X:H$)zL120:return: `True` if *cert_pattern* matches *actual_hostname*, else `False`.121r[r�rFsxn--)rx�122startswith)r�actual_hostname�	cert_head�	cert_tail�actual_head�actual_tails      r#r�r��sl���|��+�1�1�$��:��	�#2�#8�#8��q�#A� ���#���!�!�'�*�*���T�;�/�/�/��*�*r"c�B�URS5nUS:�aSU<S3n[U5eURS5n[U5S:aSU<S3n[U5eSUS;aSU<S	3n[U5e[	S123U55(aSU<S3n[U5eg)
z\124Check whether the usage of wildcards within *cert_pattern* conforms with125our expectations.126r[rzCertificate's DNS-ID z contains too many wildcards.r��z0 has too few host components for wildcard usage.rz+ has a wildcard outside the left-most part.c3�B# �UHn[U5(+v� M g7fr<)�len)r>�ps  r#rA�$_validate_pattern.<locals>.<genexpr>�s���127%�u�!�s�1�v�:�:�u�s�z contains empty parts.N)�countr	rxr�rC)r�cntr/�partss    r#r`r`�s���128�129�130�T�131"�C�132�Q�w�%�l�%5�5R�S���s�#�#����t�$�E�133�5�z�A�~�%�l�%5�5e�f���s�#�#��5��8��%�l�%5�5`�a���s�#�#�134�135%�u�136%�%�%�%�l�%5�5K�L���s�#�#�&r"sABCDEFGHIJKLMNOPQRSTUVWXYZsabcdefghijklmnopqrstuvwxyz)r,�Sequence[CertificatePattern]r-�Sequence[ServiceID]r.r�rd�list[ServiceMatch])r,r�r7r�rdr�)rDzSequence[object]r@�typerdr�)rRzstr | bytesrdr�)rrIr�rIrdr�)rrIrd�None)*r�137__future__rrNre�typingrrrrr�138exceptionsr	r139rrr
rrr�r��srr4r'r*rSrUrjrqr|rrr�r�r�r�r�r`rI�	maketransr_rr"r#�<module>r�s5���#��	�?�?�������140���d��1�1��1�+�/�+�'�+�&�+��	+�\�/��$����*/��>���d��$�$��$�:���d��2�2��2�"���d��141�142��143�<���d��144�145��146�B��147�J�(8�8�����?��?��?����U�$��+�+� �+�\���d������,���U�$��$�$� �$�N���U�$��#�#� �#�L+�$$�.�/�/�!�#@����o
���D��s�F�F%�$F%
codekingpro/portable-devtools · Team Ai