PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib/python2.7/site-packages/yum
Viewing File: /usr/lib/python2.7/site-packages/yum/pgpmsg.pyc
� � v_c@sbddlZddlZddlZddlZddlZyddlZWn<ek r�ddlZddlZdfd��YZnXe Z dZ dZ dZ dZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZ ide6de6de6de6de6de6de6d e6d!e6d"e6d#e6d$e6d%e6d&e6d'e6d(e6d)e 6Z!d Z"d*Z#dZ$d Z%d Z&dZ'd Z(d Z)d+Z*dZ+dZ,dZ-d,Z.d-Z/i d.e'6d/e(6d0e)6d1e*6d2e+6d3e,6d4e-6d5e.6d6e/6Z0d*Z1dZ2d Z3d Z4d Z5d Z6d Z7dZ8dZ9dZ:dZ;i d7e16d8e26d9e36d:e46d;e56d<e66d=e76d>e86d?e96d@e:6dAe;6Z<d*Z=dZ>d Z?d Z@idBe=6dCe>6dDe?6dEe@6ZAdZBd ZCd ZDd ZEd ZFd ZGdZHdZIdZJdZKdZLi dFeB6dGeC6dHeD6dIeE6dJeF6dKeG6dLeH6dMeI6dNeJ6dOeK6dPeL6ZMd*ZNdZOd ZPd+ZQdZRdZSdZTdQZUdRZVdSZWdTZXdUZYdVZZi dWeN6dXeO6dYeP6dZeQ6d[eR6d\eS6d]eT6d^eU6d_eV6d`eW6daeX6dbeY6dceZ6Z[d Z\d Z]d Z^d Z_d Z`dZadZbdZcdZddZed+Zfd,Zgd-ZhddZideZjdQZkdfZldgZmdhZndiZodjZpdkZqdRZrdSZsidle\6dme]6dne^6doe_6dpe`6dqea6dreb6dsec6dted6duee6dvef6dweg6dxeh6dyei6dzej6d{ek6d|el6d}em6d~en6deo6d�ep6d�eq6d�er6d�es6Ztd*ZudZvd Zwd ZxdSZyid�eu6d�ev6d�ew6d�ex6d�ey6ZzdZ{d Z|d Z}dZ~d+ZdZ�dZ�dVZ�dZ�id�e�6Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d�e�fd���YZ�d�e�fd���YZ�d�e�fd���YZ�d�e�fd���YZ�d�e�fd���YZ�d�e�fd���YZ�d��Z�d��Z�d��Z�e�d��Z�d��Z�e�d�kr^ddl�Z�x,e�e�e�j�d�j���D] Z�e�GHqLWndS(�i����NthashlibcBseZed��ZRS(cCs9|dkrtj�S|dkr,tj�Std�dS(Ntmd5tsha1sBad checksum type(Rtnewtshat ValueError(talgo((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR#s     (t__name__t __module__t staticmethodR(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR!si�i�i<i?iiiiiiiii i i i i iiiis#public-key encrypted session packetssignature packets&symmetric-key encrypted session packetsone-pass signature packetssecret-key certificate packetspublic-key certificate packetssecret-key subkey packetscompressed data packets#symmetric-key encrypted data packets marker packetsliteral data packets trust packetsuser id packetspublic subkey packetsuser attribute packets$symmetric encrypted integrity packets"modification detection code packetiiiisRSA (Encrypt or Sign)sRSA Encrypt-Onlys RSA Sign-OnlysElgamal Encrypt-Onlys DSA (Digital Signature Standard)sElliptic CurvetECDSAsElgamal (Encrypt or Sign)sDiffie-HellmansPlaintext or unencrypted datatIDEAs Triple-DEStCAST5tBlowfishs SAFER-SK128sDES/SKs AES 128-bits AES 192-bits AES 256-bitsTwofish 256-bitt UncompressedtZIPtZLIBtBZip2tMD5tSHA1t RIPEMD160sdouble-width SHAtMD2tTIGER192s HAVAL-5-160tSHA256tSHA384tSHA512tSHA224iii i(i0i@s document signature, binary images"document signature, canonical textssignature over just subpacketss;public key packet and user ID packet, generic certifications-public key packet and user ID packet, personas:public key packet and user ID packet, casual certifications<public key packet and user ID packet, positive certificationssubkey bindings key signatureskey revocationssubkey revocationscertificate revocationt timestampiiiiiiiissignature creation timessignature expiration timesexportable certificationstrust signaturesregular expressiont revocableskey expiration times&placeholder for backward compatibilityspreferred symmetric algorithmssrevocation keys issuer key IDs notation dataspreferred hash algorithmss preferred compression algorithmsskey server preferencesspreferred key serversprimary user ids policy URIs key flagsssigner's user idsreason for revocationtfeaturesssignature targetsembedded signaturesNo reason specifiedsKey is supercededsKey has been compromisedsKey is no longer useds&user id information is no longer validsModification DetectioncCsld}xY|dkratjd|||d!�d}|dt|�}|d}|d}q W||fS(s�get_whole_number(msg, idx, numlen) extracts a "whole number" field of length numlen from msg at index idx returns (<whole number>, new_idx) where the whole number is a long integer and new_idx is the index of the next element in the messagelitBil(tstructtunpacktlong(tmsgtidxtnumlentntb((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytget_whole_number:s! cCs(t|||�\}}t|�|fS(siget_whole_int(msg, idx, numlen) same as get_whole_number but returns the number as an int for convenience(R'tint(R"R#R$R%((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt get_whole_intGscCsPg}x:|dkrB|jdtjd|d@��|dL}q Wdj|�S(sKpack_long(l) returns big-endian representation of unsigned long integeriRi�it(tinsertRtpacktjoin(tltarr((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt pack_longMs  cCs�t|�}t|�dd}t|�dkrlt|d�}x-|dkrh|d7}|dL}qEWnd}tjd|�|S(s_pack_mpi(l) returns the PGP Multi-Precision Integer representation of unsigned long integeriiis>H(R0tlentordRR,(R.tstbitsR%((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytpack_mpiVs  cCs|t||d�\}}|dkr.||fS|dkrlt||d�\}}|dd>|d|fSt||d�S(sfget_sig_subpak_len(msg, idx) extracts a signature subpacket length field returns (subpak_len, new_idx)ii�i�ii(R)(R"R#tplentplen2((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytget_sig_subpak_lenfs   cCs7t||d�\}}|ft|||dd�S(sget_mpi(msg, idx) extracts a multi-precision integer field from the message msg at index idx returns (n, <mpi>, new_idx) where the mpi is a long integer and new_idx is the index of the next element in the message and n is the number of bits of precision in <mpi>iii(R)R'(R"R#tln((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt get_n_mpirscCs!t||�}|d|dfS(s�get_mpi(msg, idx) extracts a multi-precision integer field from the message msg at index idx returns (<mpi>, new_idx) where the mpi is a long integer and new_idx is the index of the next element in the messageii(R:(R"R#R.((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytget_mpi{scCsdjtd�t|���S(NR*cSstt|��djd�S(Ni(thexR2tzfill(tx((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt<lambda>�s(R-tmaptlist(R3((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt str_to_hex�scCsf|dkrdS|d}|d}|d}|d}|d}|d}|}d||||fS(Nitneveri<is%d days %02d:%02d:%02d((R3tsecstminsthrstdays((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytduration_to_str�s       cCs�g}t|�tjkrBt|�tjkrBt|f�}nxI|D]A}||kro|j||�qI|jdt|�d�qIWdj|�S(Nsunknown(t)s, (ttypettypestListTypet TupleTypeRAtappendtstrR-(tmtvalstslistti((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt map_to_str�s*  t pgp_packetcBseZd�Zd�ZRS(cCs d|_dS(N(tNonetpkt_typ(tself((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt__init__�scCstt|j�S(N(RTtctb_pkt_to_strRW(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt__str__�s(RRRYR[(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRU�s t public_keycBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs5tj|�d|_d|_d|_d|_dS(Ni(RURYRVtversiontpk_algotkey_sizet fingerprint_(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRY�s     cCs�|jr|jS|jdkrltjd�}|jt|j��|jt|j��|j�|_n�|jdkr�tjd�}|jd�|j �}|jt j dt |���|j|�|j�|_nt d|j��|jS(NiRiRs�s>Hsunknown public key version %d(R`R]RRtupdateR0t pk_rsa_modt pk_rsa_exptdigestt serializeRR,R1t RuntimeError(RXthtbuf((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt fingerprint�s     cCsA|jdkr t|jd@�S|jdkr=|j�dSdS(Nil����ii����(R]R0RbRi(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytkey_id�scCs�g}|jdkrx|jtjd|jt|j�|j|j��|jt|j ��|jt|j ��nm|jdkr�|jtjd|jt|j�|j��|jt ks�|jt kr|jt|j ��|jt|j ��q�|jt krl|jt|j��|jt|j��|jt|j��|jt|j��q�|jtks�|jtkr�|jt|j��|jt|j��|jt|j��q�td|j��ndj|�S(Nis>BIHBis>BIBsunknown public key algorithm %dR*(R]RNRR,R(RtvalidityR^R5RbRctALGO_PK_RSA_ENC_OR_SIGNtALGO_PK_RSA_SIGN_ONLYt ALGO_PK_DSAtpk_dsa_prime_ptpk_dsa_grp_ord_qtpk_dsa_grp_gen_gtpk_dsa_pub_keytALGO_PK_ELGAMAL_ENC_OR_SIGNtALGO_PK_ELGAMAL_ENC_ONLYtpk_elgamal_prime_ptpk_elgamal_grp_gen_gtpk_elgamal_pub_keyRfR-(RXtchunks((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRe�s*4.cCsb|}t||d�\|_}|jdkrj|jdkrj|jdkrjtd|j|f��n|jdkr�d|_nt||d�\|_}t|j�|_|jdkr�t||d�\|_}nt||d�\|_}|jtks|jt krQt ||�\|_ |_ }t ||�\|_}n |jtkr�t ||�\}|_}t ||�\|_}t ||�\|_}t ||�\}|_}|||_ n�|jtks�|jtkrEt ||�\|_ |_}t ||�\|_}t ||�\|_}ntd|j|f��dS(Niiiis*unknown public key packet version %d at %ds%unknown public key algorithm %d at %d(R)R]RfR'RtfloatRkR^RlRmR:R_RbR;RcRnRoRpRqRrRsRtRuRvRw(RXR"R#tpkt_lentidx_savetl1tl2((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt deserialize�s2- cCs3tj�}|jtj|�d�|jdt|j�d�|jdtj|j �d�|jdkr�|jdtj|j |j ddd�d�n|jdt |j d�|j t ks�|j tkr$|jd t|j�d�|jd t|j�d�n|j tkr�|jd t|j�d�|jd t|j�d�|jd t|j�d�|jdt|j�d�n{|j tks�|j tkr)|jdt|j�d�|jdt|j�d�|jdt|j�d�n|j�S(Ns s version: s timestamp: is validity: ii<s pubkey algo: s pk_rsa_mod: s pk_rsa_exp: spk_dsa_prime_p: spk_dsa_grp_ord_q: spk_dsa_grp_gen_g: spk_dsa_pub_key: spk_elgamal_prime_p: spk_elgamal_grp_gen_g: spk_elgamal_pub_key: (t cStringIOtStringIOtwriteRUR[ROR]ttimetctimeRRktalgo_pk_to_strR^RlRmR<RbRcRnRoRpRqRrRsRtRuRvRwtgetvalue(RXtsio((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR[s( !7!!!(RRRYRiRjReR~R[(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR\�s      tuser_idcBs#eZd�Zd�Zd�ZRS(cCstj|�d|_dS(N(RURYRVtid(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRYs cCs||||!|_dS(N(R�(RXR"R#Rz((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR~scCs tj|�dd|jdS(Ns sid: (RUR[R�(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR[s(RRRYR~R[(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR�s  tuser_attributecBs#eZd�Zd�Zd�ZRS(cCs#tj|�d|_d|_dS(N(RURYRVtsub_typetdata(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRY#s  cCs=t||d�\|_}|d}||||!|_dS(Ni(R)R�R�(RXR"R#Rz((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR~(s cCs3tj|�ddt|j�dt|j�S(Ns s sub_type: s data: (RUR[ROR�RBR�(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR[-s(RRRYR~R[(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR�"s  t signaturecBskeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z d �Z RS( cCs>tj|�d|_d|_d|_d|_d|_dS(N(RURYRVR]tsig_typeR^t hash_algot hash_frag(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRY1s      cCsX|jdkr|jS|jt�}|r3|dS|jt�}|rP|dSdSdS(Nii(R]tkey_id_tget_hashed_subpaktSIG_SUB_TYPE_ISSUER_KEY_IDtget_unhashed_subpakRV(RXRS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRj9scCs1|jdkr|jS|jt�}|dSdS(Nii(R]RR�tSIG_SUB_TYPE_CREATE_TIME(RXRS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt creation_timeEscCs?|jdkrtd��n|jt�}|r;|dSdS(Nis$v3 signatures don't have expirationsii(R]RR�tSIG_SUB_TYPE_KEY_EXPIRE(RXRS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt expirationLs cCs,x%|jD]}|d|kr |Sq WdS(Ni(thashed_subpaksRV(RXttypRS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR�TscCs,x%|jD]}|d|kr |Sq WdS(Ni(tunhashed_subpaksRV(RXR�RS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR�Zsc& Cs|t||�\}}t||d�\}}|tkrgt||d�\}}|t|�f|fS|tks|tkr�t||d�\}}||f|fS|tks�|tkr�t||d�\}}||f|fS|t kr6t||d�\}}t||d�\} }||| f|fS|t kru||||d!} ||d}|| f|fS|t ks�|t ks�|t ks�|tkr�td�t||||d!��} ||d}|| f|fS|tkrWt||d�\} }t||d�\} }|||d!}|d}|| | |f|fS|tkr�|||d!}|d}||f|fS|tkrt||d�\}}t||d�\}}t||d�\}}t||d�\}}t||d�\}}t||d�\}}||||!}||}||||!}||}|||||||f|fS|tkr�g||||d!D]}t|�^q�}||d}||f|fS|tkr||||d!}||d}||f|fS|tkrJt||d�\}}||f|fS|tkr�||||d!}||d}||f|fS|tkr�||||d!}||d}||f|fS|tkr$t||d�\}}|d}||||!}||}|||f|fS|tkr�|d}|g} x?|dkr�t||d�\}!}| j|!�|d}qFWt| �|fS|tkr t||d�\}"}t||d�\}#}||||d!}$||d}||"|#|$f|fS|tkrI||||d!}%||d}||%f|fS||||d!}%||d}||%f|fS( NiicSs t|�S(N(R2(R>((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR?usiiiii( R8R)R�R'RytSIG_SUB_TYPE_EXPIRE_TIMER�tSIG_SUB_TYPE_EXPORT_CERTtSIG_SUB_TYPE_REVOCABLEtSIG_SUB_TYPE_TRUST_SIGtSIG_SUB_TYPE_REGEXPtSIG_SUB_TYPE_PREF_SYMM_ALGOtSIG_SUB_TYPE_PREF_HASH_ALGOtSIG_SUB_TYPE_PREF_COMP_ALGOtSIG_SUB_TYPE_KEY_FLAGSR@RAtSIG_SUB_TYPE_REVOKE_KEYR�tSIG_SUB_TYPE_NOTATIONtSIG_SUB_TYPE_KEY_SRV_PREFR2tSIG_SUB_TYPE_PREF_KEY_SRVRtSIG_SUB_TYPE_PRIM_USER_IDtSIG_SUB_TYPE_POLICY_URItSIG_SUB_TYPE_SGNR_USER_IDtSIG_SUB_TYPE_REVOKE_REASONtSIG_SUB_TYPE_FEATURESRNttupletSIG_SUB_TYPE_SIG_TARGETtSIG_SUB_TYPE_EMBEDDED_SIG(&RXR"R#tsublentsubtypettmR3tboolt trust_lvlt trust_amttexprt algo_listtclsRtfprinttk_idtflg1tflg2tflg3tflg4tname_lentval_lentnamtvalR>tprefsturlturit signer_idtrev_codetreas_lentreasR.tocttpublic_key_algoR�thashtdat((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytdeserialize_subpacket`s�   0'        .             cCs0x)|jD]}|dtkr |dSq WdS(spis_primary_user_id() returns true if this signature contains a primary user id subpacket with value trueii(R�R�(RXRS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytis_primary_user_id�s c Cs|dtkr%dtj|d�S|dtkrGdt|d�S|dtkrl|dredSdSn|dtkr�|ddkr�dS|ddkr�d|d S|dd kr�d |d Sd |d|d fS|dtkr�d |dS|dtkr|drd SdSn|dt krAdt|d�S|dt krfdt t |d�S|dt kr�d}|dt@r�|d}n|t t|d �dt|d�S|dtkr�dt|d�S|dtkr�d|dS|dtkr!dt t|d�S|dtkrFdt t|d�S|dtkr�d}g}|ddd@r�|jd�n|dj|�S|dtkr�d|dS|dtkr�|dr�dSdSn|dtkr�d |dS|dtkr�g}d}t|d�dkr5|dd}n|t@rO|jd!�n|t @ri|jd"�n|t!@r�|jd#�n|t"@r�|jd$�n|t#@r�|jd%�n|t$@r�|jd&�nd'dj|�S|dt%kr�d(|dS|dt&kr6t'j(|dd)�}d*||d fS|dt)krg}t|�dkr�|d}|t*@r�|jd+�n|t*@}|dkr�|jd,|�q�nx<t+d t|��D]%} |jd-| d|| f�q�Wd.dj|�Sd/|dt|d�fS(0Niscreation time: issignature expires: ssignature exportable: TRUEssignature exportable: FALSEstrust: ordinarystrust: introducer (%d)istrust: meta-introducer (%d)s trust: %d %dsregexp: ssignature revocable: TRUEssignature revocable: FALSEs key expires: s preferred symmetric algorithms: srevocation key: s (sensitive) t isissuer key id: s2notation: flags(%d, %d, %d, %d) name(%s) value(%s)spreferred hash algorithms: s"preferred compression algorithms: skey server preferences: i�s No-modifys, spreferred key server: %ssis primary user idsis not primary user idspolicy url: %ssmay certify other keyss may sign datasmay encrypt communicationssmay encrypt storages4private component may have been secret-sharing splits group keys key flags: s signer id: R*sreason for revocation: %s, %ssModification Detections[0]=0x%xs [%d]=0x%xs features: sunknown(%d): %s(,R�R�R�R�RHR�R�R�R�R�R�RTtalgo_sk_to_strR�tREVOKE_KEY_CLASS_SENSR�RBR�R�R�talgo_hash_to_strR�talgo_comp_to_strR�RNR-R�R�R�R�R1tKEY_FLAGS1_MAY_CERTIFYtKEY_FLAGS1_MAY_SIGNtKEY_FLAGS1_MAY_ENC_COMMtKEY_FLAGS1_MAY_ENC_STRGtKEY_FLAGS1_PRIV_MAYBE_SPLITtKEY_FLAGS1_GROUPR�R�trevoke_reason_to_strtgetR�tPGP_FEATURE_1_MOD_DETECTtrange( RXtspR3R�tflagstflgs1R�RR�RS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytsubpacket_to_str�s�      '               #cCs�t||d�\|_}|jdkr6d|_n|jdkr�t||d�\}}t||d�\|_}t||d�\|_}t|j�|_|||d!|_|d}t||d�\|_}t||d�\|_}nH|jdkr+t||d�\|_}t||d�\|_}t||d�\|_}t||d�\}}||}g|_ x8||kr�|j ||�\}}|j j |�q�Wt||d�\}}||}g|_ xT||kr'|j ||�\}}|j j |�q�Wnt d|j|f��t||d�\|_}|jtks}|jtkr�t||�\|_}n[|jtkr�t||�\|_}t||�\|_}nt d|j|f��|S(Niiiiis)unknown signature packet version %d at %ds4unknown public-key algorithm (%d) in signature at %d(R)R]R'R�RRyR�R^R�R�R�RNR�RfR�RlRmR;trsa_sigRnt dsa_sig_rt dsa_sig_s(RXR"R#Rzthash_lent sub_paks_lent sub_paks_endR�((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR~'sJ      cCs,tj�}|jtj|�d�|jdt|j�d�|jdt|jd�|jdkr�|jdt j |j �d�|jdt |j �d�n�|jdkrA|jd�x/|jD]$}|jd |j|�d�q�W|jd �x2|jD]$}|jd |j|�d�qWn|jd t|jd�|jd t|j�d�|jtks�|jtkr�|jd �|jdt|j�d�n[|jtkr"|jd�|jdt|j�d�|jdt|j�d�n|j�S(Ns s version: stype: is timestamp: skey_id: ishashed subpackets: s sunhashed subpackets: s hash_algo: s hash_frag: s pk_algo: RSA s rsa_sig: s pk_algo: DSA s dsa_sig_r: s dsa_sig_s: (RR�R�RUR[ROR]tsig_type_to_strR�R�R�RRBR�R�R�R�R�R�R<R�R^RlRmR�RnR�R�R�(RXR�RS((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR[Ps0 !! " % ! !( RRRYRjR�R�R�R�R�R�R�R~R[(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR�0s      `  _ )tpgp_certificatecBsJeZd�Zd�Zd�Zee�Zd�Zd�Zd�Z RS(cCs1d|_d|_g|_g|_d|_dS(Ni����(RVR]R\t revocationstuser_idstprimary_user_id(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyRYps     cCsAtj�}|jd|j�|jdt|jj���|jd|j�|jt|j��xT|j D]I}|jt|d��x)|dD]}|jdt|��q�WqtWt |d�r7xd|j D]V}|jd�|jt|d��x)|dD]}|jdt|��qWq�Wn|j �S( NsPGP Public Key Certificate v%d s Cert ID: %s sPrimary ID: %s iis t user_attrsR�( RR�R�R]RBR\RjR�ROR�thasattrR�R�(RXR�tuidtsigtuattr((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR[ws    "cCs|j|jdjS(Ni(R�R�R�(RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt get_user_id�scCs�|jdkrE|jjdkr%dS|jj|jjdddS|jd}xK|dD]?}|jtkr]|j�}|dkr�dS|jj|Sq]WdSdS(Niiii<i(R]R\RkRR�R�tSIG_TYPE_PK_USER_GENR�(RXtu_idRStexp((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR��s    cCsdS(Ni((RX((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR_�sc Cs5|djtkr6tdtt|dj���n|d|_|jj|_|jdkr8d}x�||jtkr||jdkr�td||j��n||jt kr�tdtt ||j���n|j j ||�|d}qjWx�|t |�kr4||jtkrlt |j�dkrhtd|tt||j�f��qlPn||g}|d}d}d}x�|t |�kr ||jtkr ||jtttttfkrtd|tt ||j�f��n|j ||�|d}q�W|jj |�qWn�d}g|_g|_g|_g|_|jj�}x�|t |�krG||jtkrG||jd kr�td ||j��n||jt kr�|j j ||�nJ||jtkr|jj ||�n td tt ||j���|d}qtWd}x�|t |�kr�||jtkr�||g}d}d}|d}x�|t |�kr�||jtkr�||jtttttfkr td|tt ||j�f��n|j ||�||j�|kr�||j�r�||j�}||kr}t |j�|_|}q}q�n|d}q�W|jj |�qQ||jtkrv||g} d}|d}x�|t |�krb||jtkrb||jtttttfkrDtd |tt ||j�f��n| j ||�|d}q�W|jj | �qQ||jtkr�||g} |d}d}|t |�kr||jtkr||jt krd}| j ||�|d}n|t |�kr+td |d��n||jtksQ||jt!krztd|tt ||j�f��n| j ||�|d}|r�|jj | �q�|jj | �qQ||jtkr�|j j ||�|d}qQPqQWt |j�dkr1tdt"|jj����n|S(s�load(pkts) Initialize the pgp_certificate with a list of OpenPGP packets. The list of packets will be scanned to make sure they are valid for a pgp certificate.is6first PGP packet should be a public-key packet, not %siis'version 3 cert has version %d signatures"v3 cert revocation sig has type %ss#pgp packet %d is not user id, is %ss/signature %d doesn't bind user_id to key, is %sis'version 4 cert has version %d signaturesZv4 cert signature has type %s, supposed to be revocation signature or direct key signatures1signature %d doesn't bind user_attr to key, is %ss2subkey at index %d was not followed by a signatures3signature %d doesn't bind subkey to key, type is %ss,no user id packet was present in the cert %s(#RWtCTB_PKT_PK_CERTRRTRZR\R]t CTB_PKT_SIGR�tSIG_TYPE_KEY_REVOKER�R�RNR1tCTB_PKT_USER_IDR�R�tSIG_TYPE_PK_USER_PERtSIG_TYPE_PK_USER_CAStSIG_TYPE_PK_USER_POStSIG_TYPE_CERT_REVOKEtdirect_key_sigstsubkeyst rvkd_subkeysR�Rjt SIG_TYPE_KEYR�R�R�tCTB_PKT_USER_ATTRtCTB_PKT_PK_SUBtSIG_TYPE_SUBKEY_REVOKEtSIG_TYPE_SUBKEY_BINDRB( RXtpktstpkt_idxR�t is_revokedR�tcert_idtprim_user_id_sig_timetctt user_attrtsubkey((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytload�s�# #)  (")    (   (")   (")  8 &)  "( RRRYR[R�tpropertyR�R�R_R(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR�os      cCs�t||d�\}}|t@tkr�d}|t@tkrGd}n|t@tkr`d}n|t@tkryd}n|t@tkr�d}nd}|dkr�t|||�\}}n|t@d?||fS|t@t kr�t||d�\}}|dkr|t @||fS|dkr^t||d�\}}|t @|dd>|d|fS|dkr�t||d�\}}|t @||fSt d |�nt d ||f�d S( sget_ctb(msg, idx) extracts a the "cypher type bit" information from message msg at index idx returns (type, len, new_idx) where type is the enumerated type of the packet, len is the length of the packet, and new_idx is the index of the next element in the messageiiiii�i�ii�s=partial message bodies are not supported by this version (%d)s4unknown (not "normal") cypher type bit %d at byte %dN( R)t CTB_76_MASKt CTB_76_NORMALtCTB_PKT_LEN_MASKt CTB_PKT_LEN_1t CTB_PKT_LEN_2t CTB_PKT_LEN_4tCTB_PKT_LEN_UNDEFtCTB_PKTV2_MASKt CTB_76_NEWt CTB_PKT_MASKt Exception(R"R#R&tn_lenRzR6R7((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytget_ctb^s6       ! cCs�d}d}|}xct|�D]U}|t|�d>A}x8tdd�D]'}|d>}|d@rI||A}qIqIWqW|d@S( Ni��i�L�iiiiii���(RAR2R�(R"t crc24_initt crc24_polytcrcRStj((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytcrc24�s  cCs4g}d}t|�}x||kr/t||�\}}}d}|tks]|tkrit�}nH|tkr�t�}n0|tkr�t �}n|t kr�t �}n|r�||_ |j |||�trtj|j�d�qntdtt|�|f��|j|�||}qW|S(Nis s#unexpected pgp packet type %s at %d(R1RRVR�RR\R�R�R�R�RR�RWR~tdebugR�R[RRTRZRN(R"tpkt_listR#tmsg_lenRWRztpkt((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytdecode�s.          cCs�td�|jd��}d}d}tj�}xl|D]d}|sa|dkr:d}q:q:n|s�t|�dkr:d}q:q:n|r�|ddkr�tj|dd!�}d}t||d�\}}tj|j��} |j �|t | �krt d �nt | �} g} xQt| �dkrtt �} || _| j| �} | j| �g| d| +q$W|s�| s�d S| dS| S|j|�q:W|s�d SgS( s�decode_msg(msg) ==> list of OpenPGP "packet" objects Takes an ascii-armored PGP block and returns a list of objects each of which corresponds to a PGP "packets". A PGP message is a series of packets. You need to understand how packets are to be combined together in order to know what to do with them. For example a PGP "certificate" includes a public key, user id(s), and signature. cSs |j�S(N(trstrip(R>((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR?�ss is$-----BEGIN PGP PUBLIC KEY BLOCK-----it=iisbad checksum on pgp messageN(R@tsplitRR�R1tbase64t decodestringR'R�tcloseR"RR'R�traw_keyRRNRVR�(R"tmultit pgpkey_linestin_blocktin_datat block_bufR.tcsumRStcert_msgR$t cert_listtcertR((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt decode_msg�sL            cCs�g}td�|jd��}d}d}x�|D]�}|si|dkrid}|d|7}q4qin|d|7}|dkr4d}t|d t�}|r�|j|�nd}q4q4q4W|S( NcSs |j�S(N(R((R>((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyR?�ss iR*s$-----BEGIN PGP PUBLIC KEY BLOCK-----is%s s"-----END PGP PUBLIC KEY BLOCK-----R/(R@R*R8tTruetextend(R"tcertsR0R1tblockR.t thesecerts((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pytdecode_multiple_keys�s&     t__main__(�RR�RR+RKRt ImportErrorRRRVR#RRRRRtCTB_PKT_PK_ENCR�tCTB_PKT_SK_ENCtCTB_PKT_OP_SIGtCTB_PKT_SK_CERTR�tCTB_PKT_SK_SUBtCTB_PKT_COMPRESSEDt CTB_PKT_ENCtCTB_PKT_MARKERt CTB_PKT_LITt CTB_PKT_TRUSTR�RRtCTB_PKT_SYM_ENC_INTtCTB_PKT_MOD_DETECTRZRRRRRRltALGO_PK_RSA_ENC_ONLYRmRtRntALGO_PK_ELLIPTIC_CURVEt ALGO_PK_ECDSARst ALGO_PK_DHR�t ALGO_SK_PLAINt ALGO_SK_IDEAt ALGO_SK_3DESt ALGO_SK_CAST5tALGO_SK_BLOWFISHtALGO_SK_SAFER_SK128tALGO_SK_DES_SKtALGO_SK_AES_128tALGO_SK_AES_192tALGO_SK_AES_256tALGO_SK_TWOFISH_256R�tALGO_COMP_UNCOMPt ALGO_COMP_ZIPtALGO_COMP_ZLIBtALGO_COMP_BZIP2R�t ALGO_HASH_MD5tALGO_HASH_SHA1tALGO_HASH_RIPEMD160tALGO_HASH_SHA_DBLt ALGO_HASH_MD2tALGO_HASH_TIGER192tALGO_HASH_HAVAL_5_160tALGO_HASH_SHA256tALGO_HASH_SHA384tALGO_HASH_SHA512tALGO_HASH_SHA224R�tSIG_TYPE_DOCUMENTtSIG_TYPE_DOCUMENT_CANONtSIG_TYPE_STANDALONER�R�R�R�RRR�RR�tSIG_TYPE_TIMESTAMPR�R�R�R�R�R�R�R�tSIG_SUB_TYPE_PLACEHOLDERR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�tsig_sub_type_to_strtREVOKE_REASON_NONEtREVOKE_REASON_SUPERtREVOKE_REASON_COMPRtREVOKE_REASON_NOT_USEDtREVOKE_REASON_ID_INVALIDR�R�R�R�R�R�R�tREVOKE_KEY_CLASS_MANDR�R�tpgp_feature_to_strR'R)R0R5R8R:R;RBRHRTtobjectRUR\R�R�R�R�RR"R'tFalseR8R>Rtsystopentargvtreadtpgp_cert(((s./usr/lib/python2.7/site-packages/yum/pgpmsg.pyt<module>s�<                   r �@� $ " D   &