Viewing File: /usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyo

ó
ާ\c@s_dZdZddlZddlZddlmZmZddlTejdkr_d„Z	ne	Z	ddd	„ƒYZ
e
d
„Zdejfd„ƒYZ
d
e
fd„ƒYZdejfd„ƒYZdejfd„ƒYZdejfd„ƒYZdejfd„ƒYZdejfd„ƒYZdejfd„ƒYZd„Zd„ZdS(s&Self-testing for PyCrypto hash moduless$Id$iÿÿÿÿN(ta2b_hextb2a_hex(t*icKs
|jƒS(N(tcopy(tkwargs((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pytdict&st
_NoDefaultcBseZRS((t__name__t
__module__(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR+scCs@y||}Wn$tk
r4|tkr0‚n|SX||=|S(sAGet an item from a dictionary, and remove it from the dictionary.(tKeyErrorR(tdtktdefaulttretval((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyt_extract,s
tCipherSelfTestcBs/eZd„Zd„Zdd„Zd„ZRS(cCsntjj|ƒ||_|jƒ}t|dƒ|_tt|dƒƒ|_tt|dƒƒ|_	tt|dƒƒ|_
t|ddƒ|_t|ddƒ}t
|ƒ|_|dk	rOt|jd|ƒ|_t|ddƒ|_|jdk	rt|jƒ|_nt|d	dƒ|_|jdk	rat|jƒ|_qand|_d|_||_dS(
Ntdescriptiontkeyt	plaintextt
ciphertexttmodule_nametmodetMODE_tivtencrypted_iv(tunittesttTestCaset__init__tmoduleRRRtbRRRtNoneRtstrt	mode_nametgetattrRRRtextra_params(tselfRtparamsR((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR:s*			cCs|jS(N(R(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pytshortDescriptionYsicCs|jjƒ}t|jdƒr0|j|jjkr0ddlm}t|d|j	ƒ}t|diƒjƒ}|j
dƒrŸtt|dƒƒ|d<n|j
dƒrËtt|dƒƒ|d<n|j
dƒsd	|jj
t|jdd
ƒƒt|jdd
ƒƒ|d<n|||d<n|jdkr[|jj	t|jƒ|S|jdkrŒ|jj	t|jƒ|j|S|rÕ|j|jjkrÕ|jj	t|jƒ|jt|jƒ|S|jj	t|jƒ|jt|jƒ|SdS(NtMODE_CTRiÿÿÿÿ(tCountert	ctr_classt
ctr_paramstprefixtsuffixtnbitsittcounter(R"RthasattrRRR&tCrypto.UtilR'Rtnewthas_keyRRt
block_sizetlentgetRRRtMODE_OPENPGPR(R#t
do_decryptionR$R'R(R)((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyt_new\s&'C".cCs[t|jƒ}t|jƒ}t|jƒj|ƒƒ}t|jdƒj|ƒƒ}t|jƒj|ƒƒ}t|jdƒj|ƒƒ}t|jdƒr|j	|jj
krt|jƒ}|j
|j|| ƒ|j
|j|| ƒ||}||}n|j
|j|ƒ|j
|j|ƒ|j
|j|ƒ|j
|j|ƒdS(NiR6(RRRRR8tencrypttdecryptR/RRR6R4RtassertEqual(R#RRtct1tpt1tct2tpt2teilen((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pytrunTestxs '

(RRRR%R8RA(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR8s		tCipherStreamingSelfTestcBseZd„Zd„ZRS(cCs:|j}|jdk	r/|d|jf7}nd|fS(Ns in %s modes%%s should behave like a stream cipher(RRRR (R#tdesc((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR%’s	cCs*t|jƒ}t|jƒ}g}|jƒ}xAtdt|ƒdƒD]'}|j|j|||d!ƒƒqIWtt	dƒj
|ƒƒ}|j|j|ƒg}|jƒ}xAtdt|ƒdƒD]'}|j|j|||d!ƒƒqÍWtt	dƒj
|ƒƒ}|j|j|ƒdS(NiiR-(RRRR8trangeR4tappendR9RRtjoinR;(R#RRtct3tciphertitpt3((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRA˜s%%(RRR%RA(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRBs	tCTRSegfaultTestcBs#eZd„Zd„Zd„ZRS(cCsEtjj|ƒ||_t|dƒ|_|jddƒ|_dS(NRR(	RRRRRRR5RR(R#RR$((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR±s	cCsd|j|jfS(NsNRegression test: %s.new(key, %s.MODE_CTR) should raise TypeError, not segfault(R(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR%·scCs/|jt|jjt|jƒ|jjƒdS(N(tassertRaisest	TypeErrorRR1RRR&(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRAºs(RRRR%RA(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRK¯s		tCTRWraparoundTestcBs#eZd„Zd„Zd„ZRS(cCsEtjj|ƒ||_t|dƒ|_|jddƒ|_dS(NRR(	RRRRRRR5RR(R#RR$((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR¿s	cCsd|jfS(Ns]Regression test: %s with MODE_CTR should raise OverflowError on wraparound when shortcut used(R(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR%Åsc
CsÖddlm}x¿dD]·}x®d
D]¦}|jd|jjddd|jjdd|d	|ƒ}|jjt|jƒ|jjd
|ƒ}tdƒ|jj}|j	|ƒ|j
t|j	|ƒq$WqWdS(Niÿÿÿÿ(R'iiit
initial_valuelt
little_endiantdisable_shortcutR.t(ii(ii(R0R'R1RR3RRR&RR9RLt
OverflowError(R#R'RQRPtctrRHtblock((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRAÈs

=*
(RRRR%RA(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRN½s		tCFBSegmentSizeTestcBs#eZd„Zd„Zd„ZRS(cCs=tjj|ƒ||_t|dƒ|_|d|_dS(NRR(RRRRRRR(R#RR$((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRÕs	cCs|jS(N(R(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR%ÛscCs„xHtddƒD]7}|jt|jjt|jƒ|jjd|ƒqW|jjt|jƒ|jjd|jjddƒdS(snRegression test: m.new(key, m.MODE_CFB, segment_size=N) should require segment_size to be a multiple of 8 bitsiitsegment_sizeRRN(	RDRLt
ValueErrorRR1RRtMODE_CFBR3(R#RI((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRAÞs5(RRRR%RA(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRVÓs		t
RoundtripTestcBs#eZd„Zd„Zd„ZRS(cCsddlm}tjj|ƒ||_|j|jƒ|_t	|dƒ|_
dt	|dƒ|_|jddƒ|_dS(Niÿÿÿÿ(tRandomRidRR(tCryptoR[RRRRtget_random_bytesR3RRRRR5RR(R#RR$R[((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRås	cCsd|jfS(Ns8%s .decrypt() output of .encrypt() should not be garbled(R(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR%îscCsÕ|jj}|jjt|jƒ|ƒ}|j|jƒ}|jjt|jƒ|ƒ}|j|ƒ}|j|j|ƒ|jj	}|jjt|jƒ||j
ƒ}|j|jƒ}||jjd }||jjd}|jjt|jƒ||ƒ}|j|ƒ}|j|j|ƒx¥|jj|jj
|jjfD]‚}|jjt|jƒ||j
ƒ}|j|jƒ}|jjt|jƒ||j
ƒ}|j|ƒ}|j|j|ƒqKWdS(Ni(RtMODE_ECBR1RRR9RR:R;R6RR3tMODE_CBCRYtMODE_OFB(R#Rtencryption_cipherRtdecryption_ciphertdecrypted_plaintextteiv_ciphertextteiv((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRAñs($!($$(RRRR%RA(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRZäs			tPGPTestcBs#eZd„Zd„Zd„ZRS(cCs0tjj|ƒ||_t|dƒ|_dS(NR(RRRRRR(R#RR$((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRs	cCsdS(NsRMODE_PGP was implemented incorrectly and insecurely. It's completely banished now.((R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR%scCs/|jt|jjt|jƒ|jjƒdS(N(RLRXRR1RRtMODE_PGP(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRAs(RRRR%RA(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRf
s		tIVLengthTestcBs,eZd„Zd„Zd„Zd„ZRS(cCs0tjj|ƒ||_t|dƒ|_dS(NR(RRRRRR(R#RR$((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRs	cCsdS(NsTCheck that all modes except MODE_ECB and MODE_CTR require an IV of the proper length((R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyR% scCs|jt|jjt|jƒ|jjdƒ|jt|jjt|jƒ|jjdƒ|jt|jjt|jƒ|jjdƒ|jt|jjt|jƒ|jj	dƒ|jjt|jƒ|jj
dƒ|jjt|jƒ|jjdd|jƒdS(NR-R.(
RLRXRR1RRR_RYR`R6R^R&t_dummy_counter(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRA#s%cCsd|jjS(NRR(RR3(R#((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRi/s(RRRR%RARi(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyRhs			cCs3g}d}x tt|ƒƒD]}||}idd6}t|ƒdkrl|\|d<|d<|d<n—t|ƒdkr£|\|d<|d<|d<|d	<n`t|ƒd
krê|\|d<|d<|d<|d	<}|j|ƒntdt|ƒfƒ‚|jƒ}	t|	dƒ}
t|	dƒ}t|	dƒ}t|	d	dƒ}
|	jddƒ}|dkrt|	ddƒn|
dk	r”|
}n9|dkrº|	rºd||
f}nd
||
|	f}d||d|f}||d	<||d<|sY|t||ƒt	||ƒt
||ƒt||ƒt||ƒt
||ƒg7}d}n|jt||ƒƒ|dkr”|jt||ƒƒn|dkr|jdƒr|jƒ}|d	cd7<|jdiƒjƒ}||d<|djdƒsd|dd<n|jt||ƒƒqqW|S(NitECBRiRRRiRisUnsupported tuple size %ds
p=%s, k=%ssp=%s, k=%s, %rs
%s #%d: %siRtCTRR(s (shortcut disabled)R)RQ(RDR4tupdatetAssertionErrorRRRR5RKRNRVRZRfRhRERRBR2(RRt	test_datatteststextra_tests_addedRItrowR$R"tp2tp_keytp_plaintexttp_ciphertextt
p_descriptiontp_modeRtnametparams2tctr_params2((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pytmake_block_tests2sd

%%	

	
cCság}xÔtt|ƒƒD]À}||}i}t|ƒdkr_|\|d<|d<|d<n—t|ƒdkr–|\|d<|d<|d<|d<n`t|ƒdkrÝ|\|d<|d<|d<|d<}|j|ƒntdt|ƒfƒ‚|jƒ}t|dƒ}	t|dƒ}
t|dƒ}t|ddƒ}|dk	rV|}
n,|sod	|
|	f}
nd
|
|	|f}
d||d|
f}||d<||d
<|jt||ƒƒ|jt	||ƒƒqW|S(NiRRRiRisUnsupported tuple size %ds
p=%s, k=%ssp=%s, k=%s, %rs
%s #%d: %siR(
RDR4RlRmRRRRERRB(RRRnRoRIRqR$R"RrRsRtRuRvRRx((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pytmake_stream_testsvs8
%%	

((t__doc__t__revision__tsysRtbinasciiRRtCrypto.Util.py3compatt
hexversionRRRRRRBRKRNRVRZRfRhR{R|(((sC/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Cipher/common.pyt<module>s(
X)
	D
Back to Directory File Manager