
    h                         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)LongMessage   )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           X/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/hydrogram/crypto/mtproto.pykdfr      s    1AgQV 4455<<>>Hhq2vB/'9::AACCH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L1D87BCCJJLLM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>L   s&    BBBQQRZ BBBr   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>M   s%    AAAQa!a%iAAAr   r   r   )ranger)   r5   r7   s    @r   r8   zunpack.<locals>.<listcomp>M   s@    SSSdAAAA%3t99a*@*@AAASSSr   
c              3   @   K   | ]}d                      |          V  dS ) N)joinr<   s     r   	<genexpr>zunpack.<locals>.<genexpr>N   s,      99D$999999r   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)   r@   
ValueErrorr   getvaluer   seeklengthmsg_id)r/   r!   r   r"   r   r   r   r+   r   epayloadr,   r7   s               @r   unpackrT   9   s   q		[ 8:TUUUffRjjG(GU33OGV3%affhh@@AADIIaLLL 		!
 :<XYYY,t$$   6!9>>!"XYY_``yy{{  BBBB%3t99b*A*ABBBSSdSSSyy99D99999Os16!9~~OOOO
 
	  6(2<04==??BCCJJLLQrTRRR   	II
   iikkGgn&&'Gc'll : : : :d : : : :<XYYYGq 0A 57NOOO  2a 79RSSSNs   C# #
F<-C
F77F<N)hashlibr   ior   osr   hydrogram.errorsr   hydrogram.raw.corer   r    r
   bytesbooltupler   intr.   rT   r3   r   r   <module>r_      s9  (                   2 2 2 2 2 2 , , , , , , , ,      
% 
% 
4 
E 
 
 
 
WWW-2W>CWRWW
W W W W.g .5 .E . .RY . . . . . .r   