Current File : //lib/python2.7/site-packages/paramiko/primes.pyc
�
=OXc@sudZddlZddlmZddlmZmZddlmZddl	Td�Z
defd	��YZdS(
s,
Utility functions for dealing with primes.
i����N(tutil(t	byte_masktlong(tSSHException(t*cCs�tj|d�}|dd}td|d�d}xetr�tj|�}|dkrzt|d|�|d}ntj|d�}||kr;Pq;q;W|S(s returns a random # from 0 to N-1iiiii(Rt
bit_lengthtpowtTruetosturandomRtinflate_long(tntbitst
byte_countt
hbyte_masktxtnum((s3/usr/lib/python2.7/site-packages/paramiko/primes.pyt_roll_randoms	tModulusPackcBs2eZdZd�Zd�Zd�Zd�ZRS(sx
    convenience object for holding the contents of the /etc/ssh/moduli file,
    on systems that have such a file.
    cCsi|_g|_dS(N(tpackt	discarded(tself((s3/usr/lib/python2.7/site-packages/paramiko/primes.pyt__init__;s	c
	Cs[|j�\}}}}}}}t|�}t|�}t|�}t|�}t|�}t|d�}|dks�|dks�|d@r�|dkr�|dkr�|jj|df�dS|dkr�d}ntj|�}	|	|kr|	|dkr|jj|d	|f�dS|	|jkr=g|j|	<n|j|	j||f�dS(
Niiiiids does not meet basic requirementsiis"incorrectly reported bit length %d(tsplittintRRtappendRRR(
Rtlinet	timestamptmod_typetteststtriestsizet	generatortmodulustbl((s3/usr/lib/python2.7/site-packages/paramiko/primes.pyt_parse_modulus@s&!:	c	Cs�i|_t|d��j}x`|D]X}|j�}t|�dks"|ddkr\q"ny|j|�Wq"q"q"Xq"WWdQXdS(sM
        :raises IOError: passed from any file operations that fail.
        trit#N(RtopentstriptlenR#(RtfilenametfR((s3/usr/lib/python2.7/site-packages/paramiko/primes.pyt	read_file^s	
"cCs-t|jj��}t|�dkr6td��nd}xG|D]?}||krC||krC||ksy|dkrC|}qCqCW|dkr�x>|D]3}||kr�||kr�||kr�|}q�q�Wn|dkr|d}||kr|d}qntt|j|��}|j||S(Nisno moduli availablei����(tsortedRtkeysR(RR(RtmintprefertmaxtbitsizestgoodtbR((s3/usr/lib/python2.7/site-packages/paramiko/primes.pytget_modulusms"
0

$
(t__name__t
__module__t__doc__RR#R+R4(((s3/usr/lib/python2.7/site-packages/paramiko/primes.pyR5s
			(
R7RtparamikoRtparamiko.py3compatRRtparamiko.ssh_exceptionRtparamiko.commonRtobjectR(((s3/usr/lib/python2.7/site-packages/paramiko/primes.pyt<module>s