Ë
    S"“j  ã                   óH  — d dl Z d dlZddlmZ ddlmZ dedefd„Zdedefd	„Z	d
edede
fd„ZdZd
edefd„Zdedefd„Zdedefd„Zde
fd„Zdededefd„Zdededefd„Zdej&                  defd„Zdej&                  defd„Zdej.                  j0                  defd„Zy)é    Né   )Úfactorization)ÚtypesÚprimeÚgc                 óB  — d}| dk  s| j                  «       |k7  r)t        dj                  | j                  «       |«      «      ‚t        j                  j                  | «      d   dk7  rt        d«      ‚|dk(  r&| dz  dk7  rçt        d	j                  || dz  «      «      ‚|d
k(  r&| d
z  dk7  r¼t        dj                  || d
z  «      «      ‚|dk(  rn˜|dk(  r%| dz  dvrŒt        dj                  || dz  «      «      ‚|dk(  r%| dz  dvrbt        dj                  || dz  «      «      ‚|dk(  r%| dz  dvr8t        dj                  || dz  «      «      ‚t        dj                  |«      «      ‚| dz
  dz  }t        j                  j                  |«      d   dk7  rt        d«      ‚y )Ni   r   zbad prime count {}, expected {}r   zgiven "prime" is not primeé   é   é   zbad g {}, mod8 {}é   zbad g {}, mod3 {}é   é   )r   r   zbad g {}, mod5 {}é   é   )é   é   zbad g {}, mod24 {})r   r   r   zbad g {}, mod7 {}zbad g {}z(prime - 1) // 2 is not prime)Ú
bit_lengthÚ
ValueErrorÚformatr   ÚFactorizationÚ	factorize)r   r   Úgood_prime_bits_countÚprime_sub1_div2s       úR/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/telethon/password.pyÚcheck_prime_and_good_checkr      sÀ  € Ø ÐØˆq‚y�E×$Ñ$Ó&Ð*?Ò?ÜÐ:ß ™& ×!1Ñ!1Ó!3Ð5JÓKóMð 	Mô ×"Ñ"×,Ñ,¨UÓ3°AÑ6¸!Ò;ÜÐ5Ó6Ð6àˆA‚vØ�1‰9˜Š>ÜÐ0×7Ñ7¸¸5À1¹9ÓEÓFÐFØ	
ˆaŠØ�1‰9˜Š>ÜÐ0×7Ñ7¸¸5À1¹9ÓEÓFÐFØ	
ˆaŠØØ	
ˆaŠØ�1‰9˜FÑ"ÜÐ0×7Ñ7¸¸5À1¹9ÓEÓFÐFØ	
ˆaŠØ�2‰:˜XÑ%ÜÐ1×8Ñ8¸¸EÀB¹JÓGÓHÐHØ	
ˆaŠØ�1‰9˜IÑ%ÜÐ0×7Ñ7¸¸5À1¹9ÓEÓFÐFä˜×*Ñ*¨1Ó-Ó.Ð.à˜q‘y QÑ&€OÜ×"Ñ"×,Ñ,¨_Ó=¸aÑ@ÀAÒEÜÐ8Ó9Ð9ð Fó    Úprime_bytesc                 ón   — t        d«      }|| k(  r|dv ry t        t        j                  | d«      |«       y )N(   éÇ   é   é®   é¹   éÆ   é±   éÉ   r   éŽ   él   éR   é/   ép   éñ   é?   és   é˜   é   é@   é#   r&   é>   é!   éÁ   éI   é4   éÐ   é7   éV   é=   é“   é   éH   é   éŠ   é
   é§   r4   r0   éX   é"   é”   r;   éÒ   é%   é0   éô   éÛ   éú   é3   éo   én   r@   r%   rF   r   é•   éC   r!   éÔ   éL   éÎ   é|   r8   é    éý   éQ   éö   rD   rB   r*   éZ   r#   éŒ   rP   éþ   ék   r[   r   é«   éÜ   é—   éF   rV   é)   éi   é2   é„   éT   r+   é�   é¯   rY   éY   é_   éd   é$   éw   rZ   é–   é»   é*   rD   é   é[   éÍ   ro   éJ   éÈ   éÌ   r5   éˆ   r   r
   rJ   é›   r8   r&   é<   éO   é:   é�   é`   é¾   éæ   rS   éù   é¤   r   é¦   rN   é�   é   rV   rz   é~   é   é'   éS   éµ   r[   r<   r[   éA   r/   éº   ét   éØ   é¨   éK   rn   é   é³   rŽ   éN   é   r+   é(   éG   rd   rU   r   éí   rN   r/   rg   ée   é´   r"   éÝ   r_   rB   é-   r$   r   é�   r„   éœ   r[   éÄ   r•   é°   éÖ   éÿ   rš   é£   é’   re   éï   rp   éš   éä   r£   r   éü   é   éè   r2   r|   é    éø   é   é©   rž   é^   r”   r*   r   r/   r”   r’   r5   rH   é{   r~   rg   éÙ   r9   é…   é   éé   r`   r®   é   r/   r�   r¥   rW   é5   r$   r   éî   é.   r�   r¥   r7   r�   rj   rd   é¿   rL   rx   é­   éð   r6   r$   r   r   é   rš   r‹   éã   r"   r)   rt   rp   )r   r   r   r   Úbig)Úbytesr   ÚintÚ
from_bytes)r   r   Ú
good_primes      r   Úcheck_prime_and_goodr¿   -   s=   € Üð hó i€Jð$ �[Ò Ø�ÑØäœsŸ~™~¨k¸5ÓAÀ1ÕEr   ÚnumberÚpÚreturnc                 ó    — | dkD  xr || z
  dkD  S )Nr   © )rÀ   rÁ   s     r   Úis_good_largerÅ   G   s   € Ø�A‰:Ò(˜!˜f™* q™.Ð(r   é   c                 ó>   — t        t        t        | «      z
  «      | z   S ©N)r»   ÚSIZE_FOR_HASHÚlen)rÀ   s    r   Únum_bytes_for_hashrË   N   s   € Ü”¤ V£Ñ,Ó-°Ñ6Ð6r   c                 ó.   — | j                  t        d«      S )Nrº   )Úto_bytesrÉ   )r   s    r   Úbig_num_for_hashrÎ   R   s   € Ø�:‰:”m UÓ+Ð+r   c                  óz   — t        j                  «       }| D ]  }|j                  |«       Œ |j                  «       S rÈ   )ÚhashlibÚsha256ÚupdateÚdigest)rÁ   ÚhashÚqs      r   rÑ   rÑ   V   s4   € Ü�>‰>Ó€DØò ˆØ�‰�A�ðà�;‰;‹=Ðr   c                 ó    — || z
  }d}d}|dk  s?|j                  «       |k  s,| j                  «       |k  s| j                  «       dz   dz  |kD  ryy)NiÀ  rÆ   r   r   r
   FT)r   )Úmodexpr   ÚdiffÚmin_diff_bits_countÚmax_mod_exp_sizes        r   Úis_good_mod_exp_firstrÛ   ]   sb   € Ø�6‰>€DØ#ÐØÐØˆa‚xØ�O‰OÓÐ 3Ò3Ø×ÑÓÐ"5Ò5Ø×ÑÓ  1Ñ$¨Ñ*Ð-=Ò=ØØr   ÚaÚbc                 ó:   — t        d„ t        | |«      D «       «      S )Nc              3   ó,   K  — | ]  \  }}||z  –— Œ y ­wrÈ   rÄ   )Ú.0ÚxÚys      r   ú	<genexpr>zxor.<locals>.<genexpr>j   s   è ø€ Ò-™4˜1˜a��Q•Ñ-ùs   ‚)r»   Úzip)rÜ   rÝ   s     r   Úxorrå   i   s   € ÜÑ-¤3 q¨!£9Ô-Ó-Ð-r   ÚpasswordÚsaltÚ
iterationsc                 ó2   — t        j                  d| ||«      S )NÚsha512)rÐ   Úpbkdf2_hmac)ræ   rç   rè   s      r   Úpbkdf2sha512rì   m   s   € Ü×Ñ˜x¨°4¸ÓDÐDr   Úalgoc                 ó  — t        | j                  |j                  d«      | j                  «      }t        | j                  || j                  «      }t	        || j                  d«      }t        | j                  || j                  «      S )Nzutf-8i † )rÑ   Úsalt1ÚencodeÚsalt2rì   )rí   ræ   Úhash1Úhash2Úhash3s        r   Úcompute_hashrõ   q   s`   € ä�4—:‘:˜xŸ™¨wÓ7¸¿¹ÓD€EÜ�4—:‘:˜u d§j¡jÓ1€EÜ˜ §
¡
¨FÓ3€EÜ�$—*‘*˜e T§Z¡ZÓ0Ð0r   c           	      ó0  — 	 t        | j                  | j                  «       t	        | j                  t
        j                  t        | |«      d«      t
        j                  | j                  d«      «      }t        |«      S # t        $ r t        d«      ‚w xY w)Núbad p/g in passwordrº   )	r¿   rÁ   r   r   Úpowr¼   r½   rõ   rÎ   )rí   ræ   Úvalues      r   Úcompute_digestrú   y   s|   € ð0Ü˜TŸV™V T§V¡VÔ,ô �—‘Ü—‘œ|¨D°(Ó;¸UÓCÜ—‘˜tŸv™v uÓ-ó/€Eô ˜EÓ"Ð"øô ò 0ÜÐ.Ó/Ð/ð0ús   ‚ B  Â BÚrequestc                 ó®  ‡‡‡— | j                   }t        |t        j                  «      s.t	        dj                  |j                  j                  «      «      ‚t        ||«      }t        j                  |j                  d«      Š|j                  Št        j                  | j                  d«      }	 t        |j                  ‰«       t        |‰«      st	        d«      ‚t        j                  |d«      }t!        |j                  «      }t#        ‰«      }t!        | j                  «      Št%        ‰|‰«      }t        j                  t'        ||«      d«      }	|	|z  ‰z  }
ˆˆˆfd„} |«       \  }}}||
z
  ‰z  }t)        |‰«      st	        d«      ‚||z  }||z   }t%        ||‰«      }t'        t#        |«      «      }t'        t+        t'        |«      t'        |«      «      t'        |j,                  «      t'        |j.                  «      |‰|«      }t        j0                  | j2                  t5        |«      t5        |«      «      S # t        $ r t	        d«      ‚w xY w)Nz!unsupported password algorithm {}rº   r÷   zbad b in checkc                  óþ   •— d} 	 t        j                  | «      }t        j                  |d«      }t	        ‰|‰«      }t        |‰«      r5t        |«      }t        j                  t        |‰«      d«      }|dkD  r|||fS Œz)NrÆ   rº   r   )ÚosÚurandomr¼   r½   rø   rÛ   rÎ   rÑ   )	Úrandom_sizeÚrandomrÜ   ÚAÚ
a_for_hashÚuÚ
b_for_hashr   rÁ   s	         €€€r   Úgenerate_and_check_randomz0compute_check.<locals>.generate_and_check_random£   sz   ø€ ØˆØÜ—Z‘Z Ó,ˆFÜ—‘˜v uÓ-ˆAÜ�A�q˜!“ˆAÜ$ Q¨Ô*Ü-¨aÓ0�
Ü—N‘N¤6¨*°jÓ#AÀ5ÓI�Ø�q’5Ø˜z¨1Ð-Ð-ð r   zbad g_b)Úcurrent_algoÚ
isinstancer   ÚAPasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPowr   r   Ú	__class__Ú__name__rõ   r¼   r½   rÁ   r   Úsrp_Br¿   rÅ   rË   rÎ   rø   rÑ   rÛ   rå   rï   rñ   ÚInputCheckPasswordSRPÚsrp_idr»   )rû   ræ   rí   Úpw_hashÚBrá   Ú
p_for_hashÚ
g_for_hashÚg_xÚkÚkg_xr  rÜ   r  r  Úg_bÚuxÚa_uxÚSÚKÚM1r  r   rÁ   s                        @@@r   Úcompute_checkr  ˆ   s  ú€ Ø×Ñ€DÜ�dœE×cÑcÔdÜÐ<ß ™& §¡×!8Ñ!8Ó9ó;ð 	;ô ˜4 Ó*€Gä�‰�t—v‘v˜uÓ%€AØ�‰€AÜ�‰�w—}‘} eÓ,€Að0Ü˜TŸV™V QÔ'ô ˜˜AÔÜÐ)Ó*Ð*ä�‰�w Ó&€AÜ# D§F¡FÓ+€JÜ! !Ó$€JÜ# G§M¡MÓ2€JÜ
ˆa��A‹,€CÜ�‰”v˜j¨*Ó5°uÓ=€AØ�‰G�q‰=€Dö
.ñ 1Ó2Ñ€A€z�1Øˆt‰8�q‰.€CÜ   aÔ(Ü˜Ó#Ð#à	
ˆQ‰€BØˆr‰6€DÜˆC��qÓ€AÜÔ Ó"Ó#€AÜ	ÜŒF�:Ó¤ zÓ 2Ó3Üˆt�z‰zÓÜˆt�z‰zÓØØØ	ó
€Bô ×&Ñ&Ø�‰œ˜jÓ)¬5°«9ó6ð 6øôY ò 0ÜÐ.Ó/Ð/ð0ús   Â1H? È?I)rÐ   rþ   Úcryptor   Útlr   r¼   r   r»   r¿   ÚboolrÅ   rÉ   rË   rÎ   rÑ   rÛ   rå   rì   r	  Ústrrõ   rú   ÚaccountÚPasswordr  rÄ   r   r   ú<module>r#     s*  ðÛ Û 	å !Ý ð : cð  :¨có  :ðJF eð F°ó Fð4)˜#ð ) #ð )¨$ó )ð €ð7˜uð 7¨ó 7ð,˜ð , ó ,ðˆuð ˜ó ð	¨Dó 	ð.ˆ5ð .�Uð .˜uó .ðE˜5ð E¨ð E¸3ó Eð1�u×^Ñ^ð 1Øó1ð#˜×`Ñ`ð #Ø ó#ð:6˜5Ÿ=™=×1Ñ1ð :6¸Sô :6r   