Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/Crypto/PublicKey/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyc


T:Nc@scdZdZddddgZddlZejdd	kr]ejd
d
kr]ddlTnddlTddlmZdd
l	m
Z
mZmZddl
mZddlmZmZddlZddlmZyddl	mZWnek
rdZnXdejfdYZdefdYZeZejZejZejZejZdS(s&RSA public-key cryptography algorithm.s$Id$tgeneratet	constructterrort	importKeyiNiii(t*(tgetRandomRange(t_RSAt	_slowmathtpubkey(tRandom(t	DerObjecttDerSequence(tinverse(t	_fastmatht_RSAobjcBseZddddddgZddZdZdZd	Zd
ZdZ	ddZ
d
ZdZdZ
dZdZdZdZdZdZdZddZRS(tntetdtptqtucCs=||_||_|dkr0tjj}n||_dS(N(timplementationtkeytNoneR	tnewtreadt	_randfunc(tselfRRtrandfunc((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt__init__7s
		cCs?||jkrt|j|Std|jj|fdS(Ns%s object has no %r attribute(tkeydatatgetattrRtAttributeErrort	__class__t__name__(Rtattrname((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt__getattr__>scCs|jj|fS(N(Rt_encrypt(RtctK((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR%FscCsi|d \}td|jjdd|j}|jj||}|jj|}|jj||S(NiR(RRRRt_blindt_decryptt_unblind(RR&t
ciphertexttrtcptmp((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR)Is

"cCs|jj||S(N(RR((RtmR,((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR(ZscCs|jj||S(N(RR*(RR/R,((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR*]scCs|jj|fS(N(Rt_sign(RR/R'((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR0`scCs |d \}|jj||S(Ni(Rt_verify(RR/tsigts((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR1cs
cCs
|jjS(N(Rthas_private(R((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR4jscCs
|jjS(N(Rtsize(R((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR5mscCstS(N(tTrue(R((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt	can_blindpscCstS(N(R6(R((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pytcan_encryptsscCstS(N(R6(R((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pytcan_signvscCs"|jj|jj|jjfS(N(RRRRR(R((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt	publickeyyscCsLi}x?|jD]4}yt|j|||<Wqtk
rCqXqW|S(N(RRRR (RRtk((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt__getstate__|s
cCs~t|dst|_ng}x5|jD]*}|j|sGPn|j||q.W|jjjt||_	dS(NR(
thasattrtRSAImplementationRRthas_keytappendt_matht
rsa_constructttupleR(RRttR;((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt__setstate__scCsg}x`|jD]U}|dkrC|jd|jdfqt|j|r|j|qqW|jr|jdnd|jjt|dj	|fS(NRsn(%d)itprivates
<%s @0x%x %s>t,(
RR@R5R=RR4R!R"tidtjoin(RtattrsR;((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt__repr__s!tPEMc
Cst}|jrzd}d|j|j|j|j|j|j|jd|j|jdt|j|jg	|(nmd}|jt	dt
d}t}|j|jg|(t	d|j|_|j|j|dkr|jS|d	krt	d
|}|j}gt
dt|dD] }tj|||d!^q>}	|t	dj|	7}|t	d
|7}|Std|S(sExport the RSA key. A string is returned
        with the encoded public or the private half
        under the selected format.

        format:		'DER' (PKCS#1) or 'PEM' (RFC1421)
        sRSA PRIVATEiitPUBLICs0
	*H
s
BIT STRINGttDERRLs-----BEGIN %s KEY-----
i0ts-----END %s KEY-----s3Unknown key format '%s'. Cannot export the RSA key.(RR4RRRRRRR@tbR
tencodetpayloadtrangetlentbinasciit
b2a_base64RIt
ValueError(
RtformattdertkeyTypetbitmaptderPKtpemt	binaryKeytitchunks((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt	exportKeys.	!"	
?N(R"t
__module__RRRR$R%R)R(R*R0R1R4R5R7R8R9R:R<RERKRb(((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR4s&															
	R>cBsDeZdZdZdddZdZdZdZRS(cKs|jdd}|dkrBtdk	r6t|_qxt|_n6|rotdk	r`t|_qxtdn	t|_|jj|_|jdd|_d|_dS(Nt
use_fast_mathsfast math module not availabletdefault_randfunc(	tgetRR
RARtRuntimeErrorRt_default_randfunct_current_randfunc(RtkwargsRd((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyRs	cCs;|dk	r|S|jdkr4tjj|_n|jS(N(RRiR	RR(RR((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt
_get_randfuncs
cCs|dks|d@dkr+tdn|j|}tj|||}|jj|j|j|j|j	|j
|j}t||S(Niiis8RSA modulus length must be a multiple of 256 and >= 1024(
RXRkRtgenerate_pyRARBRRRRRRR(RtbitsRt
progress_functrftobjR((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyRs3cCs|jj|}t||S(N(RARBR(RttupR((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyRscCsXt}|j|tt|dkr|jr|ddkr|d3|jt|d|d|d=|j|St|dkrH|dtdkrHt	}|j|dt|j
td	dkrE|jdtd
dkrE|j|jdtt|dkrB|jrB|j|SqEqHntddS(Ni	iiiiis0
	*H
isRNsRSA key format is not supported(
RtdecodeR6RUthasOnlyIntsR@RRRQR
ttypeTagRSRX(Rt	externKeyRZR\((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt
_importKeyDERs 	.	6cCst|tr0|jdr0|jd}n|jtdr|jtdtdj}tjtdj	|dd!}|j
|S|dtddkr|j
|Std	d
S(s#Import an RSA key (public or private half).

        externKey:	the RSA key to import, encoded as bytes.
                The key can be in DER (PKCS#1) or in unencrypted
                PEM format (RFC1421).

        Raises a ValueError/IndexError if the given key cannot be parsed.
        s-----tasciit RPiiit0sRSA key format is not supportedN(t
isinstancetunicodet
startswithRRRQtreplacetsplitRVt
a2b_base64RIRvRX(RRutlinesRZ((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyRs	$%

N(	R"RcRRkRRRRvR(((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyR>s					(t__doc__t__revision__t__all__tsystversion_infotCrypto.Util.py21compattCrypto.Util.py3compattCrypto.Util.numberRtCrypto.PublicKeyRRRtCryptoR	tCrypto.Util.asn1R
RRVRR
tImportErrorRRtobjectR>t_implRRRR(((s8/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.pyt<module>s.&



f