
    N[i                         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Zde	dededededefdZdedededede	f
dZy)    )sha256)BytesIO)urandom)SecurityCheckMismatch)MessageLong   )aesauth_keymsg_keyoutgoingreturnc                     |rdnd}t        || ||dz    z         j                         }t        | |dz   |dz    |z         j                         }|d d |dd z   |dd z   }|d d |dd z   |dd z   }||fS )Nr      $   (   L          )r   digest)r   r   r   xsha256_asha256_baes_keyaes_ivs           J/var/www/files/kim/lib/python3.12/site-packages/pyrogram/crypto/mtproto.pykdfr      s    1AgAF 334;;=Hhq2va"f-78??AHrlXa^+hr"o=Gbq\HQrN*Xb_<FF?    messagesalt
session_idauth_key_idc                 *   t        |      |z   | j                         z   }t        t        |      dz    dz  dz         }t	        |dd |z   |z         j                         }|dd }t        ||d      \  }	}
||z   t        j                  ||z   |	|
      z   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   s              r   packr.   )   s    :
"W]]_4DD	B'",r12G 8B047'ABIIKMAb!G(GT2OGV 3#5#5dWngv#VVVr   bc                 r   t        j                  | j                  d      |k(  d       | j                  d      }t        ||d      \  }}t	        t        j                  | j                         ||            }|j                  d       t        j                  |j                  d      |k(  d       	 t        j                  |      }t        j                  |t!        |dd |j#                         z         j%                         dd k(  d       |j'                  d       |j                         }||j(                  d  }t        j                  dt        |      cxk  xr dk  nc d       t        j                  t        |      dz  dk(  d       t        j                  |j*                  dz  dk7  d       |S # t        $ r}	|	j                  d   dk(  rt        d      |j                         j                         }
t        dt        |
      d      D cg c]
  }|
||dz     nc c}w }
}|
D 
cg c]2  }
t        dt        |
      d      D cg c]
  }|
||dz     nc c}w c}4 nc c}}
w c}}
}
d	j                  d
 |
D              }
t        dt        |	j                  d          d	|
       d }	~	ww xY w)Nr   zb.read(8) == auth_key_idr%   Fzdata.read(8) == session_idr   z4Received empty data. Check your internet connection.@   
c              3   L   K   | ]  }d j                  d |D                yw) c              3       K   | ]  }|  y w)N ).0r   s     r   	<genexpr>z#unpack.<locals>.<genexpr>.<genexpr>O   s     !2!!2s   N)join)r7   lefts     r   r8   zunpack.<locals>.<genexpr>O   s     Dt!2T!22Ds   "$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hexranger)   r9   
ValueErrorr   getvaluer   seeklengthmsg_id)r/   r!   r   r"   r   r   r   r+   r   er:   ipayloadr,   s                 r   unpackrO   5   sP    q	[ 8:TUffRjG(GU3OGV3%%affh@ADIIaL 		!
 :<XY^,,t$ 6(2g.@AHHJ1RPPR 	IIbMiikGgnno&Gc'l :d :<XYGq 0A 57NO  2a 79RSN;  
^66!9>!$XZZyy{ (-aTB(?@1Qq2v@@@LPQDaTA(>?1aA??QQyyDtDDCCq	NCSSUVZU[\]]
^s>   2F8 8	J6AJ1H$#J10I(II('A
J11J6N)hashlibr   ior   osr   pyrogram.errorsr   pyrogram.raw.corer   r    r
   bytesbooltupler   intr.   rO   r6   r   r   <module>rZ      s   &    1 + 
% 
% 
4 
E 
	W' 	W 	W% 	W5 	WW\ 	Waf 	W/// / 	/
 /r   