o
    -˜Žjü  ã                   @   sª   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 ddlmZ ded	ed
edefdd„Zde	dededededefdd„Zdedededede	f
dd„ZdS )é    )Úsha256)ÚBytesIO)Úurandom)ÚSecurityCheckMismatch)ÚMessageÚLongé   )ÚaesÚauth_keyÚmsg_keyÚoutgoingÚreturnc                 C   s˜   |rdnd}t || ||d …  ƒ ¡ }t | |d |d … | ƒ ¡ }|d d… |dd…  |dd…  }|d d… |dd…  |dd…  }||fS )Nr   é   é$   é(   éL   é   é    )r   Údigest)r
   r   r   ÚxÚsha256_aÚsha256_bÚaes_keyÚaes_iv© r   úT/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/crypto/mtproto.pyÚkdf   s    $$r   ÚmessageÚsaltÚ
session_idÚauth_key_idc                 C   s€   t |ƒ| |  ¡  }tt|ƒd  d d ƒ}t|dd… | | ƒ ¡ }|dd… }t||dƒ\}	}
|| t || |	|
¡ S )Né   é   éX   éx   r   r   T)	r   Úwriter   Úlenr   r   r   r	   Úige256_encrypt)r   r   r   r
   r    ÚdataÚpaddingÚmsg_key_larger   r   r   r   r   r   Úpack*   s   r+   Úbc              
      s´  t  |  d¡|kd¡ |  d¡}t||dƒ\}}tt |  ¡ ||¡ƒ}| d¡ t  | d¡|kd¡ zt |¡}W nL ty† }	 z@|	j	d dkrMt
dƒ‚| ¡  ¡ ‰ ‡ fdd	„tdtˆ ƒd
ƒD ƒ‰ dd	„ ˆ D ƒ‰ d dd„ ˆ D ƒ¡‰ tdt|	j	d ƒ› dˆ › �ƒ‚d }	~	ww t  |t|dd… | ¡  ƒ ¡ dd… kd¡ | d¡ | ¡ }
|
|jd … }t  dt|ƒ  ko¼dkn  d¡ t  t|
ƒd dkd¡ t  |jd dkd¡ |S )Nr   zb.read(8) == auth_key_idr"   Fzdata.read(8) == session_idr   z4Received empty data. Check your internet connection.c                    ó   g | ]
}ˆ ||d  … ‘qS )é@   r   ©Ú.0Úi©Úleftr   r   Ú
<listcomp>N   ó    zunpack.<locals>.<listcomp>r.   c                    s*   g | ]‰ ‡ fd d„t dtˆ ƒdƒD ƒ‘qS )c                    r-   )r   r   r/   r2   r   r   r4   O   r5   z%unpack.<locals>.<listcomp>.<listcomp>r   r   )Úranger&   )r0   r   r2   r   r4   O   s   * Ú
c                 s   s$   � | ]}d   dd„ |D ƒ¡V  qdS )ú c                 s   s   � | ]}|V  qd S )Nr   )r0   r   r   r   r   Ú	<genexpr>P   s   € z#unpack.<locals>.<genexpr>.<genexpr>N)Újoin)r0   r3   r   r   r   r9   P   s   €" zunpack.<locals>.<genexpr>z(The server sent an unknown constructor: é`   é€   r   zHmsg_key == sha256(auth_key[96:96 + 32] + data.getvalue()).digest()[8:24]r   r!   i   z12 <= len(padding) <= 1024é   zlen(payload) % 4 == 0é   zmessage.msg_id % 2 != 0)r   ÚcheckÚreadr   r   r	   Úige256_decryptr   ÚKeyErrorÚargsÚConnectionErrorÚhexr6   r&   r:   Ú
ValueErrorr   Úgetvaluer   ÚseekÚlengthÚmsg_id)r,   r   r
   r    r   r   r   r(   r   ÚeÚpayloadr)   r   r2   r   Úunpack6   s:   

€ö&þ
$rM   N)Úhashlibr   Úior   Úosr   Úpyrogram.errorsr   Úpyrogram.raw.corer   r   Ú r	   ÚbytesÚboolÚtupler   Úintr+   rM   r   r   r   r   Ú<module>   s&   "ÿþýüû