ó Â/¾Oc@s×dZdZdgZddlZejddkrTejddkrTddlTndd lmZmZm Z d e fd „ƒYZ d 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( t has_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( RR R tNoneRRRtdivmodR Rt ValueErrorRR( R R 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.pyRscCs 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.pyts  & *<