§
    3xÅjó  ã                   óV   — d Z ddlZddlmZ ddlmZ ddlmZ d„ Z G d„ d¦  «        Z	dS )	z,
Utility functions for dealing with primes.
é    N)Úutil)Ú	byte_mask)ÚSSHExceptionc                 ó"  — t          j        | dz
  ¦  «        }|dz   dz  }t          d|dz  ¦  «        dz
  }	 t          j        |¦  «        }|dk    r!t          |d         |¦  «        |dd…         z   }t          j        |d¦  «        }|| k     rnŒX|S )z returns a random # from 0 to N-1é   é   é   é   Tr   N)r   Ú
bit_lengthÚpowÚosÚurandomr   Úinflate_long)ÚnÚbitsÚ
byte_countÚ
hbyte_maskÚxÚnums         ú@C:\Projects\Historical\venv\Lib\site-packages\paramiko/primes.pyÚ_roll_randomr      s¡   € åŒ?˜1˜q™5Ñ!Ô!€DØ˜‘(˜q‘€JÝ�Q˜˜q™Ñ!Ô! AÑ%€JðÝŒJ�zÑ"Ô"ˆØ˜Š>ˆ>Ý˜!˜Aœ$ 
Ñ+Ô+¨a°°°¬eÑ3ˆAÝÔ  1Ñ%Ô%ˆØ�Š7ˆ7Øðð €Jó    c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚModulusPackzx
    convenience object for holding the contents of the /etc/ssh/moduli file,
    on systems that have such a file.
    c                 ó"   — i | _         g | _        d S )N)ÚpackÚ	discarded)Úselfs    r   Ú__init__zModulusPack.__init__:   s   € àˆŒ	ØˆŒˆˆr   c                 óŒ  — |                      ¦   «         \  }}}}}}}t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |d¦  «        }|dk     s|dk     s|dz  r*|dk     r$|dk     r| j                             |df¦  «         d S |dk    rd}t	          j        |¦  «        }	|	|k    r:|	|dz   k    r1| j                             |d	                     |¦  «        f¦  «         d S |	| j        vr
g | j        |	<   | j        |	                              ||f¦  «         d S )
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_moduluszModulusPack._parse_modulus?   ss  € ð �JŠJ‰LŒLñ	
ØØØØØØØå�x‘=”=ˆÝ�E‘
”
ˆÝ�E‘
”
ˆÝ�4‰yŒyˆÝ˜	‘N”Nˆ	Ý�g˜rÑ"Ô"ˆð �qŠLˆLØ�qŠyˆyØ˜‘	ð Ø# aši˜i¨E°CªK¨KàŒN×!Ò!ØÐ<Ð=ñô ð ð ˆFØ˜Š>ˆ>ØˆIõ
 Œ_˜WÑ%Ô%ˆØ�$ŠJˆJ˜R 4¨!¡8š^˜^ØŒN×!Ò!ØÐ>×EÒEÀdÑKÔKÐLñô ð ð ˆFØ�T”YÐÐØˆDŒI�b‰MØŒ	�"Œ×Ò˜i¨Ð1Ñ2Ô2Ð2Ð2Ð2r   c                 ó  — i | _         t          |d¦  «        5 }|D ]S}|                     ¦   «         }t          |¦  «        dk    s|d         dk    rŒ6	 |                      |¦  «         ŒM#  Y ŒQxY w	 ddd¦  «         dS # 1 swxY w Y   dS )zM
        :raises IOError: passed from any file operations that fail.
        Úrr   ú#N)r   ÚopenÚstripÚlenr1   )r   ÚfilenameÚfr(   s       r   Ú	read_filezModulusPack.read_filem   så   € ð ˆŒ	Ý�(˜CÑ Ô ð 	 AØð ð �Ø—z’z‘|”|�Ý˜‘I”I ’N�N¨¨Q¬°3ª¨ØðØ×'Ò'¨Ñ-Ô-Ð-Ð-øðØ�Høøøðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s)   ˜9A=ÁA(Á'A=Á(A,Á*A=Á=BÂBc                 ó¾  — t          | j                             ¦   «         ¦  «        }t          |¦  «        dk    rt	          d¦  «        ‚d}|D ]}||k    r||k    r||k     s|dk    r|}Œ|dk    r|D ]}||k    r||k    r||k    r|}Œ|dk    r|d         }||k    r|d         }t          t          | j        |         ¦  «        ¦  «        }| j        |         |         S )Nr   zno moduli availableéÿÿÿÿ)Úsortedr   Úkeysr7   r   r   )r   ÚminÚpreferÚmaxÚbitsizesÚgoodÚbr   s           r   Úget_moduluszModulusPack.get_modulus|   sÿ   € Ý˜$œ)Ÿ.š.Ñ*Ô*Ñ+Ô+ˆÝˆx‰=Œ=˜AÒÐÝÐ4Ñ5Ô5Ð5Øˆàð 	ð 	ˆAØ�V’� ! s¢( (°°T²°¸TÀRºZ¸ZØ�øà�2Š:ˆ:Øð ð �Ø˜’H�H 1¨¢8 8°!°d²(°(Ø�DøØ�2Š:ˆ:ð
 ˜A”;ˆDØ�TŠzˆzØ ”|�å�˜TœY tœ_Ñ-Ô-Ñ.Ô.ˆØŒy˜Œ˜qÔ!Ð!r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r1   r:   rE   © r   r   r   r   4   s[   € € € € € ðð ð
ð ð ð
,3ð ,3ð ,3ð\ð ð ð"ð "ð "ð "ð "r   r   )
rI   r   Úparamikor   Úparamiko.commonr   Úparamiko.ssh_exceptionr   r   r   rJ   r   r   ú<module>rN      s›   ðð&ð ð 
€	€	€	à Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð,`"ð `"ð `"ð `"ð `"ñ `"ô `"ð `"ð `"ð `"r   