Current File : //proc/self/root/proc/self/root/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyc
�
�/�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|t�st�t|t�s*t�t|ttd�f�sKt�t|ttd�f�slt�t|ttd�f�s�t�t|ttd�f�s�t�t�}||_||_|dkr�|S||_|dk	r|dk	r||_	||_
n>||d}|}x'|ddkrLt|d�d}q&Wd}	d}
x�|	r|
dkr|}x�||kr�t|
||�}|dkr�||dkr�t|d|�dkr�t
|d|�|_	d}	Pn|d}qxW|
d}
q\W|	std��n||j	dks4t�t||j	�d|_
|dk	re||_nt|j	|j
�|_|S(sConstruct an RSAKey objectiiiids2Unable to compute factors p and q from exponent d.N(t
isinstancetlongtAssertionErrorttypetNoneRRR
RRRtdivmodR	Rt
ValueErrorRR(
RR
RRRRtobjtktottttspottedtatktcand((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyRRsN!!!!					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	tgRR0(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	R1Rty(RR
RR3twtu1tu2tv((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			cCs�t|t�st�t|t�s*t�t|t�s?t�t|t�sTt�t|ttd�f�sut�t�}||_||_||_||_	|dk	r�||_
n|S(N(R!R"R#R$R%R/R5R1RRR0(R5R1RRR0R(((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/R:(((s@/usr/lib64/python2.7/site-packages/Crypto/PublicKey/_slowmath.pyt<module>s	&
*<