ó ñ1Mc@s4dZddlZddlZyddlmZWn!ek rUddlmZnXddlmZmZddl m Z ddl Td.Z d/Z d0Zd d1d „ƒYZd efd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZied!6ed"6ed#6ed$6ed%6ed&6ed'6ed(6ed)6d!e6d"e6d#e6d$e6d%e6d&e6d'e6d(e6d)e6Zd*d2d+„ƒYZd,„Zd-„ZdS(3seM2Crypto PGP2. This module implements PGP packets per RFC1991 and various source distributions. Each packet type is represented by a class; packet classes derive from the abstract 'packet' class. The 'message digest' packet type, mentioned but not documented in RFC1991, is not implemented. Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.iÿÿÿÿN(tStringIO(tEVPtRSA(t octx_to_num(t*sststpacketcBs\eZd d„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z RS( cCsPddl}|jdtƒ||_|dk rCt|ƒ|_n d|_dS(NiÿÿÿÿsVDeprecated. No maintainer for PGP. If you use this, please inform M2Crypto maintainer.(twarningstwarntDeprecationWarningtctbtNoneRtbody(tselfR R R((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyt__init__%s    cCsdS(Ni((R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytvalidate/scCstd|jf‚dS(Ns%s.pack(): abstract method(tNotImplementedErrort __class__(R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytpack2scCs$t|dƒrt|jƒSdSdS(Nt_version(thasattrtordRR (R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytversion5s cCs.t|dƒr&tjd|jƒdSdSdS(Nt _timestamps>Li(RtstructtunpackRR (R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyt timestamp;scCs.t|dƒr&tjd|jƒdSdSdS(Nt _validitys>Hi(RRRRR (R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytvalidityAscCst|dƒr|jSdSdS(Nt_pkc(RRR (R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytpkcGscCsj|dkrdt|ƒfS|dkr>dtjd|ƒfS|d ksPt‚dtjd |ƒfSdS( Niiiis>Hli is>Ll(tchrRRtAssertionError(R tlenf((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyt_llfMs   cCs#t|j}td|d>B|BƒS(Niiii€(t_FACTORYRR(R tllftctbv((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyt_ctbVs N( t__name__t __module__R RRRRRRRR"R&(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR$s       tpublic_key_packetcBs&eZdd„Zd„Zd„ZRS(cCstj|||ƒ|jdk r|jjdƒ|_|jjdƒ|_|jjdƒ|_|jjdƒ|_|jjdƒ|_ t j d|j ƒddd}|jj|ƒ|_ |jjdƒ|_ t j d|j ƒddd}|jj|ƒ|_ndS(Niiis>Hiii(RRR R treadRRRRt_nlenRRt_nt_elent_e(R R R tnlentelen((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR\s!!cCs |jdkr¶tƒ|_|jj|jƒ|jj|jƒ|jj|jƒ|jj|jƒ|jj|jƒ|jj|j ƒ|jj|j ƒ|jj|j ƒn|jj ƒ|_|j t|jƒƒ\}}|j|ƒ}d|||jfS(Ns%s%s%s(R R RtwriteRRRRR+R,R-R.tgetvalueR"tlenR&(R R$R!R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRls cCs |jjƒS(N(t_pubkeytpub(R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytpubkey|sN(R'R(R RRR6(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR)[s  t trust_packetcBseZdd„ZRS(cCs;tj|||ƒ|dk r7|jjdƒ|_ndS(Ni(RRR R R*ttrust(R R R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR‚s N(R'R(R R(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR7€st userid_packetcBs&eZdd„Zd„Zd„ZRS(cCs/tj|||ƒ|dk r+||_ndS(N(RRR t_userid(R R R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR‰s cCsp|jdkrbtƒ|_|jjtt|jƒƒƒ|jj|jƒ|jjƒ|_n|j|jS(N( R R RR1RR3R:R2R (R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRŽs  cCs|jS(N(R:(R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytuserid–sN(R'R(R RRR;(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR9ˆs  tcomment_packetcBseZdd„Zd„ZRS(cCs8tj|||ƒ|dk r4|jjƒ|_ndS(N(RRR R R2tcomment(R R R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR›s cCsp|jdkrbtƒ|_|jjtt|jƒƒƒ|jj|jƒ|jjƒ|_n|j|jS(N( R R RR1RR3R=R2R (R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR s  N(R'R(R RR(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR<šs tsignature_packetcBs&eZdd„Zd„Zd„ZRS(cCsàtj|||ƒ|dk rÜ|jjdƒ|_|jjdƒ|_|jjdƒ|_|jjdƒ|_|jjdƒ|_ |jjdƒ|_ |jjdƒ|_ |jjdƒ|_ |jjƒ|_ ndS(Niiii(RRR R R*Rt _len_md_stufft_classificationRt_keyidRt_md_algot _md_chksumt_sig(R R R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRªs cCs|jdkrÛtƒ|_|jj|jƒ|jj|jƒ|jj|jƒ|jj|jƒ|jj|jƒ|jj|j ƒ|jj|j ƒ|jj|j ƒ|jj|j ƒ|jj ƒ|_n|jttƒƒ\}}|j|B|_d|j||jfS(Ns%s%s%s(R R RR1RR?R@RRARRBRCRDR2R"R3R (R R$R!((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR·s cCs*|jtkrdS|jdkr&dSdS(Ns(Rt _OK_VERSIONR R?(R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRÉsN(R'R(R RRR(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR>©s tprivate_key_packetcBseZdd„Zd„ZRS(cCsïtj|||ƒ|dk rë|jjdƒ|_|jjdƒ|_|jjdƒ|_|jjdƒ|_|jjdƒ|_ t j d|j ƒddd}|jj|ƒ|_ |jjdƒ|_ t j d|j ƒddd}|jj|ƒ|_|jjdƒ|_|jdkrE|jjdƒ|_n d|_x‚d d d d gD]n}|jjdƒ}t|d |d|ƒt j d|ƒddd}t|d ||jj|ƒƒqaW|jjdƒ|_ndS(Niiis>Hiiistdtptqtut_R3(RRR R R*RRRRR+RRR,R-R.t_ciphert_ivtsetattrt_cksum(R R R R/R0tparamt_plentplen((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRÑs, !! $cCs t|jƒS(N(RRL(R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyt is_encryptedïsN(R'R(R RRS(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRFÐs t cke_packetcBseZdd„ZRS(cCsbtj|||ƒ|dk r^|jjdƒ|_|jjdƒ|_|jjƒ|_ndS(Nii(RRR R R*RMROt_ctxt(R R R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRôs  N(R'R(R R(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRTóst pke_packetcBseZdd„ZRS(cCs°tj|||ƒ|dk r¬|jjdƒ|_|jjdƒ|_t|jjdƒƒ|_t j d|jjdƒƒddd}t |jj|ƒƒ|_ ndS(Niis>Hiii( RRR R R*RRARRRRRt_dek(R R R tdeklen((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRýs *N(R'R(R R(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRVüstliteral_packetcBseZdd„ZRS(cCswtj|||ƒ|dk rs|jjdƒ|_|jjdƒ}|jj|ƒ|_|jjdƒ|_ndS(Nii(RRR R R*tfmodetfnametftime(R R R tfnlen((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR s  N(R'R(R R(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRYstcompressed_packetcBs#eZd„Zd„Zd„ZRS(cCsGtj||dƒtdk rC|jdƒ|_|jƒ|_ndS(Nti(RRR R R*talgotdata(R R tstream((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRs cCs |jdkS(Ns(R`(R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRscCs7ddl}|jdƒ}t|j|jƒƒ}|S(Niÿÿÿÿióÿÿÿ(tzlibt decompressobjRt decompressRa(R RctdecompRb((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyt uncompresss (R'R(RRRg(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR^s  iiiii i i i it packet_streamcBs/eZd„Zd„Zdd„Zd„ZRS(cCs||_d|_d|_dS(Ni(RbR t under_currentt_count(R tinput((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRAs  cCs0|jjƒ|jdk r,|jjƒndS(N(RbtcloseRiR (R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRlFs ic Cs½xM|jjdƒ}|sdSt|ƒ}t|ƒr;Pq|rGqqt‚q|d@d?}|tkr¡|j|_t||jƒ}|j ƒ|_|jƒS|d@}|dkrÒt|jjdƒƒ}nk|dkrt j d|jjdƒƒd}n:|dkr4t j d|jjdƒƒd}n td ‚|jj|ƒ}| sht |ƒ|krttd ‚n|jj ƒ|_yt|||ƒSWntk r¸t||ƒSXdS( Nii<iiis>Hs>Lisimpossible casescorrupted packet(RbR*R Rtis_ctbtXXXErrortCTB_COMPRESSED_DATARiR^RgRRR3ttellRjR#tKeyErrorR( R t keep_tryingtctb0R tctbttcpR$R!R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyR*Ks@         % %   cCs|jS(N(Rj(R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytcountts(R'R(RRlR*Rv(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRh@s   )cCs|d@S(NiÀ((R ((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyRmwscCstd|d>B|BƒS(Niiii€(R(tvalueR$((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pytmake_ctbzs(ss(s(s(((t__doc__Rttimet cStringIORt ImportErrortM2CryptoRRt M2Crypto.utilRt constantsREt _OK_VALIDITYt_OK_PKCRR)R7R9R<R>RFRTRVRYR^R#RhRmRx(((s9/usr/lib/python2.7/vendor-packages/M2Crypto/PGP/packet.pyt sX  7%'#    7