wec@sudZddlZddlTddlmZmZmZmZmZm Z m Z m Z m Z dej fdYZdej fdYZd ej fd YZd ej fd YZd ej fdYZdej fdYZdej fdYZdej fdYZdej fdYZidZedkrqdZejddndS(sSelf-tests for Crypto.Util.asn1iN(t*( t DerObjecttDerSetOft DerIntegert DerBitStringt DerObjectIdtDerNulltDerOctetStringt DerSequencet DerBooleantDerObjectTestscBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZRS(cCs0|jtttd|jttddS(Nti(t assertRaisest ValueErrorRtb(tself((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testObjInit1.scCsttd}|j|jtdtd|_|j|jtd|j|jtdtd}td|_|j|jtdttddt}|j|jtd dS( NsstEsEisEst constructedt0(RRt assertEqualtencodetpayloadtTrue(Rtder((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjEncode16s cCs5tdtd}|j|jtddS(Niss(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjEncode2GscCsMttd}tdd|_|j|jtddddS(Nst0is(RRRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjEncode3LscCstddddt}td|_|j|jtdtddddt}td|_|j|jtd dS( NitimplicitiRtppllspplliisppll(RRRRRRtFalse(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjEncode4Rs cCsAtddd}td|_|j|jtddS(Nitexplicititxxllsxxll(RRRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjEncode5\scCsOtd}|jtd|j|jtd|j|jddS(Niss(RtdecodeRRRt _tag_octet(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode1ds cCs[td}|jtddd|j|jtdd|j|jddS(Nist1i(RR$RRRR%(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode2ks cCsTtd}|jt|jtdtd}|jt|jtddS(Niss(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode3rs  cCstddtdd}|jt|jtd|jtd|j|jtdtddtdd}|jt|jtd|jtd|j|jtddS( NiRRissts( RRR R R$RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode4zscCs,td}|jt|jtddS(Nis(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode5s cCsLt}|jtd|j|jd|j|jtddS(Nseies(RR$RRR%R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode6s cCstddd}|jtd|j|jd|j|jtdtddd}|jtd|j|jd|j|jtddS(NiR!isxxllR"isxxll(RR$RRt_inner_tag_octetR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode7scCs/td}|j||jtddS(Nis(RRR$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestObjDecode8s (t__name__t __module__RRRRR R#R&R(R)R+R,R-R/R0(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR ,s           tDerIntegerTestscBs}eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d ZRS( cCs,td}|j|jtddS(Nis(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testInit1s cCs|td}|j|jtdtd}|j|jtdtd}|j|jtddS(Nisisis(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode1s    cCs0td}|j|jtdtd}|j|jtdtd }|j|jtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtd dS( Nisisiistt l(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode2s   cCs|td}|j|jtdtd}|j|jtdtd}|j|jtddS(Nisisis(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode3s    cCs2tddd}|j|jtddS(Ni4R!is4(RRRR(Rtnumber((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode4scCst}|jtd|j|jd|jtd|j|jd|jtd|j|jddS(Nsisisi(RR$RRtvalue(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode1s cCs t}|jtd|j|jd|jtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtd|j|jddS( NsisR6R7iil(RR$RRR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode2s cCsYt}|jtd|j|jd|jtd|j|jddS(Nsisi(RR$RRR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode3s  cCst}|jtd|j|jd|jtd|j|jd|jtd|j|jddS(Nsisisi(RR$RRR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode5s cCs9tdd}|jtd|j|jddS(NR!is4i4(RR$RRR<(RR:((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode6)scCs,t}|j||jtddS(Ns(RRR$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode7/s cCs_t}|jd|jd|jt|jddt|jt|jddtdS(Nsststrict(RR$R R R(RR:((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testStrict16s    cCs)t}|jt|jtddS(Ns(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestErrDecode1@s (R1R2R4R5R8R9R;R=R>R?R@RARBRDRE(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR3s       tDerSequenceTestscBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZRS(cCsAtdtdtdg}|j|jtddS(NiiRs 00(RRRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR4Hs!cCst}|j|jtd|j|j|jd|j|jtd|j|jd|j|jtd|j |j|j |jt|j|jtddS(NRis0i( RRRRt assertFalset hasOnlyIntstappendthasIntsRt assertTrue(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR5Ls  cCst}|jdd|d<|jt|d|j|dd|j|dd|j|jtddg|(|jt|d|j|dd|j|jtddS(Niiis0(RRIRtlenRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR8[s    cCs6t}|jd|j|jtddS(Nis0(RRIRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR9js  cCst}|jd|j|jtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtddS(Niis0sR6R7l(RRIRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR;ps   cCsCt}|d7}|td7}|j|jtddS(NiRs00(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode5s  cCst}|jd|jd|j|jtd|j|j|j|jtt}|jd|jd|j|jtd|j|jd|j|jtd|j |j|j|jt|jddd g|d)|jt |d |j|ddd g|j|dd !dg|j|jtd dS( Niis 0iis0ii iiis 0  ( RRIRRRRKRHRRJRGRL(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode6s(       cCs\t}|jd|jtd|j|jtd|j|jdS(Nis0s 0 0(RRIRRRRGRH(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode7s   cCs_t}|jd|jtdg|j|jtd|j|jdS(Niis 0 0(RRIRRRRGRH(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testEncode8s   cCst}|jtd|jt|d|jtd|jt|d|j|dd|jtd|jt|d|j|dddS(NRis0i(RR$RRRL(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR=s cCsJt}|jtd|jt|d|j|dddS(Ns0iii(RR$RRRL(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR>s cCst}|jtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtdtd|jt|d|j|dd dS( Ns0sR6R7iiiil(RR$RRRL(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode4s  cCs^t}|jtd|jt|d|j|dd|j|dddS(Ns 0iiiii(RR$RRRL(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRAs  cCs~t}|jtd|jt|d|j|dd|j|dtd|j|dtddS( Ns 0 $ciiiis$cis(RR$RRRL(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRBs  cCst}|jtd|jt|d|j|dtd|j|dtd|j|jd|j|jtd|j|j|j|jtdS(Ns0$ciis$cis( RR$RRRLRJRRGRH(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode8s cCs,t}|j||jtddS(Ns0$c(RRR$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testDecode9s cCsat}|jt|jtd|jt|jtd|jt|jtddS(NtR*R(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRE s cCs)t}|jt|jtddS(Nt0(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestErrDecode2s cCsat}|jt|jtd|jt|jtd|jt|jtddS(Ns0s0s0(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestErrDecode3s cCstdddgj}tj|ddtj|dd|jttj|dd|jttj|dddS( Niiit nr_elementsii(ii(ii(RRR$R R (Rtder_bin((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttest_expected_nr_elements"s cCstdddgj}tddtddggj}tj|dttj|dttj|dt|jttj|dtdS(Niiiitonly_ints_expected(RRR$RRR R (Rtder_bin1tder_bin2((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttest_expected_only_integers*s '(R1R2R4R5R8R9R;RMRNRORPR=R>RQRARBRRRSRERVRWRZR^(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRFFs*                tDerOctetStringTestscBs5eZdZdZdZdZdZRS(cCs2ttd}|j|jtddS(Nss(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR47scCsTt}|j|jtdtd|_|j|jtddS(Nsss(RRRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR5;s cCset}|jtd|j|jtd|jtd|j|jtddS(NsRTss(RR$RRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR=Es  cCs,t}|j||jtddS(Ns(RRR$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR>Ns cCs)t}|jt|jtddS(Ns(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRESs (R1R2R4R5R=R>RE(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR_5s   t DerNullTestscBseZdZdZRS(cCs)t}|j|jtddS(Ns(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR5Zs cCs,t}|j||jtddS(Ns(RRR$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR=`s (R1R2R5R=(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR`Xs tDerObjectIdTestscBsGeZdZdZdZdZdZdZdZRS(cCs&td}|j|jddS(Ns1.1s)(RRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR4gs cCsptd}|j|jdt}d|_|j|jdtd}|j|jddS(Ns1.2.840.113549.1.1.1s  *H s 2.999.1234s7R(RRRR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR5ks    cCsBtd}|jt|jtd}|jt|jdS(Ns3.4s1.40(RR R R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR8vs  cCs-t}|jd|j|jddS(Ns  *H s1.2.840.113549.1.1.1(RR$RR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR=s  cCs&t}|j||jddS(Ns  *H (RRR$(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR>s  cCs-t}|jd|j|jddS(Ns  *H s1.2.840.113549.1.0.1(RR$RR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR?s  cCs-t}|jd|j|jddS(Ns7Rs 2.999.1234(RR$RR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRQs  ( R1R2R4R5R8R=R>R?RQ(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRaes    tDerBitStringTestscBs5eZdZdZdZdZdZRS(cCs2ttd}|j|jtddS(Nss(RRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR4scCs2ttd}|j|jtddS(Nis(RRRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt testInit2scCst}|j|jtdttd}|j|jtdt}td|_|j|jtddS(Nsss(RRRRR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR5s  cCset}|jtd|j|jtd|jtd|j|jtddS(NsRTss(RR$RRR<(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR=s  cCs,t}|j||jtddS(Ns(RRR$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR>s (R1R2R4RcR5R=R>(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRbs     t DerSetOfTestscBsbeZdZdZdZdZdZdZdZdZ dZ d Z RS( cCs>ttdtdg}|j|jtddS(Niis1(RRRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR4scCsnt}|j|jtd|jd|j|jtd|j|jtddS(Nt1is1(RRRRtadd(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR5s   cCsqt}|jd|jd|j|jtdtddg}|j|jtddS(Niis 1(RRfRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR8s    cCs6t}|jd|jt|jtddS(Nit(RRfR R R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR9s  cCsOt}|jtd|jtd|j|jtddS(Nsss1(RRfRRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR;s cCsxt}|jtd|jt|d|jtd|jt|d|jt|dgdS(NReis1i(RR$RRRLtlist(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR=s  cCsht}|jtd|jt|dt|}|jd|k|jd|kdS(Ns 1iii(RR$RRRLRhRK(RRtl((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR>s   cCs)t}|jt|jtddS(Ns 0 $c(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR?s cCs,t}|j||jtddS(Ns 1(RRR$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRQs  cCs)t}|jt|jtddS(Ns 1(RR R R$R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyREs ( R1R2R4R5R8R9R;R=R>R?RQRE(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRds    tDerBooleanTestscBsbeZdZdZdZdZdZdZdZdZ dZ d Z RS( cCs&tt}|j|jddS(Ns(R RRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR5s cCs&tt}|j|jddS(Ns(R RRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR8s cCs,ttdd}|j|jddS(NRis(R RRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR9scCs,ttdd}|j|jddS(NR!is(R RRR(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR;scCs-t}|jd|j|jtdS(Ns(R R$RR<R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR="s  cCs-t}|jd|j|jtdS(Ns(R R$RR<R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR>'s  cCs3tdd}|jd|j|jtdS(NRis(R R$RR<R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyR?,s cCs3tdd}|jd|j|jtdS(NR!is(R R$RR<R(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRQ1s cCs#t}|jt|jddS(Ns(R R R R$(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestErrorDecode16s cCs#t}|jt|jddS(Ns(R R R R$(RR((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyttestErrorDecode2;s ( R1R2R5R8R9R;R=R>R?RQRkRl(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyRjs         cCsddlm}g}||t7}||t7}||t7}||t7}||t7}||t7}||t7}||t 7}||t 7}|S(Ni(tlist_test_cases( tCrypto.SelfTest.st_commonRmR R3RFR_R`RaRbRdRj(tconfigRmt listTests((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt get_testsAst__main__cCstjtS(N(tunittestt TestSuiteRq(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pytPst defaultTesttsuite(t__doc__RstCrypto.Util.py3compattCrypto.Util.asn1RRRRRRRRR tTestCaseR R3RFR_R`RaRbRdRjRqR1Rwtmain(((sD/usr/lib64/python2.7/site-packages/Crypto/SelfTest/Util/test_asn1.pyt"s   @x# 1'R2