Current File : //usr/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyo
�
Bd\Rc@s�dZddlTddlmZddlmZmZddlmZddl	Tde
fd��YZd�Zdd	�Zd
d
d��YZdS(s$Id$i����(t*(tnumber(t
bytes_to_longt
long_to_bytes(tSHAterrorcBseZRS((t__name__t
__module__(((s;/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyR$scCs/|d�}tj|�j�}tjtt|�d��j�}td�}xutdd�D]d}t||�t||�A}|dkr�|dB}n|dkr�|dB}n|d|}qbWxt|�s�|d}q�Wt	dd�|kot	dd	�knr||fSt
d
��dS(Niiii�iiil�l�sBad q value generated(RtnewtdigestRRtbignumtrangetbordtisPrimetpowtRuntimeError(trandfunctSthash1thash2tqtitc((s;/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyt	generateQ's %

.
cCs�|dkrtd��nt�}|r7|d�nx�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|dd
d
�D]}|
d>||}
q>W|
|}||d|jd}||kr�t
|�r�Pn|d||d}}q�W|d	kr�Pn|r:|d�q:q:||_t|d|j�d}|r|d
�nx_t||��|d}t|||�}d|ko\|dknr|dkrPqq||_|r�|d�nx8t|d��}d|ko�|jknr�Pq�q�|t|||�|_|_|S(s�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.
    i�sKey length < 160 bitssp,q
iiiiiii����l�s4096 multiples failed
sh,g
sx,y
i(t
ValueErrortDSAobjRRtdivmodRR
RRRRtbstrR	R
tptgtxty(tbitsRt
progress_functobjRtntCtNtVtbtpowbtpowL1tktWtXRtpowerthRR((s;/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pytgenerate_py9sZ	
7
	
,	
RcBseZRS((RR(((s;/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyRqsN((t__revision__tCrypto.PublicKey.pubkeytCrypto.UtilRtCrypto.Util.numberRRtCrypto.HashRtCrypto.Util.py3compatt	ExceptionRRtNoneR/R(((s;/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyt<module>s

	8