
    i0                         S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKrS SKJr  S SKJr  S SKJrJrJr  S S	KJr  S S
KJrJrJr  \R2                  " \5      r " S S5      rg)    N)sha1)BytesIO)urandom)Optional)raw)
Connection)aesrsaprime)SecurityCheckMismatch)TLObjectLongIntc            
           \ rS rSrSrSSS\S\S\S\4
S	 jr\	S
\
S\S\4S j5       r\	S\4S j5       rS
\
4S jrS rSrg)Auth%      clientzpyrogram.Clientdc_idserver_addressport	test_modec                     Xl         X l        X0l        X@l        XPl        UR
                  U l        UR                  U l        UR                  U l        UR                  U l        UR                  U l	        S U l
        g )N)r   r   r   r   r   ipv6proxyconnection_factoryprotocol_factoryloop
connection)selfr   r   r   r   r   s         B/app/mltbenv/lib/python3.13/site-packages/pyrogram/session/auth.py__init__Auth.__init__(   sb     
,	"KK	\\
"(";"; & 7 7KK	04    dataserver_timereturnc                     [        S5      [        [        US-  5      S-  5      -   [        [	        U R                  5       5      5      -   U R                  5       -   $ )N   l        )bytesr   intr   lenwrite)r%   r&   s     r!   pack	Auth.pack=   sT     !H3{e,-567#djjl#$% jjl	
r$   bc                 P    U R                  S5        [        R                  " U 5      $ )N   )seekr   read)r1   s    r!   unpackAuth.unpackF   s    	r
}}Qr$   c                   #    U R                  XR                  R                  S9nU R                  R	                  U5      I S h  vN   [        U R                  R                  5       I S h  vN 5      nU R                  U5      $  N@ N7f)N)r&   )r/   r   r&   r   sendr   recvr6   )r    r%   responses      r!   invokeAuth.invokeK   sh     yy;;+B+ByCoo""4(((!5!5!778{{8$$ 	)7s$   AB	B&B	+B,B	B	c                   #    U R                   n U R                  U R                  U R                  U R                  U R
                  U R                  SU R                  U R                  S9U l	         [        R                  SU R                  5        U R                  R                  5       I Sh  vN   [        R                  [        S5      SSS9n[        R!                  S	U5        U R#                  [$        R&                  R)                  US
95      I Sh  vN n[        R!                  SUR*                  5        [        R!                  SUR,                  5        UR,                   HG  nU[.        R0                  ;   a  [        R!                  SU5        Un  O%[        R!                  SU5        MI     [3        S5      e[        R                  UR4                  S5      n[        R!                  SU5        [6        R6                  " 5       n[8        R:                  " U5      n[=        XU-  45      u  p[        R!                  S[?        [6        R6                  " 5       U-
  S5      X5        UR*                  n[        R                  [        S5      SSS9n[$        R@                  RC                  UR4                  U	RE                  SS5      U
RE                  SS5      UUUS9RG                  5       n[I        U5      RK                  5       n[        [M        U5      [M        U5      -   * S-  5      nX-   U-   n[.        RN                  " UU5      n[        R!                  S5        [        R!                  S5        U R#                  [$        R&                  RQ                  UUU	RE                  SS5      U
RE                  SS5      UUS95      I Sh  vN nURR                  nURE                  SSSS9nURE                  SSSS9n[I        X-   5      RK                  5       [I        X-   5      RK                  5       SS -   n[I        X-   5      RK                  5       SS [I        X-   5      RK                  5       -   USS -   n[        R                  USSS9n[T        RV                  " UUU5      nUSS n[X        RZ                  " []        U5      5      n[        R!                  S5        [        R                  UR^                  S5      nUR`                  [6        R6                  " 5       -
  n[        R!                  S[?        US5      5        URb                  n[        R                  [        S5      S5      n[e        UUU5      RE                  SS5      nS n[$        R@                  Rg                  UUUUS!9RG                  5       n[I        U5      RK                  5       n[        [M        U5      [M        U5      -   * S-  5      nX-   U-   n[T        Rh                  " UUU5      n[        R!                  S"5        U R#                  [$        R&                  Rk                  UUUS#95      I Sh  vN n[        R                  URl                  S5      n[e        UUU5      RE                  SS5      n URE                  SSSS9n[n        Rp                  " U[8        Rr                  :H  S$5        [        R!                  S%5        [        R                  US5      n[n        Rp                  " S&Us=:  =(       a    US&-
  :  Os  S'5        [n        Rp                  " S&Us=:  =(       a    US&-
  :  Os  S(5        [n        Rp                  " S&Us=:  =(       a    US&-
  :  Os  S)5        [n        Rp                  " S*S+-  Us=:  =(       a    US*S+-  -
  :  Os  S,5        [n        Rp                  " S*S+-  Us=:  =(       a    US*S+-  -
  :  Os  S-5        [        R!                  S.5        URG                  5       n[n        Rp                  " USS [I        U5      RK                  5       :H  S/5        [        R!                  S05        [n        Rp                  " X#Rt                  :H  S15        [        R                  USSS9n[n        Rp                  " UURt                  :H  S25        [n        Rp                  " UUR*                  :H  S35        [n        Rp                  " UURt                  :H  S45        [n        Rp                  " UUR*                  :H  S55        URE                  SSSS9n[        R!                  S65        [T        Rv                  " USS7 USS7 5      n![        R!                  S8[        R                  U!S5      5        [        R                  S9URx                  Rz                  5        U U R                  R}                  5       I Sh  vN   $  G	N( GN GN GN N! [~         a  n"[        R                  S:5        U"eSn"A"f[2         a  n"[        R                  S;[        U"5      Rz                  U"5        U(       a  US&-  nOU"e[        R                  " S&5      I Sh  vN     Sn"A"U R                  R}                  5       I Sh  vN    G
M  Sn"A"ff = f! U R                  R}                  5       I Sh  vN    f = f7f)<z_
https://core.telegram.org/mtproto/auth_key
https://core.telegram.org/mtproto/samples-auth_key
TF)r   r   r   r   r   mediar   r   z%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qrC   server_nonce	new_nonce   zDone encrypt data with RSAzSend req_DH_params)rC   rK   rI   rJ   public_key_fingerprintencrypted_data   r3   zDone decrypting answerzDelta time: %s   r   )rC   rK   retry_idg_bzSend set_client_DH_params)rC   rK   rO   z"dh_prime == prime.CURRENT_DH_PRIMEzDH parameters check: OK   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(Unable to connect due to network issues.zRetrying due to %s: %s)CMAX_RETRIESr   r   r   r   r   r   r   r   r   loginfoconnectr,   
from_bytesr   debugr<   r   	functions
ReqPqMultirK   server_public_key_fingerprintsr
   server_public_keys	ExceptionrH   timer   	decomposesortedroundtypesPQInnerDatato_bytesr.   r   digestr-   encryptReqDHParamsencrypted_answerr	   ige256_decryptr   r5   r   dh_primer&   gpowClientDHInnerDataige256_encryptSetClientDHParamsg_ar   checkCURRENT_DH_PRIMErC   xor	__class____name__closeConnectionErrortypeasynciosleep)#r    retries_leftrC   res_pqirN   rH   startrn   rI   rJ   rK   rL   r%   shapaddingdata_with_hashrO   server_dh_paramsrk   tmp_aes_key
tmp_aes_ivanswer_with_hashanswerserver_dh_inner_datarm   
delta_timer1   rS   rR   set_client_dh_params_answerrs   auth_keyserver_saltes#                                      r!   createAuth.createR   s	    
 '' "55jj#22YY..jj!%!6!6YY 6 	DOK.@$**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+		>diikTYFY[\@]_`d  &22NN72;NN	yy,,yyjjE*jjE*!-' -  %'  4j'')!SYS%9":S"@A!$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@9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"?@!$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,B,Bhl,BD\]%++A,B,Bhl,BD\]%++)$sHHXi8H-HHJ &++)$sHHXi8H-HHJ 		67 .335%++$Sb)T&\-@-@-BBD 		67 &++E\\,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++---Q 0
 RX	$x/v .! # CD 	1473C3CQG A%LGmmA&&& oo++---	 oo++---s   A/k2=g% /g0A'g% gJ,g% gJg% g Mg% 3j 4kg#kg% g% g%  g% #k%
j/hjAj%i(&j+j /kjkjj k;j><kk)r   r   r   r   r   r   r   r   r   r   r   N)rx   
__module____qualname____firstlineno__rV   r,   strboolr"   staticmethodr   floatr+   r/   r   r6   r<   r   __static_attributes__ r$   r!   r   r   %   s    K5!5 5 	5
 5 5* 
8 
% 
E 
 
  '    % %`.r$   r   )r|   loggingra   hashlibr   ior   osr   typingr   pyrogramr   pyrogram.connectionr   pyrogram.cryptor	   r
   r   pyrogram.errorsr   pyrogram.raw.corer   r   r   	getLoggerrx   rW   r   r   r$   r!   <module>r      sP   &          * + + 1 1 1!M. M.r$   