o
    Xzj°  ã                
   @   sú   d Z ddlZddlZddlZddlZzddlZW n	 ey!   Y nw ddlZddlZe 	e
¡Zdd„ Zzeƒ ZW n eyU Z ze deeƒe¡ dZW Y dZ[ndZ[ww es^dZdZdS e d¡Ze d¡ZdZG dd	„ d	ejƒZd
d„ Zdd„ ZdS )zM
Helper module around the system's libssl library if available for IGE mode.
é    Nc                  C   sN  t j d¡} tjdkr>t ¡ \}}}| d¡^}}}t|ƒdks,t|ƒdkr>t|ƒdkr>t j d¡p=t j d¡p=t j d¡} | sDtd	ƒ‚z	t j	 
| ¡}W |S  tyV   Y nw zt jjj}W n tyq   tj d
¡dddg}Y nw |D ],}	tj |	¡r t |	¡D ]\}
}}| |v rŸtj tj |
| ¡¡} t j	 
| ¡    S q�qttd|  ƒ‚)NÚsslÚdarwinÚ.é
   é   z	libssl.46z	libssl.44z	libssl.42zno library called "ssl" foundz~/libz/usr/local/libz/libz/usr/libz1no absolute path for "%s" and cannot load by name)ÚctypesÚutilÚfind_libraryÚsysÚplatformÚmac_verÚsplitÚintÚOSErrorÚcdllÚLoadLibraryÚmacholibÚdyldÚDEFAULT_LIBRARY_FALLBACKÚAttributeErrorÚosÚpathÚ
expanduserÚisdirÚwalkÚrealpathÚjoin)ÚlibÚreleaseÚ_version_infoÚ_machineÚverÚmajorÚ_ÚlibsslÚpathsr   ÚrootÚfiles© r(   úQ/var/www/kodo/tsheker/venv/lib/python3.10/site-packages/telethon/crypto/libssl.pyÚ_find_ssl_lib   sH   
$
ÿ
ýýÿ	
üÿü€r*   z#Failed to load SSL library: %s (%s)é   r   c                   @   s0   e Zd ZdZdejded   fdejfgZdS )ÚAES_KEYz$Helper class representing an AES keyÚrd_keyé   r+   ÚroundsN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úc_uint32Ú	AES_MAXNRÚc_uintÚ_fields_r(   r(   r(   r)   r,   [   s
    þr,   c              	   C   ó´   t ƒ }t dt|ƒ ¡}tjt|ƒ |Ž }tjt|ƒ |Ž }t t| ƒ¡}tjt| ƒ | Ž }tjt| ƒ ƒ }t ||t |¡¡ t 	t |¡t |¡|t |¡t |¡t
¡ t|ƒS ©Né   )r,   r   Úc_intÚlenÚc_ubyteÚc_size_tÚ_libsslÚAES_set_decrypt_keyÚbyrefÚAES_ige_encryptÚAES_DECRYPTÚbytes)Úcipher_textÚkeyÚivÚaes_keyÚkey_lenÚin_lenÚin_ptrÚout_ptrr(   r(   r)   Údecrypt_igeb   ó"   ú	rM   c              	   C   r8   r9   )r,   r   r;   r<   r=   r>   r?   ÚAES_set_encrypt_keyrA   rB   ÚAES_ENCRYPTrD   )Ú
plain_textrF   rG   rH   rI   rJ   rK   rL   r(   r(   r)   Úencrypt_igex   rN   rR   )r3   r   Úctypes.utilr   r
   Úctypes.macholib.dyldÚImportErrorÚloggingr   Ú	getLoggerr0   Ú__log__r*   r?   r   ÚeÚinfoÚtyperM   rR   r;   rP   rC   r5   Ú	Structurer,   r(   r(   r(   r)   Ú<module>   s<    ÿ
8
€ü

