Current File : //usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyo
�
�/�Oc@s�dZdZdgZddlZejddkrTejddkrTddlTndd	lmZmZm	Z	d
e
fd��YZdefd
��YZ
ddddd�Zdefd��YZdd�ZdS(sUPure Python implementation of the RSA-related portions of Crypto.PublicKey._fastmath.s$Id$t
rsa_constructi����Niii(t*(tsizetinversetGCDterrorcBseZRS((t__name__t
__module__(((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyR%st_RSAKeycBsPeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	RS(cCs|t||j|j�S(N(tpowtetn(tselftmtr((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt_blind)scCst||j�||jS(N(RR(RR
R((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt_unblind-scCs�|j�std��nt|d�r�t|d�r�t|d�r�t||j|jd|j�}t||j|jd|j�}||}|dkr�||j}n||j|j}||j|St||j|j�S(NsNo private keytptqtuii(	thas_privatet	TypeErrorthasattrR	tdRRRR(Rtctm1tm2th((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt_decrypt1s-##
cCst||j|j�S(N(R	R
R(RR
((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt_encrypt?scCs(|j�std��n|j|�S(NsNo private key(RRR(RR
((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt_signCscCs|j|�|kS(N(R(RR
tsig((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt_verifyHscCs
t|d�S(NR(R(R((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyRKscCst|j�dS(s7Return the maximum number of bits that can be encryptedi(RR(R((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyRNs(
RRRRRRRR RR(((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyR(s							c
Cs�t�}||_||_|dkr+|S||_|dk	ra|dk	ra||_||_n%||d}|}x'|ddkr�t|d�d}qxWd}	d}
x�|	rW|
dkrW|}x�||krIt|
||�}|dkr<||dkr<t|d|�dkr<t	|d|�|_d}	Pn|d}q�W|
d}
q�W|	smt
d��nt||j�d|_|dk	r�||_nt|j|j�|_|S(sConstruct an RSAKey objectiiiids2Unable to compute factors p and q from exponent d.N(
RRR
tNoneRRRtdivmodR	Rt
ValueErrorRR(
RR
RRRRtobjtktottttspottedtatktcand((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyRRs@					4t_DSAKeycBs,eZd�Zd�Zd�Zd�ZRS(cCst|j�dS(s7Return the maximum number of bits that can be encryptedi(RR(R((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyR�scCs
t|d�S(Ntx(R(R((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyR�scCs�|j�std��nd|ko5|jknsItd��nt||j�}t|j||j�|j}|||j||j}||fS(NsNo private keylsk is not between 2 and q-1(	RRRR#RR	tgRR,(RR
R)tinv_kRts((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyR�scCs�d|ko|jkns@d|ko:|jknrDtSt||j�}|||j}|||j}t|j||j�t|j||j�|j|j}||kS(Ni(RtFalseRR	R-Rty(RR
RR/twtu1tu2tv((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyR �s@<(RRRRRR (((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyR+�s			cCsIt�}||_||_||_||_|dk	rE||_n|S(N(R+R1R-RRR!R,(R1R-RRR,R$((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt
dsa_construct�s					(t__doc__t__revision__t__all__tsystversion_infotCrypto.Util.py21compattCrypto.Util.numberRRRt	ExceptionRtobjectRR!RR+R6(((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt<module>s	&
*<