Your IP : 216.73.216.213


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



���^�
�@s�dZddlTddlmZddlmZmZddlmZddl	TGdd�de
�Zdd	�Zd
dd�Z
Gd
d�d�Zd
S)z$Id$�)�*)�number)�
bytes_to_long�
long_to_bytes)�SHAc@seZdZdS)�errorN)�__name__�
__module__�__qualname__�rr�H/opt/alt/python35/lib64/python3.5/site-packages/Crypto/PublicKey/_DSA.pyr$srcCs)|d�}tj|�j�}tjtt|�d��j�}td�}xotdd�D]^}t||�t||�A}|dkr�|dB}|dkr�|dB}|d|}qbWxt|�s�|d}q�Wt	dd�|ko
t	dd	�knr||fSt
d
��dS)N��r������zBad q value generated)r�new�digestrr�bignum�rangeZbord�isPrime�pow�RuntimeError)�randfunc�SZhash1Zhash2�q�i�crrr�	generateQ's %

.
r!NcCs�|dkrtd��t�}|r1|d�x�t|�\}|_t|dd�d}ddi}}}|jd?d@}	ttd�|	�}
ttd�|d�}x�|d	kr�xNtd|d�D]9}tt	j
|t|�t|��j��||<q�W|||
}
x0t|ddd�D]}|
d>||}
q8W|
|}||d|jd}||kr�t
|�r�P|d||d}}q�W|d	kr�P|r4|d
�q4W||_t|d|j�d}|r|d�x]t||��|d}t|||�}d|koK|dknr|dkrPqW||_|rz|d�x6t|d
��}d|ko�|jknr}Pq}W|t|||�|_|_|S)z�generate(bits:int, randfunc:callable, progress_func:callable)

    Generate a DSA key of length 'bits', using 'randfunc' to get
    random data and 'progress_func', if present, to display
    the progress of the key generation.
    rzKey length < 160 bitszp,q
rrr��iz4096 multiples failed
zh,g
zx,y
r
���r$)�
ValueError�DSAobjr!r�divmodrrrrrrZbstrrr�p�g�x�y)�bitsrZ
progress_func�objr�n�C�N�V�bZpowbZpowL1�k�W�Xr(Zpower�hr)r*rrr�generate_py9sZ	
7
	
,	
r7c@seZdZdS)r&N)rr	r
rrrrr&qsr&)�__revision__ZCrypto.PublicKey.pubkeyZCrypto.UtilrZCrypto.Util.numberrrZCrypto.HashrZCrypto.Util.py3compat�	Exceptionrr!r7r&rrrr�<module>s

8