o
    6‘ði•,  ã                   @   s�  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 ¡ dkr@ddlmZmZ ne ¡ dkrOddlmZmZ nddlmZmZ ejr`d dlmZ eeB eje B eje B Zejed< eeB ejg eeB f B Zejed	< ddd„Zddd„Z G dd„ deƒZ!ej"dkr©dej#d
e$e fdd„Z%ndej#d
e$e fdd„Z%dej&ej#B dedB d
dfdd„Z'dS )é    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                  C   s¢   t tdtƒ zddlm  m  m  m}  t | dtƒ W n	 ty&   Y nw zddl	m
} t|ddƒ}|durDt |dttjƒƒ W dS W dS  tyP   Y dS 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_context© r    úZ/root/parts/websockify/install/lib/python3.10/site-packages/pip/_vendor/truststore/_api.pyÚinject_into_ssl"   s(   ÿ
ýÿÿr"   c                  C   sL   t tdtƒ zddlm  m  m  m}  t| _W dS  t	y%   Y dS 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   r    r    r!   Úextract_from_sslB   s   ÿr#   c                   @   s   e Zd ZdZedefdd„ƒZd]deddfdd„Z			
	
		d^de	j	de
de
de
dedB dejdB dejfdd„Z				d_dejdejde
dedB dejdB dejfdd„Z			d`deeB eje B eje B dB deeB eje B eje B dB dejeddf ddfdd„Z		dadededB dedB ddfd d!„Zejjfd"ejddfd#d$„Zd%eje ddfd&d'„Z d(eje ddfd)d*„Z!d+eddfd,d-„Z"dej#fd.d/„Z$de%eef fd0d1„Z&de%eef fd2d3„Z'dbd4d5„Z(ej)	6dcd7ej*d	 de+ej# fd8d9„ƒZ,ej)dcd7ej*d
 de+e fd:d9„ƒZ,ej)dcd7e
dej#fd;d9„ƒZ,ddd7e
de+ej# e+e B fd<d9„Z,ede
fd=d>„ƒZ-e-j.d?e
ddfd@d>„ƒZ-ede
fdAdB„ƒZ/e/j.d?e
ddfdCdB„ƒZ/edefdDdE„ƒZ0e0j.d?eddfdFdE„ƒZ0edej1fdGdH„ƒZ2e2j.d?ej1ddfdIdH„ƒZ2edej1fdJdK„ƒZ3e3j.d?ej1ddfdLdK„ƒZ3edej4fdMdN„ƒZ5e5j.d?ej4ddfdOdN„ƒZ5ede
fdPdQ„ƒZ6e6j.d?e
ddfdRdQ„ƒZ6edej7fdSdT„ƒZ8edefdUdV„ƒZ9edej:fdWdX„ƒZ;e;j.d?ej:ddfdYdX„ƒZ;edej<fdZd[„ƒZ=e=j.d?ej<ddfd\d[„ƒZ=dS )er   z=SSLContext API that uses system certificates on all platformsr   c                 C   s   t ptS ©N)r   r   ©Úselfr    r    r!   Ú	__class__P   s   zSSLContext.__class__NÚprotocolc                 C   s2   t |ƒ| _t ¡ | _G dd„ dtjƒ}|| j_d S )Nc                       s   e Zd Zd‡ fdd„Z‡  ZS )z0SSLContext.__init__.<locals>.TruststoreSSLObjectr   Nc                    s   t ƒ  ¡ }t| | jd� |S )N©Úserver_hostname)ÚsuperÚdo_handshakeÚ_verify_peercertsr*   )r&   Úret©r'   r    r!   r,   `   s   
z=SSLContext.__init__.<locals>.TruststoreSSLObject.do_handshake©r   N)Ú__name__Ú
__module__Ú__qualname__r,   Ú__classcell__r    r    r/   r!   ÚTruststoreSSLObject[   s    r5   )r   Ú_ctxÚ	threadingÚLockÚ	_ctx_lockr   Ú	SSLObjectÚsslobject_class)r&   r(   r5   r    r    r!   Ú__init__W   s   


zSSLContext.__init__FTÚsockÚserver_sideÚdo_handshake_on_connectÚsuppress_ragged_eofsr*   Úsessionc           	   	   C   s¢   t  ¡ �/}| j� | t| jƒ¡ W d   ƒ n1 sw   Y  | jj||||||d�}W d   ƒ n1 s6w   Y  z	t||d� W |S  tyP   | 	¡  ‚ w )N)r>   r*   r?   r@   rA   r)   )
Ú
contextlibÚ	ExitStackr9   Úenter_contextr   r6   Úwrap_socketr-   Ú	ExceptionÚclose)	r&   r=   r>   r?   r@   r*   rA   ÚstackÚssl_sockr    r    r!   rE   g   s(   
ÿúüýþzSSLContext.wrap_socketÚincomingÚoutgoingc                 C   sF   t | jƒ� | jj|||||d�}W d   ƒ |S 1 sw   Y  |S )N)r*   r>   rA   )r   r6   Úwrap_bio)r&   rJ   rK   r>   r*   rA   Ússl_objr    r    r!   rL   ˆ   s   û
ÿøzSSLContext.wrap_bioÚcafileÚcapathÚcadatar   c                 C   ó   | j j|||d�S )N)rN   rO   rP   )r6   Úload_verify_locations)r&   rN   rO   rP   r    r    r!   rR   š   ó   ÿz SSLContext.load_verify_locationsÚcertfileÚkeyfileÚpasswordc                 C   rQ   )N)rT   rU   rV   )r6   Úload_cert_chain)r&   rT   rU   rV   r    r    r!   rW   ¤   rS   zSSLContext.load_cert_chainÚpurposec                 C   ó   | j  |¡S r$   )r6   Úload_default_certs)r&   rX   r    r    r!   rZ   ®   s   zSSLContext.load_default_certsÚalpn_protocolsc                 C   rY   r$   )r6   Úset_alpn_protocols)r&   r[   r    r    r!   r\   ³   ó   zSSLContext.set_alpn_protocolsÚnpn_protocolsc                 C   rY   r$   )r6   Úset_npn_protocols)r&   r^   r    r    r!   r_   ¶   r]   zSSLContext.set_npn_protocolsÚ_SSLContext__cipherlistc                 C   rY   r$   )r6   Úset_ciphers)r&   r`   r    r    r!   ra   ¹   r]   zSSLContext.set_ciphersc                 C   ó
   | j  ¡ S r$   )r6   Úget_ciphersr%   r    r    r!   rc   ¼   ó   
zSSLContext.get_ciphersc                 C   rb   r$   )r6   Úsession_statsr%   r    r    r!   re   ¿   rd   zSSLContext.session_statsc                 C   ó   t ƒ ‚r$   ©ÚNotImplementedErrorr%   r    r    r!   Úcert_store_statsÂ   ó   zSSLContext.cert_store_statsc                 C   s   | j  ¡  d S r$   )r6   Úset_default_verify_pathsr%   r    r    r!   rk   Å   s   z#SSLContext.set_default_verify_paths.Úbinary_formc                 C   ó   d S r$   r    ©r&   rl   r    r    r!   Úget_ca_certsÈ   s   zSSLContext.get_ca_certsc                 C   rm   r$   r    rn   r    r    r!   ro   Í   ó   c                 C   rm   r$   r    rn   r    r    r!   ro   Ð   rp   c                 C   rf   r$   rg   rn   r    r    r!   ro   Ó   rj   c                 C   ó   | j jS r$   ©r6   Úcheck_hostnamer%   r    r    r!   rs   Ö   ó   zSSLContext.check_hostnameÚvaluec                 C   ó   || j _d S r$   rr   ©r&   ru   r    r    r!   rs   Ú   ó   c                 C   rq   r$   ©r6   Úhostname_checks_common_namer%   r    r    r!   rz   Þ   rt   z&SSLContext.hostname_checks_common_namec                 C   rv   r$   ry   rw   r    r    r!   rz   â   rx   c                 C   rq   r$   ©r6   Úkeylog_filenamer%   r    r    r!   r|   æ   rt   zSSLContext.keylog_filenamec                 C   rv   r$   r{   rw   r    r    r!   r|   ê   rx   c                 C   rq   r$   )r6   Úmaximum_versionr%   r    r    r!   r}   î   rt   zSSLContext.maximum_versionc                 C   ó   t j | j|¡ d S r$   )r   r}   Ú__set__r6   rw   r    r    r!   r}   ò   ó   ÿc                 C   rq   r$   )r6   Úminimum_versionr%   r    r    r!   r�   ø   rt   zSSLContext.minimum_versionc                 C   r~   r$   )r   r�   r   r6   rw   r    r    r!   r�   ü   r€   c                 C   rq   r$   )r6   Úoptionsr%   r    r    r!   r‚     rt   zSSLContext.optionsc                 C   r~   r$   )r   r‚   r   r6   rw   r    r    r!   r‚     r€   c                 C   rq   r$   ©r6   Úpost_handshake_authr%   r    r    r!   r„     rt   zSSLContext.post_handshake_authc                 C   rv   r$   rƒ   rw   r    r    r!   r„     rx   c                 C   rq   r$   )r6   r(   r%   r    r    r!   r(     rt   zSSLContext.protocolc                 C   rq   r$   )r6   Úsecurity_levelr%   r    r    r!   r…     rt   zSSLContext.security_levelc                 C   rq   r$   )r6   Úverify_flagsr%   r    r    r!   r†     rt   zSSLContext.verify_flagsc                 C   r~   r$   )r   r†   r   r6   rw   r    r    r!   r†      r€   c                 C   rq   r$   )r6   Úverify_moder%   r    r    r!   r‡   &  rt   zSSLContext.verify_modec                 C   r~   r$   )r   r‡   r   r6   rw   r    r    r!   r‡   *  r€   r$   )FTTNN)FNN)NNN)NNr0   ).)F)>r1   r2   r3   Ú__doc__ÚpropertyÚtyper'   Úintr<   ÚsocketÚboolÚstrr   Ú
SSLSessionÚ	SSLSocketrE   Ú	MemoryBIOr:   rL   ÚbytesÚosÚPathLikeÚtypingÚUnionrR   r   r   rW   ÚPurposeÚSERVER_AUTHrZ   ÚIterabler\   r_   ra   ÚAnyrc   Údictre   ri   rk   ÚoverloadÚLiteralÚlistro   rs   Úsetterrz   r|   Ú
TLSVersionr}   r�   ÚOptionsr‚   r„   Ú
_SSLMethodr(   r…   ÚVerifyFlagsr†   Ú
VerifyModer‡   r    r    r    r!   r   M   s   ùþýüûúù
ø%úþýüûú
ùüþýü
ûüþýü
ûÿÿ
þ
ÿÿþ "r   )é   é   Ússlobjc                 C   ó   |   ¡ pd}dd„ |D ƒS )Nr    c                 S   s&   g | ]}t |tƒr|n| tj¡‘qS r    )Ú
isinstancer’   Úpublic_bytesÚ_sslÚENCODING_DER©Ú.0Úcertr    r    r!   Ú
<listcomp>8  s    ÿÿú/_get_unverified_chain_bytes.<locals>.<listcomp>©Úget_unverified_chain©r§   Úunverified_chainr    r    r!   Ú_get_unverified_chain_bytes6  s   þr¶   c                 C   r¨   )Nr    c                 S   s   g | ]}|  tj¡‘qS r    )rª   r«   r¬   r­   r    r    r!   r°   A  s    r±   r²   r´   r    r    r!   r¶   ?  s   Úsock_or_sslobjr*   c                 C   sR   | }zt |dƒs|j}t |dƒrW n	 ty   Y nw t|ƒ}t| j||d� dS )z{
    Verifies the peer certificates from an SSLSocket or SSLObject
    against the certificates in the OS trust store.
    r³   r)   N)ÚhasattrÚ_sslobjÚAttributeErrorr¶   r	   Úcontext)r·   r*   r§   Ú
cert_bytesr    r    r!   r-   D  s   

ÿ€ÿ
ÿr-   r0   )(rB   r“   ÚplatformrŒ   r   Úsysr7   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_infor:   rž   r¶   r�   r-   r    r    r    r!   Ú<module>   sB   
 &$

  
h	
ÿÿþ