§
    ¡”jNE  ã                  ó8  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 ddlmZmZ ddlmZmZ dZdZdZdZd	gZeeeeeef         Zd
„ dD ¦   «         ZdSd„Zej        r"d dlmZ d dlmZ ddl mZ!  G d„ ded¬¦  «        Z"i Z#de$d<   	 d dlZd dlm%Z%mZm&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.mZm/Z/ e)Z0er ee(¦  «        sdZdD ]*Z1	  e2e/e1¦  «        e# e2ede1› �¦  «        <   Œ # e3$ r Y Œ'w xY wddl mZ n# e4$ r dZ&dZ'dZ-dZ.dxZ0Z)d Z*d!Z+d"Z,Y nw xY wej5        de6df         Z7dTd'„Z8dUd+„Z9dVd-„Z:	 	 	 	 	 	 	 dWdXd8„Z;ej<        	 	 	 	 	 	 	 	 	 	 	 	 dYdZdI„¦   «         Z=ej<        	 	 	 	 	 	 	 	 	 	 	 	 dYd[dK„¦   «         Z=	 	 	 	 	 	 	 	 	 	 	 	 d\d[dL„Z=d]dO„Z>d^dQ„Z?	 d_d`dR„Z@dS )aé    )ÚannotationsN)Ú	unhexlifyé   )ÚProxySchemeUnsupportedÚSSLErroré   )Ú_BRACELESS_IPV6_ADDRZ_REÚ_IPV4_REFzhttp/1.1c                óB   — i | ]\  }}|t          t          |d ¦  «        “ŒS ©N)ÚgetattrÚhashlib)Ú.0ÚlengthÚ	algorithms      ú`/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/urllib3/util/ssl_.pyú
<dictcomp>r      s:   € ð ð ð áˆ�	ð �G•G˜Y¨Ñ-Ô-ðð ð ó    ))é    Úmd5)é(   Úsha1)é@   Úsha256Úopenssl_versionÚstrÚreturnÚboolc                ó0   — |                       d¦  «        }|S )NzOpenSSL )Ú
startswith)r   Ú
is_openssls     r   Ú(_is_has_never_check_common_name_reliabler"      s   € ð
 !×+Ò+¨JÑ7Ô7€JàÐr   )Ú
VerifyMode)Ú	TypedDict)ÚSSLTransportc                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_TYPE_PEER_CERT_RET_DICTztuple[tuple[str, str], ...]ÚsubjectAltNamez'tuple[tuple[tuple[str, str], ...], ...]Úsubjectr   ÚserialNumberN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r   r   r'   r'   .   s6   € € € € € € Ø3Ð3Ð3Ñ3Ø8Ð8Ð8Ñ8ØÐÐÑÐÐr   r'   )Útotalzdict[int, int]Ú_SSL_VERSION_TO_TLS_VERSION)ÚCERT_REQUIREDÚHAS_NEVER_CHECK_COMMON_NAMEÚOP_NO_COMPRESSIONÚOP_NO_TICKETÚOPENSSL_VERSIONÚPROTOCOL_TLSÚPROTOCOL_TLS_CLIENTÚVERIFY_X509_PARTIAL_CHAINÚVERIFY_X509_STRICTÚOP_NO_SSLv2ÚOP_NO_SSLv3Ú
SSLContextÚ
TLSVersion)ÚTLSv1ÚTLSv1_1ÚTLSv1_2Ú	PROTOCOL_i   i @  i   i   é   i   r   Úcertúbytes | NoneÚfingerprintÚNonec                ó  — | €t          d¦  «        ‚|                     dd¦  «                             ¦   «         }t          |¦  «        }|t          vrt          d|› �¦  «        ‚t                               |¦  «        }|€t          d|› �¦  «        ‚t          |                     ¦   «         ¦  «        } || ¦  «                             ¦   «         }t          j
        ||¦  «        s(t          d|› d|                     ¦   «         › d	�¦  «        ‚dS )
zá
    Checks if given fingerprint matches the supplied certificate.

    :param cert:
        Certificate as bytes object.
    :param fingerprint:
        Fingerprint as string of hexdigits, can be interspersed by colons.
    NzNo certificate for the peer.ú:Ú zFingerprint of invalid length: zAHash function implementation unavailable for fingerprint length: z&Fingerprints did not match. Expected "z", got "ú")r   ÚreplaceÚlowerÚlenÚHASHFUNC_MAPÚgetr   ÚencodeÚdigestÚhmacÚcompare_digestÚhex)rD   rF   Údigest_lengthÚhashfuncÚfingerprint_bytesÚcert_digests         r   Úassert_fingerprintrZ   k   s&  € ð €|ÝÐ5Ñ6Ô6Ð6à×%Ò% c¨2Ñ.Ô.×4Ò4Ñ6Ô6€KÝ˜Ñ$Ô$€MØ�LÐ(Ð(ÝÐF¸ÐFÐFÑGÔGÐGÝ×Ò Ñ.Ô.€HØÐÝØ_ÐP]Ð_Ð_ñ
ô 
ð 	
õ
 " +×"4Ò"4Ñ"6Ô"6Ñ7Ô7Ðà�(˜4‘.”.×'Ò'Ñ)Ô)€KåÔ˜{Ð,=Ñ>Ô>ð 
ÝØ^°[Ð^Ð^È+Ï/Ê/ÑJ[ÔJ[Ð^Ð^Ð^ñ
ô 
ð 	
ð
ð 
r   Ú	candidateúNone | int | strr#   c                ó¦   — | €t           S t          | t          ¦  «        r2t          t          | d¦  «        }|€t          t          d| z   ¦  «        }|S | S )aë  
    Resolves the argument to a numeric constant, which can be passed to
    the wrap_socket function/method from the ssl module.
    Defaults to :data:`ssl.CERT_REQUIRED`.
    If given a string it is assumed to be the name of the constant in the
    :mod:`ssl` module or its abbreviation.
    (So you can specify `REQUIRED` instead of `CERT_REQUIRED`.
    If it's neither `None` nor a string we assume it is already the numeric
    constant which can directly be passed to wrap_socket.
    NÚCERT_)r2   Ú
isinstancer   r   Ússl©r[   Úress     r   Úresolve_cert_reqsrc   �   sW   € ð ÐÝÐå�)�SÑ!Ô!ð Ý•c˜9 dÑ+Ô+ˆØˆ;Ý�#˜w¨Ñ2Ñ3Ô3ˆCØˆ
àÐr   Úintc                óÖ   — | €t           S t          | t          ¦  «        rJt          t          | d¦  «        }|€t          t          d| z   ¦  «        }t          j        t          |¦  «        S | S )z 
    like resolve_cert_reqs
    NrB   )r7   r_   r   r   r`   ÚtypingÚcastrd   ra   s     r   Úresolve_ssl_versionrh   ¤   sd   € ð ÐÝÐå�)�SÑ!Ô!ð %Ý•c˜9 dÑ+Ô+ˆØˆ;Ý�#˜{¨YÑ6Ñ7Ô7ˆCÝŒ{�3 Ñ$Ô$Ð$àÐr   Ússl_versionú
int | NoneÚ	cert_reqsÚoptionsÚciphersú
str | NoneÚssl_minimum_versionÚssl_maximum_versionÚverify_flagsússl.SSLContextc                ó>  — t           €t          d¦  «        ‚| dt          t          fvry|€|�t	          d¦  «        ‚t
                               | t          j        ¦  «        }t
                               | t          j	        ¦  «        }t          j        dt          d¬¦  «         t          t          ¦  «        }|�||_        nt          j        |_        |�||_        |r|                     |¦  «         |€t"          j        n|}|€*d}|t&          z  }|t(          z  }|t*          z  }|t,          z  }|xj        |z  c_        |€&d}t0          j        dk    r|t4          z  }|t6          z  }|xj        |z  c_        t;          |d	d¦  «        �d
|_        |t"          j        k    rt>          s||_         d
|_!        nd|_!        ||_         d|_"        dtF          j$        v r=tF          j%         &                    tF          j$                             d¦  «        ¦  «        }nd}|r||_'        |S )a#  Creates and configures an :class:`ssl.SSLContext` instance for use with urllib3.

    :param ssl_version:
        The desired protocol version to use. This will default to
        PROTOCOL_SSLv23 which will negotiate the highest protocol that both
        the server and your installation of OpenSSL support.

        This parameter is deprecated instead use 'ssl_minimum_version'.
    :param ssl_minimum_version:
        The minimum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
    :param ssl_maximum_version:
        The maximum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
        Not recommended to set to anything other than 'ssl.TLSVersion.MAXIMUM_SUPPORTED' which is the
        default value.
    :param cert_reqs:
        Whether to require the certificate verification. This defaults to
        ``ssl.CERT_REQUIRED``.
    :param options:
        Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``,
        ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``, and ``ssl.OP_NO_TICKET``.
    :param ciphers:
        Which cipher suites to allow the server to select. Defaults to either system configured
        ciphers if OpenSSL 1.1.1+, otherwise uses a secure default set of ciphers.
    :param verify_flags:
        The flags for certificate verification operations. These default to
        ``ssl.VERIFY_X509_PARTIAL_CHAIN`` and ``ssl.VERIFY_X509_STRICT`` for Python 3.13+.
    :returns:
        Constructed SSLContext object with specified options
    :rtype: SSLContext
    Nz7Can't create an SSLContext object without an ssl modulezZCan't specify both 'ssl_version' and either 'ssl_minimum_version' or 'ssl_maximum_version'zi'ssl_version' option is deprecated and will be removed in urllib3 v3.0. Instead use 'ssl_minimum_version'r   )ÚcategoryÚ
stacklevelr   )é   é   Úpost_handshake_authTFÚSSLKEYLOGFILE)(r=   Ú	TypeErrorr7   r8   Ú
ValueErrorr1   rP   r>   ÚMINIMUM_SUPPORTEDÚMAXIMUM_SUPPORTEDÚwarningsÚwarnÚFutureWarningÚminimum_versionrA   Úmaximum_versionÚset_ciphersr`   r2   r;   r<   r4   r5   rl   ÚsysÚversion_infor9   r:   rq   r   rx   ÚIS_PYOPENSSLÚverify_modeÚcheck_hostnameÚhostname_checks_common_nameÚosÚenvironÚpathÚ
expandvarsÚkeylog_filename)	ri   rk   rl   rm   ro   rp   rq   ÚcontextÚsslkeylogfiles	            r   Úcreate_urllib3_contextr‘   ´   s]  € õN ÐÝÐQÑRÔRÐRð ˜4¥Õ/BÐCÐCÐCð Ð*Ð.AÐ.MÝðAñô ð õ #>×"AÒ"AØ�ZÔ9ñ#ô #Ðõ #>×"AÒ"AØ�ZÔ9ñ#ô #Ðõ ŒMðMå&Øð	ñ ô ð õ Õ,Ñ-Ô-€GØÐ&Ø"5ˆÔÐå",Ô"4ˆÔàÐ&Ø"5ˆÔð ð %Ø×Ò˜GÑ$Ô$Ð$ð &/Ð%6•Ô!Ð!¸I€Ià€Øˆà•;Ñˆà•;Ñˆð 	Õ$Ñ$ˆð
 	•<Ñˆà€O„O�wÑ€O„OàÐØˆõ Ô˜wÒ&Ð&ØÕ5Ñ5ˆLØÕ.Ñ.ˆLàÐÔ˜LÑ(ÐÔõ ˆwÐ-¨tÑ4Ô4Ð@Ø&*ˆÔ#ð •CÔ%Ò%Ð%­lÐ%Ø'ˆÔØ!%ˆÔÐà!&ˆÔØ'ˆÔà*/€GÔ'à�"œ*Ð$Ð$Ýœ×*Ò*­2¬:¯>ª>¸/Ñ+JÔ+JÑKÔKˆˆàˆØð 0Ø"/ˆÔà€Nr   .Úsockúsocket.socketÚkeyfileÚcertfileÚca_certsÚserver_hostnameÚssl_contextússl.SSLContext | NoneÚca_cert_dirÚkey_passwordÚca_cert_dataúNone | str | bytesÚ
tls_in_tlsútyping.Literal[False]ússl.SSLSocketc                ó   — d S r   r/   ©r’   r”   r•   rk   r–   r—   ri   rm   r˜   rš   r›   rœ   rž   s                r   Ússl_wrap_socketr£   G  s	   € ð �Cr   ú ssl.SSLSocket | SSLTransportTypec                ó   — d S r   r/   r¢   s                r   r£   r£   Y  s	   € ð (+ sr   c                ó   — |}|€t          |||¬¦  «        }|s|	s|r;	 |                     ||	|¦  «         nH# t          $ r}t          |¦  «        |‚d}~ww xY w|€$t	          |d¦  «        r|                     ¦   «          |r |
€t          |¦  «        rt          d¦  «        ‚|r0|
€|                     ||¦  «         n|                     |||
¦  «         |                     t          ¦  «         t          | |||¦  «        }|S )a´  
    All arguments except for server_hostname, ssl_context, tls_in_tls, ca_cert_data and
    ca_cert_dir have the same meaning as they do when using
    :func:`ssl.create_default_context`, :meth:`ssl.SSLContext.load_cert_chain`,
    :meth:`ssl.SSLContext.set_ciphers` and :meth:`ssl.SSLContext.wrap_socket`.

    :param server_hostname:
        When SNI is supported, the expected hostname of the certificate
    :param ssl_context:
        A pre-made :class:`SSLContext` object. If none is provided, one will
        be created using :func:`create_urllib3_context`.
    :param ciphers:
        A string of ciphers we wish the client to support.
    :param ca_cert_dir:
        A directory containing CA certificates in multiple separate files, as
        supported by OpenSSL's -CApath flag or the capath argument to
        SSLContext.load_verify_locations().
    :param key_password:
        Optional password if the keyfile is encrypted.
    :param ca_cert_data:
        Optional string containing CA certificates in PEM format suitable for
        passing as the cadata parameter to SSLContext.load_verify_locations()
    :param tls_in_tls:
        Use SSLTransport to wrap the existing socket.
    N)rm   Úload_default_certsz5Client private key is encrypted, password is required)r‘   Úload_verify_locationsÚOSErrorr   Úhasattrr§   Ú_is_key_file_encryptedÚload_cert_chainÚset_alpn_protocolsÚALPN_PROTOCOLSÚ_ssl_wrap_socket_impl)r’   r”   r•   rk   r–   r—   ri   rm   r˜   rš   r›   rœ   rž   r�   ÚeÚssl_socks                   r   r£   r£   k  sK  € ðP €GØ€õ )¨°iÈÐQÑQÔQˆàð %�;ð % ,ð %ð	%Ø×)Ò)¨(°KÀÑNÔNÐNÐNøÝð 	%ð 	%ð 	%Ý˜1‘+”+ 1Ð$øøøøð	%øøøð 
Ð	¥¨Ð2FÑ!GÔ!GÐ	à×"Ò"Ñ$Ô$Ð$ð
 ð P�<Ð'Õ,BÀ7Ñ,KÔ,KÐ'ÝÐNÑOÔOÐOàð EØÐØ×#Ò# H¨gÑ6Ô6Ð6Ð6à×#Ò# H¨g°|ÑDÔDÐDà×Ò�~Ñ.Ô.Ð.å$ T¨7°JÀÑPÔP€HØ€Os   ž6 ¶
AÁ AÁAÚhostnameústr | bytesc                óÀ   — t          | t          ¦  «        r|                      d¦  «        } t          t	          j        | ¦  «        pt          j        | ¦  «        ¦  «        S )zæDetects whether the hostname given is an IPv4 or IPv6 address.
    Also detects IPv6 addresses with Zone IDs.

    :param str hostname: Hostname to examine.
    :return: True if the hostname is an IP address, False otherwise.
    Úascii)r_   ÚbytesÚdecoder   r
   Úmatchr	   )r²   s    r   Úis_ipaddressr¹   µ  sP   € õ �(�EÑ"Ô"ð ,à—?’? 7Ñ+Ô+ˆÝ•”˜xÑ(Ô(ÐTÕ,DÔ,JÈ8Ñ,TÔ,TÑUÔUÐUr   Úkey_filec                ó„   — t          | ¦  «        5 }|D ]}d|v r ddd¦  «         dS Œ	 ddd¦  «         n# 1 swxY w Y   dS )z*Detects if a key file is encrypted or not.Ú	ENCRYPTEDNTF)Úopen)rº   ÚfÚlines      r   r«   r«   Â  s¶   € å	ˆh‰Œð ˜1Øð 	ð 	ˆDà˜dÐ"Ð"Øð	ð ð ñ ô ð ð ð ð #ð	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ˆ5s   �
5§5µ9¼9c                óª   — |r;t           st          d¦  «        ‚t          j        |¦  «         t          | ||¦  «        S |                     | |¬¦  «        S )Nz0TLS in TLS requires support for the 'ssl' module)r—   )r%   r   Ú$_validate_ssl_context_for_tls_in_tlsÚwrap_socket)r’   r˜   rž   r—   s       r   r¯   r¯   Í  sh   € ð ð @Ýð 	å(ØBñô ð õ 	Ô9¸+ÑFÔFÐFÝ˜D +¨Ñ?Ô?Ð?à×"Ò" 4¸Ð"ÑIÔIÐIr   )r   r   r   r   )rD   rE   rF   r   r   rG   )r[   r\   r   r#   )r[   r\   r   rd   )NNNNNNN)ri   rj   rk   rj   rl   rj   rm   rn   ro   rj   rp   rj   rq   rj   r   rr   )............)r’   r“   r”   rn   r•   rn   rk   rj   r–   rn   r—   rn   ri   rj   rm   rn   r˜   r™   rš   rn   r›   rn   rœ   r�   rž   rŸ   r   r    )r’   r“   r”   rn   r•   rn   rk   rj   r–   rn   r—   rn   ri   rj   rm   rn   r˜   r™   rš   rn   r›   rn   rœ   r�   rž   r   r   r¤   )NNNNNNNNNNNF)r²   r³   r   r   )rº   r   r   r   r   )
r’   r“   r˜   rr   rž   r   r—   rn   r   r¤   )AÚ
__future__r   r   rS   rŠ   Úsocketr„   rf   r~   Úbinasciir   Ú
exceptionsr   r   Úurlr	   r
   r=   r%   r3   r†   r®   Útuplerd   r   Ú_TYPE_VERSION_INFOrO   r"   ÚTYPE_CHECKINGr`   r#   r$   ÚssltransportÚSSLTransportTyper'   r1   r.   r2   r4   r5   r6   r7   r8   r9   r:   r;   r<   r>   ÚPROTOCOL_SSLv23Úattrr   ÚAttributeErrorÚImportErrorÚUnionr¶   Ú_TYPE_PEER_CERT_RETrZ   rc   rh   r‘   Úoverloadr£   r¹   r«   r¯   r/   r   r   ú<module>rÔ      s÷  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à€
Ø€Ø#Ð Ø€Ø�€à˜3  S¨#¨sÐ2Ô3Ð ðð àHðñ ô €ðð ð ð ð 
Ôð 	ØÐÐÐÐÐØ Ð Ð Ð Ð Ð à>Ð>Ð>Ð>Ð>Ð>ðð ð ð ð  9°Eð ñ ô ð ð /1Ð Ð 0Ð 0Ð 0Ñ 0ð.Ø€J€J€Jðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  #€Oð #ð ,Ð+SÐ+SØñ,ô ,ð ,ð ',Ð#ð 0ð ð ˆð	ØLSÈGØ˜DñMô MÐ'¨¨°Ð5GÀÐ5GÐ5GÑ(HÔ(HÑIÐIøð ð 	ð 	ð 	ØˆHð	øøøð +Ð*Ð*Ð*Ð*Ð*Ð*øØð ð ð ØÐØ€LØ€KØ€KØ%&Ð&€O�lØÐØ 'ÐØÐÐÐðøøøð ”lÐ#=¸uÀdÐ#JÔKÐ ð
ð 
ð 
ð 
ðDð ð ð ð.ð ð ð ð" #Ø ØØØ&*Ø&*Ø#ðPð Pð Pð Pð Pðf „ð ØØØØ"%Ø!ØØ),Ø!Ø"Ø'*Ø(+ðð ð ð ñ „ðð" „ð ØØØØ"%Ø!ØØ),Ø!Ø"Ø'*Øð+ð +ð +ð +ñ „ð+ð& ØØ ØØ"&Ø"ØØ)-Ø"Ø#Ø'+ØðGð Gð Gð Gð GðT
Vð 
Vð 
Vð 
Vðð ð ð ð #'ð	Jð Jð Jð Jð Jð Jð Js6   Â7C: ÃC(Ã'C: Ã(C0Ã-C: Ã/C0Ã0	C: Ã:DÄD