U
    n–h°  ã                
   @   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k
rD   Y nX ddlZddlZe 	e
¡Zdd„ Zz
eƒ ZW n8 ek
rª Z ze deeƒe¡ dZW 5 dZ[X Y nX esºdZdZn: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   s\  t j d¡} tjdkr|t ¡ \}}}| d¡^}}}t|ƒdksXt|ƒdkr|t|ƒdkr|t j d¡pzt j d¡pzt j d¡} | sˆtd	ƒ‚zt j	 
| ¡}W n tk
r¬   Y nX |S zt jjj}W n( tk
rè   tj d
¡dddg}Y nX |D ]\}	tj |	¡rît |	¡D ]@\}
}}| |krtj tj |
| ¡¡} t j	 
| ¡    S qqîtd|  ƒ‚d S )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ÚutilZfind_libraryÚsysÚplatformÚmac_verÚsplitÚintÚOSErrorZcdllZLoadLibraryZmacholibZdyldZDEFAULT_LIBRARY_FALLBACKÚAttributeErrorÚosÚpathÚ
expanduserÚisdirÚwalkÚrealpathÚjoin)ÚlibÚreleaseZ_version_infoZ_machineÚverÚmajorÚ_ÚlibsslÚpathsr   ÚrootÚfiles© r    ú`/var/www/html/peyman_registration/venvv2/lib/python3.8/site-packages/telethonv2/crypto/libssl.pyÚ_find_ssl_lib   s@    
$
ÿ
ý
ü

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 keyZrd_keyé   r#   ÚroundsN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Zc_uint32Ú	AES_MAXNRZc_uintZ_fields_r    r    r    r!   r$   [   s   þr$   c              	   C   s´   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Ú_libsslZ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   s"    ú	r?   c              	   C   s´   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 r,   )r$   r   r.   r/   r0   r1   r2   ZAES_set_encrypt_keyr3   r4   ÚAES_ENCRYPTr6   )Ú
plain_textr8   r9   r:   r;   r<   r=   r>   r    r    r!   Úencrypt_igex   s"    ú	rB   )r*   r   Zctypes.utilr
   r	   Zctypes.macholib.dyldÚImportErrorÚloggingr   Ú	getLoggerr'   Ú__log__r"   r2   r   ÚeÚinfoÚtyper?   rB   r.   r@   r5   r+   Z	Structurer$   r    r    r    r!   Ú<module>   s4   
8


