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/qNEW.pyc


T:Nc@sdZddlmZddlTddlmZddlTdefdYZdZ	ddZd	Zd
ejfdYZ
e
ZdS(
s$Id$i(tpubkey(t*(tSHAterrorcBseZRS((t__name__t
__module__(((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pyR"sicCst}|r|dnxtd||_t|j|_}ddi}}}|dt}|dt}	d|	>}
ttd|d}x|dkrxNtd|dD]9}t	t
j|t|t|j
||<qW|||
}
x6t|dddD]}|
tt>||}
qW|
|}
|
|
d|jd}
||
krt|
rPn|d||d}}qW|dkrPn|r|d	qq|
|_|
d|j}|r|d
nx_t	|||
d}t|||
}d|ko:|
dknr|dkrPqq||_|rn|dnx8t	|d}d|ko|jknrqPqqqq|t|||
|_|_|S(
sgenerate(bits:int, randfunc:callable, progress_func:callable)

    Generate a qNEW key of length 'bits', using 'randfunc' to get
    random data and 'progress_func', if present, to display
    the progress of the key generation.
    sp,q
iiiiliis4096 values of p tried
sh,g
sx,y
i(tqNEWobjtgetPrimetqt
long_to_bytestseedtHASHBITStpowtlongtranget
bytes_to_longRtnewtbytestdigesttisPrimetptgtxty(tbitstrandfunct
progress_functobjtStCtNtVtntbtpowbtpowL1tkRtpowerthRR((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pytgenerate'sX	

7
	
,	
cCsit}t|dkr'tdnx;tt|D]'}|j|}t||||q:W|S(sconstruct(tuple:(long,long,long,long)|(long,long,long,long,long)
    Construct a qNEW object from a 4- or 5-tuple of numbers.
    iis%argument for construct() wrong length(ii(RtlenRRtkeydatatsetattr(ttupleRtitfield((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pyt	constructzs	
RcBs_eZdddddgZddZdZdZd	Zd
ZdZdZ	RS(
RRRRRtcCs|j|krtdn|dkr3tdn|tddkrTtdnt|j||j|j}||||j|j|j}||fS(NsK is greater than qisIllegal value of M (<0)ilsIllegal value of M (too large)(RRRRRR(tselftMtKtrts((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pyt_signs#cCs|\}}|dksB||jksB|dksB||jkrFdS|dkr^tdn|dks|tddkrdSt|j||j}t|j|||j}|||j}||j}||krdSdS(NisIllegal value of M (<0)ili(RRRRRR(R0R1tsigR3R4tv1tv2tv((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pyt_verifys6!
cCsdS(sBReturn the maximum number of bits that can be handled by this key.i((R0((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pytsizescCs
t|dS(sQReturn a Boolean denoting whether the object contains
        private components.R(thasattr(R0((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pythas_privatescCsdS(sPReturn a Boolean value recording whether this algorithm can generate signatures.i((R0((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pytcan_signscCsdS(sIReturn a Boolean value recording whether this algorithm can encrypt data.i((R0((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pytcan_encryptscCs"t|j|j|j|jfS(s?Return a new key object containing only the public information.(R.RRRR(R0((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pyt	publickeys(
RRR)R5R:R;R=R>R?R@(((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pyRs
					N(t__revision__tCrypto.PublicKeyRtCrypto.Util.numbertCrypto.HashRtCrypto.Util.py3compatt	ExceptionRRtNoneR'R.Rtobject(((s9/usr/lib/python2.7/dist-packages/Crypto/PublicKey/qNEW.pyt<module>s

S	2