
    
i,                        U 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Zd dlZddl	m
Z
mZmZmZ  ej                         dk(  r	ddlmZmZ n% ej                         dk(  r	ddlmZmZ nddlmZmZ ej(                  rd dlmZ eez  ej2                  e   z  ej2                  e   z  Zej6                  ed<   eez  ej:                  g eez  f   z  Zej6                  ed	<   ddZddZ  G d de      Z!ejD                  dk\  rdejF                  d
e$e   fdZ%ndejF                  d
e$e   fdZ%dejL                  ejF                  z  dedz  d
dfdZ'y)    N   )_original_SSLContext_original_super_SSLContext#_truststore_SSLContext_dunder_class"_truststore_SSLContext_super_classWindows)_configure_context_verify_peercerts_implDarwin)Buffer_StrOrBytesPath_PasswordTypereturnc                  "   t        t        dt               	 ddlmc mc mc m}  t        | dt               	 ddl	m
} t        |dd      }|%t        |dt        t        j                               yy# t        $ r Y Gw xY w# t        $ r Y yw xY w)zqInjects the :class:`truststore.SSLContext` into the ``ssl``
    module by replacing :class:`ssl.SSLContext`.
    
SSLContextr   N)adapters_preloaded_ssl_context)setattrsslr   pip._vendor.urllib3.util.ssl__vendorurllib3utilssl_ImportErrorpip._vendor.requestsr   getattrPROTOCOL_TLS_CLIENT)urllib3_sslrequests_adapterspreloaded_contexts      Gc:\dev\xtrs\vdcb\.venv\Lib\site-packages\pip/_vendor/truststore/_api.pyinject_into_sslr#   "   s     Cz*;;\:6F#$57OQUV(!(3223 )  "  s"    A3 9B 3	A?>A?	BBc                      t        t        dt               	 ddlmc mc mc m}  t        | _        y# t        $ r Y yw xY w)z@Restores the :class:`ssl.SSLContext` class to its original stater   r   N)
r   r   r   r   r   r   r   r   r   r   )r   s    r"   extract_from_sslr%   B   s4    C34;;!5 s   2 	>>c                      e Zd ZdZedefd       ZdBdeddfdZ	 	 	 	 	 dCd	e	j                  d
e
de
de
dedz  dej                  dz  dej                  fdZ	 	 	 dDdej                   dej                   d
e
dedz  dej                  dz  dej"                  fdZ	 	 	 dEdeez  ej*                  e   z  ej*                  e   z  dz  deez  ej*                  e   z  ej*                  e   z  dz  dej.                  eddf   ddfdZ	 	 dFdededz  dedz  ddfdZej8                  j:                  fdej8                  ddfdZdej>                  e   ddfdZ d ej>                  e   ddfd!Z!d"eddfd#Z"dejF                  fd$Z$de%eef   fd%Z&de%eef   fd&Z'dGd'Z(ejR                  	 dHd(ejT                  d   de+ejF                     fd)       Z,ejR                  dHd(ejT                  d   de+e   fd*       Z,ejR                  dHd(e
dejF                  fd+       Z,dId(e
de+ejF                     e+e   z  fd,Z,ede
fd-       Z-e-j\                  d.e
ddfd/       Z-ede
fd0       Z/e/j\                  d.e
ddfd1       Z/edefd2       Z0e0j\                  d.eddfd3       Z0edejb                  fd4       Z2e2j\                  d.ejb                  ddfd5       Z2edejb                  fd6       Z3e3j\                  d.ejb                  ddfd7       Z3edejh                  fd8       Z5e5j\                  d.ejh                  ddfd9       Z5ede
fd:       Z6e6j\                  d.e
ddfd;       Z6edejn                  fd<       Z8edefd=       Z9edejt                  fd>       Z;e;j\                  d.ejt                  ddfd?       Z;edejx                  fd@       Z=e=j\                  d.ejx                  ddfdA       Z=y)Jr   z=SSLContext API that uses system certificates on all platformsr   c                     t         xs t        S N)r   r   selfs    r"   	__class__zSSLContext.__class__P   s    
 3@j@    Nprotocolc                     t        |      | _        t        j                         | _         G d dt
        j                        }|| j                  _        y )Nc                         e Zd Zd fdZ xZS )0SSLContext.__init__.<locals>.TruststoreSSLObjectc                 R    t         |          }t        | | j                         |S )Nserver_hostname)superdo_handshake_verify_peercertsr3   )r*   retr+   s     r"   r5   z=SSLContext.__init__.<locals>.TruststoreSSLObject.do_handshake`   s%    g*,!$8L8LM
r,   r   N)__name__
__module____qualname__r5   __classcell__)r+   s   @r"   TruststoreSSLObjectr0   [   s    
 r,   r=   )r   _ctx	threadingLock	_ctx_lockr   	SSLObjectsslobject_class)r*   r-   r=   s      r"   __init__zSSLContext.__init__W   s:    (2	")	#-- 	 %8		!r,   FTsockserver_sidedo_handshake_on_connectsuppress_ragged_eofsr3   sessionc           	      |   t        j                         5 }| j                  5  |j                  t	        | j
                               d d d        | j
                  j                  ||||||      }d d d        	 t        |       |S # 1 sw Y   BxY w# 1 sw Y   %xY w# t        $ r j                           w xY w)N)rF   r3   rG   rH   rI   r2   )

contextlib	ExitStackrA   enter_contextr	   r>   wrap_socketr6   	Exceptionclose)	r*   rE   rF   rG   rH   r3   rI   stackssl_socks	            r"   rN   zSSLContext.wrap_socketg   s     !!#u##$6tyy$AB   yy,,' /(?%9 - H	 $	hH !   $#  	NN	s.   B%B)B9B  B	BB B;incomingoutgoingc                     t        | j                        5  | j                  j                  |||||      }d d d        |S # 1 sw Y   S xY w)N)r3   rF   rI   )r	   r>   wrap_bio)r*   rS   rT   rF   r3   rI   ssl_objs          r"   rV   zSSLContext.wrap_bio   sQ      		*ii(( /' ) G +  + s   !AAcafilecapathcadatar   c                 >    | j                   j                  |||      S )N)rX   rY   rZ   )r>   load_verify_locations)r*   rX   rY   rZ   s       r"   r\   z SSLContext.load_verify_locations   s'     yy..& / 
 	
r,   certfilekeyfilepasswordc                 >    | j                   j                  |||      S )N)r]   r^   r_   )r>   load_cert_chain)r*   r]   r^   r_   s       r"   ra   zSSLContext.load_cert_chain   s'     yy((w ) 
 	
r,   purposec                 8    | j                   j                  |      S r(   )r>   load_default_certs)r*   rb   s     r"   rd   zSSLContext.load_default_certs   s     yy++G44r,   alpn_protocolsc                 8    | j                   j                  |      S r(   )r>   set_alpn_protocols)r*   re   s     r"   rg   zSSLContext.set_alpn_protocols   s    yy++N;;r,   npn_protocolsc                 8    | j                   j                  |      S r(   )r>   set_npn_protocols)r*   rh   s     r"   rj   zSSLContext.set_npn_protocols   s    yy**=99r,   _SSLContext__cipherlistc                 8    | j                   j                  |      S r(   )r>   set_ciphers)r*   rk   s     r"   rm   zSSLContext.set_ciphers   s    yy$$\22r,   c                 6    | j                   j                         S r(   )r>   get_ciphersr)   s    r"   ro   zSSLContext.get_ciphers   s    yy$$&&r,   c                 6    | j                   j                         S r(   )r>   session_statsr)   s    r"   rq   zSSLContext.session_stats   s    yy&&((r,   c                     t               r(   NotImplementedErrorr)   s    r"   cert_store_statszSSLContext.cert_store_stats       !##r,   c                 8    | j                   j                          y r(   )r>   set_default_verify_pathsr)   s    r"   rx   z#SSLContext.set_default_verify_paths   s    		**,r,   binary_formc                      y r(    r*   ry   s     r"   get_ca_certszSSLContext.get_ca_certs   s     r,   c                      y r(   r{   r|   s     r"   r}   zSSLContext.get_ca_certs   s    TWr,   c                      y r(   r{   r|   s     r"   r}   zSSLContext.get_ca_certs   s    CFr,   c                     t               r(   rs   r|   s     r"   r}   zSSLContext.get_ca_certs   rv   r,   c                 .    | j                   j                  S r(   r>   check_hostnamer)   s    r"   r   zSSLContext.check_hostname       yy'''r,   valuec                 &    || j                   _        y r(   r   r*   r   s     r"   r   zSSLContext.check_hostname   s    #(		 r,   c                 .    | j                   j                  S r(   r>   hostname_checks_common_namer)   s    r"   r   z&SSLContext.hostname_checks_common_name   s    yy444r,   c                 &    || j                   _        y r(   r   r   s     r"   r   z&SSLContext.hostname_checks_common_name   s    05		-r,   c                 .    | j                   j                  S r(   r>   keylog_filenamer)   s    r"   r   zSSLContext.keylog_filename       yy(((r,   c                 &    || j                   _        y r(   r   r   s     r"   r   zSSLContext.keylog_filename   s    $)		!r,   c                 .    | j                   j                  S r(   )r>   maximum_versionr)   s    r"   r   zSSLContext.maximum_version   r   r,   c                 X    t         j                  j                  | j                  |       y r(   )r   r   __set__r>   r   s     r"   r   zSSLContext.maximum_version       "22::IIu	
r,   c                 .    | j                   j                  S r(   )r>   minimum_versionr)   s    r"   r   zSSLContext.minimum_version   r   r,   c                 X    t         j                  j                  | j                  |       y r(   )r   r   r   r>   r   s     r"   r   zSSLContext.minimum_version   r   r,   c                 .    | j                   j                  S r(   )r>   optionsr)   s    r"   r   zSSLContext.options  s    yy   r,   c                 X    t         j                  j                  | j                  |       y r(   )r   r   r   r>   r   s     r"   r   zSSLContext.options  s    "**22IIu	
r,   c                 .    | j                   j                  S r(   r>   post_handshake_authr)   s    r"   r   zSSLContext.post_handshake_auth  s    yy,,,r,   c                 &    || j                   _        y r(   r   r   s     r"   r   zSSLContext.post_handshake_auth  s    (-		%r,   c                 .    | j                   j                  S r(   )r>   r-   r)   s    r"   r-   zSSLContext.protocol  s    yy!!!r,   c                 .    | j                   j                  S r(   )r>   security_levelr)   s    r"   r   zSSLContext.security_level  r   r,   c                 .    | j                   j                  S r(   )r>   verify_flagsr)   s    r"   r   zSSLContext.verify_flags  s    yy%%%r,   c                 X    t         j                  j                  | j                  |       y r(   )r   r   r   r>   r   s     r"   r   zSSLContext.verify_flags   s    "//77IIu	
r,   c                 .    | j                   j                  S r(   )r>   verify_moder)   s    r"   r   zSSLContext.verify_mode&  s    yy$$$r,   c                 X    t         j                  j                  | j                  |       y r(   )r   r   r   r>   r   s     r"   r   zSSLContext.verify_mode*  s    "..66IIu	
r,   r(   )FTTNN)FNN)NNN)NNr8   ).)F)>r9   r:   r;   __doc__propertytyper+   intrD   socketboolstrr   
SSLSession	SSLSocketrN   	MemoryBIOrB   rV   bytesosPathLiketypingUnionr\   r   r   ra   PurposeSERVER_AUTHrd   Iterablerg   rj   rm   Anyro   dictrq   ru   rx   overloadLiterallistr}   r   setterr   r   
TLSVersionr   r   Optionsr   r   
_SSLMethodr-   r   VerifyFlagsr   
VerifyModer   r{   r,   r"   r   r   M   s   GA4 A A8 8 8& "(,%)&*)-mm  "&	
 # t $& 
J "&*)--- -- 	
 t $& 
( NRMQ48	
ebkk#..U1CCdJ
 ebkk#..U1CCdJ
 S(D01	

 

 +/)-	
!
 !4'
  $&	

 

 &)[[%<%<5{{5	5
<1E <$ <:vs/C : :3 3 3'VZZ ')tCH~ )$$sCx. $- __36!>>%0	fjj	  __Wt(<WtE{W W__FFvzzF F$ $fjj9IDQVK9W $ ( ( ( )D )T ) ) 5T 5 5 !''6 6$ 6 (6 ) ) ) *S *T * * ) ) ) 
S^^ 
 
 

 ) ) ) 
S^^ 
 
 

 ! ! ! ^^
S[[ 
T 
 

 -T - - . .$ .  . "#.. " " ( ( ( &coo & & 
#// 
d 
 

 %S^^ % % 
 
D 
 
r,   r   )      sslobjc                     | j                         xs d}|D cg c]3  }t        |t              r|n|j                  t        j
                        5 c}S c c}w Nr{   )get_unverified_chain
isinstancer   public_bytes_sslENCODING_DERr   unverified_chaincerts      r"   _get_unverified_chain_bytesr   6  s\    !668>B )
( tU+D1B1B4CTCT1UU(
 	
 
s   8Ac                     | j                         xs d}|D cg c]!  }|j                  t        j                        # c}S c c}w r   )r   r   r   r   r   s      r"   r   r   ?  sA    !668>BAQRAQ!!$"3"34AQRRRs   &Asock_or_sslobjr3   c                     | }	 t        |d      s|j                  }t        |d      st        |      }t	        | j
                  ||       y# t        $ r Y /w xY w)z{
    Verifies the peer certificates from an SSLSocket or SSLObject
    against the certificates in the OS trust store.
    r   r2   N)hasattr_sslobjAttributeErrorr   r
   context)r   r3   r   
cert_bytess       r"   r6   r6   D  sd     +F&"89^^F &"89
 -V4J
O	  s   $A 	AAr8   )(rK   r   platformr   r   sysr?   r   r   _ssl_constantsr   r   r   r   system_windowsr	   r
   _macos_opensslTYPE_CHECKINGtyping_extensionsr   r   r   r   r   	TypeAlias__annotations__Callabler   r#   r%   r   version_inforB   r   r   r   r6   r{   r,   r"   <module>r      sX    	   
 
     8??	!DDX__("BBD	( %(%K"++c2B$BR[[QVEW$W!! W"%+C%K0P"Pv P@a
3 a
N w
CMM 
d5k 
SCMM Sd5k S
MMCMM1DG$J	r,   