
    $Sh                         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dS )    )sha256)BytesIO)urandom)SecurityCheckMismatch)MessageLong   )aesauth_keymsg_keyoutgoingreturnc                 X   |rdnd}t          || ||dz            z                                             }t          | |dz   |dz            |z                                             }|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           ]/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/pyrogram/crypto/mtproto.pykdfr      s    1AgAF 3344;;==Hhq2va"f}-788??AAHrrlXad^+hr"uo=Gbqb\HQrTN*Xbe_<FF?    messagesalt
session_idauth_key_idc                 t   t          |          |z   |                                 z   }t          t          |          dz    dz  dz             }t	          |dd         |z   |z                                             }|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22G 8BK047'ABBIIKKMAbD!G(GT22OGV 3#5dWngv#V#VVVr   bc                    t          j        |                     d          |k    d           |                     d          }t          ||d          \  }}t	          t          j        |                                 ||                    }|                    d           t          j        |                    d          |k    d           	 t          j        |          }n# t          $ r}	|	j	        d         dk    rt          d          |                                                                fdt          dt                    d	          D             d
 D             d                    d D                       t          dt          |	j	        d                    d           d }	~	ww xY wt          j        |t!          |dd         |                                z                                             dd         k    d           |                    d           |                                }
|
|j        d          }t          j        dt          |          cxk    odk    nc d           t          j        t          |
          dz  dk    d           t          j        |j        dz  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 z            S )@    .0ilefts     r   
<listcomp>zunpack.<locals>.<listcomp>M   s%    @@@1Qq2vX@@@r   r2   c           	      d    g | ],fd t          dt                    d          D             -S )c                 *    g | ]}||d z            S )r   r3   r4   s     r   r8   z%unpack.<locals>.<listcomp>.<listcomp>N   s%    ???1aAg???r   r   r   )ranger)   r5   r7   s    @r   r8   zunpack.<locals>.<listcomp>N   s@    QQQD????aTA(>(>???QQQr   
c              3   T   K   | ]#}d                      d |D                       V  $dS ) c              3      K   | ]}|V  d S )Nr3   )r5   r   s     r   	<genexpr>z#unpack.<locals>.<genexpr>.<genexpr>O   s"      !2!2!!2!2!2!2!2!2r   N)joinr<   s     r   rA   zunpack.<locals>.<genexpr>O   s=      DDt!2!2T!2!2!222DDDDDDr   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hexr;   r)   rB   
ValueErrorr   getvaluer   seeklengthmsg_id)r/   r!   r   r"   r   r   r   r+   r   epayloadr,   r7   s               @r   unpackrU   5   s    q		[ 8:TUUUffRjjG(GU33OGV3%affhh@@AADIIaLLL 		!
 :<XYYY^,t$$ 
^ 
^ 
^6!9>>!"YZZZyy{{  @@@@aTB(?(?@@@QQDQQQyyDDtDDDDD\Cq	NN\\VZ\\]]]
^ 6(2g:.@AAHHJJ1R4PPR   	IIbMMMiikkGgnoo&Gc'll : : : :d : : : :<XYYYGq 0A 57NOOO  2a 79RSSSNs   C# #
F:-CF55F:N)hashlibr   ior   osr   pyrogram.errorsr   pyrogram.raw.corer   r    r
   bytesbooltupler   intr.   rU   r3   r   r   <module>r`      s?  &                   1 1 1 1 1 1 + + + + + + + +      
% 
% 
4 
E 
 
 
 
	W' 	W 	W% 	W5 	WW\ 	Waf 	W 	W 	W 	W/// / 	/
 / / / / / /r   