
    O[i,                         d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	Z	d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZ d d	lmZmZmZ d
dlmZ  ej2                  e      Z G d d      Zy)    N)sha1)BytesIO)urandom)raw)
Connection)aesrsaprime)SecurityCheckMismatch)TLObjectLongInt   )MsgIdc                   f    e Zd ZdZdddedefdZedede	fd	       Z
ed
efd       ZdefdZd Zy)Auth   clientzpyrogram.Clientdc_id	test_modec                 r    || _         || _        |j                  | _        |j                  | _        d | _        y N)r   r   ipv6proxy
connection)selfr   r   r   s       H/var/www/files/kim/lib/python3.12/site-packages/pyrogram/session/auth.py__init__zAuth.__init__(   s-    
"KK	\\
    datareturnc                     t        d      t        t                     z   t        t	        | j                                     z   | j                         z   S )N   )bytesr   r   r   lenwrite)r    s    r   packz	Auth.pack0   sF     !H57m#djjl#$% jjl	
r   bc                 N    | j                  d       t        j                  |       S )N   )seekr   read)r(   s    r   unpackzAuth.unpack9   s    	r
}}Qr   c                    K   | j                  |      }| j                  j                  |       d {    t        | j                  j	                          d {         }| j                  |      S 7 @7 wr   )r'   r   sendr   recvr-   )r   r    responses      r   invokezAuth.invoke>   s]     yyoo""4(((!5!5!778{{8$$ 	)7s!   0A7A3&A7A5A75A7c                   K   | j                   }	 t        | j                  | j                  | j                  | j
                        | _        	 t        j                  d| j                         | j                  j                          d{    t        j                  t        d      dd      }t        j                  d|       | j                  t        j                   j#                  |             d{   }t        j                  d	|j$                         t        j                  d
|j&                         |j&                  D ]D  }|t(        j*                  v rt        j                  d|       |} n#t        j                  d|       F t-        d      t        j                  |j.                  d      }t        j                  d|       t1        j0                         }t3        j4                  |      }t7        |||z  f      \  }	}
t        j                  dt9        t1        j0                         |z
  d      |	|
       |j$                  }t        j                  t        d      dd      }t        j:                  j=                  |j.                  |	j?                  dd      |
j?                  dd      |||      jA                         }tC        |      jE                         }t        tG        |      tG        |      z    dz        }||z   |z   }t)        jH                  ||      }t        j                  d       t        j                  d       | j                  t        j                   jK                  |||	j?                  dd      |
j?                  dd      ||             d{   }|jL                  }|j?                  ddd      }|j?                  ddd      }tC        ||z         jE                         tC        ||z         jE                         dd z   }tC        ||z         jE                         dd tC        ||z         jE                         z   |dd z   }t        j                  |dd      }tO        jP                  |||      }|dd }tS        jT                  tW        |            }t        j                  d       t        j                  |jX                  d      }|jZ                  t1        j0                         z
  }t        j                  dt9        |d             |j\                  }t        j                  t        d      d      }t_        |||      j?                  dd      }d}t        j:                  ja                  ||||      jA                         }tC        |      jE                         }t        tG        |      tG        |      z    dz        }||z   |z   }tO        jb                  |||      }t        j                  d        | j                  t        j                   je                  |||!             d{   }t        j                  |jf                  d      }t_        |||      j?                  dd      } |j?                  ddd      }ti        jj                  |t2        jl                  k(  d"       t        j                  d#       t        j                  |d      }ti        jj                  d$|cxk  xr |d$z
  k  nc d%       ti        jj                  d$|cxk  xr |d$z
  k  nc d&       ti        jj                  d$|cxk  xr |d$z
  k  nc d'       ti        jj                  d(d)z  |cxk  xr |d(d)z  z
  k  nc d*       ti        jj                  d(d)z  |cxk  xr |d(d)z  z
  k  nc d+       t        j                  d,       |jA                         }ti        jj                  |dd tC        |      jE                         k(  d-       t        j                  d.       ti        jj                  ||jn                  k(  d/       t        j                  |dd      }ti        jj                  ||jn                  k(  d0       ti        jj                  ||j$                  k(  d1       ti        jj                  ||jn                  k(  d2       ti        jj                  ||j$                  k(  d3       |j?                  ddd      }t        j                  d4       tO        jp                  |dd5 |dd5       }!t        j                  d6t        j                  |!d             t        j                  d7|jr                  jt                         | | j                  jw                          d{    S 7 	'7 7 7 q7 # t,        $ r}"t        j                  d8ty        |"      jt                  |"       |r|d$z  }n|"t{        j|                  d$       d{  7   Y d}"~"| j                  jw                          d{  7   
3d}"~"ww xY w# | j                  jw                          d{  7   w xY ww)9zw
        https://core.telegram.org/mtproto/auth_key
        https://core.telegram.org/mtproto/samples-auth_key
        Tz%Start creating a new auth key on DC%sN   little)signedzSend req_pq: %s)noncezGot ResPq: %sz"Server public key fingerprints: %szUsing fingerprint: %szFingerprint unknown: %szPublic key not foundbigzStart PQ factorization: %sz"Done PQ factorization (%ss): %s %s          )pqpqr7   server_nonce	new_nonce   zDone encrypt data with RSAzSend req_DH_params)r7   r?   r=   r>   public_key_fingerprintencrypted_data   r*   zDone decrypting answerzDelta time: %s   r   )r7   r?   retry_idg_bzSend set_client_DH_params)r7   r?   rC   z"dh_prime == prime.CURRENT_DH_PRIMEzDH parameters check: OKr   z1 < g < dh_prime - 1z1 < g_a < dh_prime - 1z1 < g_b < dh_prime - 1   i  z42 ** (2048 - 64) < g_a < dh_prime - 2 ** (2048 - 64)z42 ** (2048 - 64) < g_b < dh_prime - 2 ** (2048 - 64)zg_a and g_b validation: OKz.answer_with_hash[:20] == sha1(answer).digest()zSHA1 hash values check: OKznonce == res_pq.nonceznonce == server_dh_params.noncez-server_nonce == server_dh_params.server_noncez*nonce == set_client_dh_params_answer.noncez8server_nonce == set_client_dh_params_answer.server_noncezNonce fields check: OKr#   zServer salt: %szDone auth key exchange: %szRetrying due to %s: %s)?MAX_RETRIESr   r   r   r   r   r   loginfoconnectint
from_bytesr   debugr2   r   	functions
ReqPqMultir?   server_public_key_fingerprintsr	   server_public_keys	Exceptionr<   timer
   	decomposesortedroundtypesPQInnerDatato_bytesr&   r   digestr%   encryptReqDHParamsencrypted_answerr   ige256_decryptr   r,   r   dh_primeserver_timegpowClientDHInnerDataige256_encryptSetClientDHParamsg_ar   checkCURRENT_DH_PRIMEr7   xor	__class____name__closetypeasynciosleep)#r   retries_leftr7   res_pqirB   r<   startrc   r=   r>   r?   r@   r    shapaddingdata_with_hashrC   server_dh_paramsr_   tmp_aes_key
tmp_aes_ivanswer_with_hashanswerserver_dh_inner_datara   
delta_timer(   rG   rF   set_client_dh_params_answerrh   auth_keyserver_saltes#                                      r   createzAuth.createE   s    
 '' (T^^TYYPTPZPZ[DOH.@$**Moo--/// wr{HTJ		+U3#{{3==+C+C%+C+PQQ		/6+>+>?		>@e@ef>> <AC222		"91=12.		";Q?< $$:;; ^^FIIu5		6;		OOB'q"'l+1		>diikTYFY[\@]_`bcd  &22NN72;NN	yy,,yyjjE*jjE*!-' -  %'  4j'')!SYS%9":S"@A!$tg!5!$^=S!T		67 		./)-MM--#%1**Q.**Q./E'5 . 	* 	$  $4#D#D +44R$4O%..r8D.I	 \1299;<)34;;=crBC  	1299;BC@9y0188:;=Fr]K 
  #~~lHT~R#&#5#56FU_#` )"#.'/}}WV_'E$		23>>*>*G*GO1==		K
		*E*a,@A )**NN73<7!Q)223>yy22!-%	 3 
 %'  4j'')!SYS%9":R"?@!$tg!5!$!3!3NKQ[!\		5648KKMM33#%1'5 4 5 /+ nn%9%=%=uEsAx099#uE+44R$4O &++H8N8N,NPtu		34 nnS%0%++A,@HqL,@BXY%++A,Bhl,BD\]%++A,Bhl,BD\]%++)$sHXi8H-HHJ &++)$sHXi8H-HHJ 		67 .335%++$Sb)T&\-@-@-BBD 		67 &++EV\\,ACZ["~~lHT~R%++E5E5K5K,KMno%++ $4$A$AAC
 &++8>>>@ &++ $?$L$LLN  ,44R$4O		23 "ggim\"15EF		+S^^K-RS57R7\7\7e7ef  oo++---K 0
 RX	$x/p .  	1473C3CQG A%LGmmA&&& oo++---	 oo++---s   A	i2=f> 	f0
A-f> 7f38J1f> )f6*Jf> f9	Mf> i
 i2*f<+i20f> 3f> 6f> 9f> <i2>	iAihii
 i2:h=;i2ii
 
i/(i+)i//i2N)rm   
__module____qualname__rI   rM   boolr   staticmethodr   r$   r'   r   r-   r2   r    r   r   r   r   %   sq    K0    
8 
 
 
  '    % %T.r   r   )rp   loggingrU   hashlibr   ior   osr   pyrogramr   pyrogram.connectionr   pyrogram.cryptor   r	   r
   pyrogram.errorsr   pyrogram.raw.corer   r   r   	internalsr   	getLoggerrm   rJ   r   r   r   r   <module>r      sR   &         * + + 1 1 1 g!t. t.r   