ó
    &ÝNjó  ã                   óN   • S r SSKrSSKJr  SSKJr  SSKJr  S r " S S5      r	g)	z,
Utility functions for dealing with primes.
é    N)Úutil)Ú	byte_mask)ÚSSHExceptionc                 ó  • [         R                  " U S-
  5      nUS-   S-  n[        SUS-  5      S-
  n [        R                  " U5      nUS:”  a  [        US   U5      USS -   n[         R                  " US5      nXP:  a   U$ MR  )z returns a random # from 0 to N-1é   é   é   é   r   N)r   Ú
bit_lengthÚpowÚosÚurandomr   Úinflate_long)ÚnÚbitsÚ
byte_countÚ
hbyte_maskÚxÚnums         ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/paramiko/primes.pyÚ_roll_randomr      s�   € ä�?Š?˜1˜q™5Ó!€DØ˜‘(˜q‘€JÜ�Q˜˜q™Ó! AÑ%€Jð Ü�JŠJ�zÓ"ˆØ˜‹>Ü˜!˜A™$ 
Ó+¨a°°¨eÑ3ˆAÜ×Ò  1Ó%ˆØ‹7ØØ€Jñ ó    c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚModulusPacké4   zl
convenience object for holding the contents of the /etc/ssh/moduli file,
on systems that have such a file.
c                 ó    • 0 U l         / U l        g )N)ÚpackÚ	discarded)Úselfs    r   Ú__init__ÚModulusPack.__init__:   s   € àˆŒ	Øˆ�r   c                 ód  • UR                  5       u  nnnnnnn[        U5      n[        U5      n[        U5      n[        U5      n[        U5      n[        US5      nUS:  d  US:  d  US-  (       a*  US:  a$  US:  a  U R                  R                  US45        g US:X  a  Sn[        R
                  " U5      n	X–:w  a5  X–S-   :w  a-  U R                  R                  US	R                  U5      45        g X�R                  ;  a  / U R                  U	'   U R                  U	   R                  Xx45        g )
Né   r
   é   r	   éd   z does not meet basic requirementsr   r   z"incorrectly reported bit length {})ÚsplitÚintr   Úappendr   r   Úformatr   )
r   ÚlineÚ	timestampÚmod_typeÚtestsÚtriesÚsizeÚ	generatorÚmodulusÚbls
             r   Ú_parse_modulusÚModulusPack._parse_modulus?   s'  € ð �J‰J‹Lñ	
ØØØØØØØä�x“=ˆÜ�E“
ˆÜ�E“
ˆÜ�4‹yˆÜ˜	“Nˆ	Ü�g˜rÓ"ˆð �q‹LØ�q‹yØ˜—	˜e a›i¨E°C«Kà�N‰N×!Ñ!ØÐ<Ð=ôð Ø˜‹>ØˆIô
 �_Š_˜WÓ%ˆØ‹J˜R¨!¡8›^Ø�N‰N×!Ñ!ØÐ>×EÑEÀdÓKÐLôð Ø—Y‘YÓØˆD�I‰I�b‰MØ�	‰	�"‰×Ñ˜iÐ1Õ2r   c                 óø   • 0 U l         [        US5       nU H?  nUR                  5       n[        U5      S:X  d	  US   S:X  a  M-   U R	                  U5        MA     SSS5        g!    MQ  = f! , (       d  f       g= f)z=
:raises IOError: passed from any file operations that fail.
Úrr   Ú#N)r   ÚopenÚstripÚlenr3   )r   ÚfilenameÚfr*   s       r   Ú	read_fileÚModulusPack.read_filem   sr   € ð ˆŒ	Ü�(˜CÔ  AÛ�Ø—z‘z“|�Ü˜“I “N¨¨Q©°3«ÙðØ×'Ñ'¨Ö-ñ ÷ !Ð øðÚú÷ !Õ ús#   ”0A+ÁA#ÁA+Á#A(Á%A+Á+
A9c                 ó¨  • [        U R                  R                  5       5      n[        U5      S:X  a  [	        S5      eSnU H   nXb:¼  d  M
  Xc::  d  M  Xe:  d  US:X  d  M  UnM"     US:X  a   U H  nXa:¼  d  M
  Xc::  d  M  Xe:”  d  M  UnM     US:X  a  US   nX:”  a  US   n[        [        U R                  U   5      5      nU R                  U   U   $ )Nr   zno moduli availableéÿÿÿÿ)Úsortedr   Úkeysr:   r   r   )r   ÚminÚpreferÚmaxÚbitsizesÚgoodÚbr   s           r   Úget_modulusÚModulusPack.get_modulus|   sÇ   € Ü˜$Ÿ)™)Ÿ.™.Ó*Ó+ˆÜˆx‹=˜AÓÜÐ4Ó5Ð5ØˆãˆAØ• !¥(°³¸TÀR½ZØ’ñ ð �2‹:Û�Ø•H 1¥8°!µ(Ø’Dñ ð �2‹:ð
 ˜A‘;ˆDØ‹zØ ‘|�äœ˜TŸY™Y t™_Ó-Ó.ˆØ�y‰y˜‰˜qÑ!Ð!r   )r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r3   r=   rI   Ú__static_attributes__© r   r   r   r   4   s   † ñò
ò
,3ò\õ"r   r   )
rO   r   Úparamikor   Úparamiko.commonr   Úparamiko.ssh_exceptionr   r   r   rQ   r   r   Ú<module>rU      s)   ðñ&ó 
å Ý %Ý /ò÷,`"ò `"r   