Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/Crypto/Random/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/Crypto/Random/__pycache__/random.cpython-35.pyc



���^s�@s�dZdZdddddddgZd	d
lmZd	dlZejd	dkrsejd
d
krsd	dlTGdd�de�Z	e	�Z
e
jZe
jZe
j
Z
e
jZe
jZe
jZd	dlmZmZmZmZdS)zHA cryptographically strong version of Python's standard "random" module.z$Id$�StrongRandom�getrandbits�	randrange�randint�choice�shuffle�sample�)�RandomN��)�*c@sjeZdZdddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)rNcCs|dkr$|dkr$d|_nW|dk	rH|dkrH||_n3|dkro|dk	ro|j|_ntd��dS)Nz(Cannot specify both 'rng' and 'randfunc')�	_randfunc�read�
ValueError)�self�rngZrandfunc�r�G/opt/alt/python35/lib64/python3.5/site-packages/Crypto/Random/random.py�__init__$szStrongRandom.__init__cCsO|jdkr!tj�j|_d|>d}|t|jt|d���@S)z0Return a python long integer with k random bits.Nr�)r
r	�newr�
bytes_to_long�ceil_div)r�k�maskrrrr.szStrongRandom.getrandbitscGsft|�dkr$|\}}}njt|�dkrK|\}}d}nCt|�dkru|\}d}d}ntdt|�f��t|t�s�t|t�s�t|t�r�td��|dkr�td��t|||�}|dkrd}|dkr,td|||f��|}x%||krY|jt|��}q5W|||S)	zkrandrange([start,] stop[, step]):
        Return a randomly-selected element from range(start, stop, step).�r
rrz.randrange expected at most 3 arguments, got %dz$randrange requires integer argumentsz(randrange step argument must not be zeroz%empty range for randrange(%r, %r, %r))�len�	TypeError�
isinstance�intrrr�size)r�args�start�stop�step�num_choices�rrrrr5s2			zStrongRandom.randrangecCsht|t�s t|t�r,td��|j||d�}||koY|knsdt�|S)z0Return a random integer N such that a <= N <= b.z"randint requires integer argumentsr)rrrr�AssertionError)r�a�b�NrrrrWs
 "zStrongRandom.randintcCs5t|�dkrtd��||jt|��S)zrReturn a random element from a (non-empty) sequence.

        If the seqence is empty, raises IndexError.
        rzempty sequence)r�
IndexErrorr)r�seqrrrr_szStrongRandom.choicecCsOt|�}x<tt|��D](}|j|jt|���||<qWdS)zShuffle the sequence in place.N)�list�ranger�popr)r�x�items�irrrrhszStrongRandom.shufflecCs�t|�}||kr$td��g}i}xct|�D]U}d}x+|dksd||krv|j|�}qLW|j||�d||<q=W|S)zNReturn a k-length list of unique elements chosen from the population sequence.zsample larger than populationNr)rrr.r�append)rZ
populationrr%�retvalZselectedr2r&rrrrrszStrongRandom.sample)
�__name__�
__module__�__qualname__rrrrrrrrrrrr#s
"	
)rr�
long_to_bytesr )�__doc__�__revision__�__all__�Cryptor	�sys�version_infoZCrypto.Util.py21compat�objectrZ_rrrrrrrZCrypto.Util.numberrrr8r rrrr�<module>s&
`