PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/lib/python2.7/site-packages/yum/
Upload File :
Current File : //lib/python2.7/site-packages/yum/pgpmsg.pyc
�
�v_c@sbddlZddlZddlZddlZddlZyddlZWn<ek
r�ddlZddlZdfd��YZnXe	Z
dZdZdZ
dZdZdZd	Zd
ZdZd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
Z4dZ5dZ6d
Z7dZ8dZ9dZ:dZ;id7e16d8e26d9e36d:e46d;e56d<e66d=e76d>e86d?e96d@e:6dAe;6Z<d*Z=dZ>d	Z?d
Z@idBe=6dCe>6dDe?6dEe@6ZAdZBd	ZCd
ZDdZEdZFd
ZGdZHdZIdZJdZKdZLidFeB6dGeC6dHeD6dIeE6dJeF6dKeG6dLeH6dMeI6dNeJ6dOeK6dPeL6ZMd*ZNdZOd	ZPd+ZQdZRdZSdZTdQZUdRZVdSZWdTZXdUZYdVZZi
dWeN6dXeO6dYeP6dZeQ6d[eR6d\eS6d]eT6d^eU6d_eV6d`eW6daeX6dbeY6dceZ6Z[d	Z\d
Z]dZ^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|dZ}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
ii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-DEStCAST5tBlowfishsSAFER-SK128sDES/SKsAES 128-bitsAES 192-bitsAES 256-bitsTwofish 256-bittUncompressedtZIPtZLIBtBZip2tMD5tSHA1t	RIPEMD160sdouble-width SHAtMD2tTIGER192sHAVAL-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
jdt|���|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.pytfingerprint�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��|jtks�|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_ONLYtALGO_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.pytdeserialize�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�|jdt|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: stimestamp: 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	�Zd
�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|tks�|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
krfdtt|d�S|dt
kr�d}|dt@r�|d}n|tt|d	�dt|d�S|dtkr�dt|d�S|dtkr�d|dS|dtkr!dtt|d�S|dtkrFdtt|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 keyskey flags: ssigner 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|jdt|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: istimestamp: skey_id: ishashed subpackets:
s    sunhashed subpackets:
shash_algo: shash_frag: s
pk_algo: RSA
s	rsa_sig: s
pk_algo: DSA
sdsa_sig_r: sdsa_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\trevocationstuser_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|jD]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.pytget_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_�scCs5|djtkr6tdtt|dj���n|d|_|jj|_|jdkr8d}x�||jtkr||jdkr�td||j��n||jt	kr�tdtt
||j���n|jj||�|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�|jj||�nJ||jtkr|jj||�n tdtt
||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�|jj||�|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]tCTB_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
@||fStd	|�ntd
||f�dS(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)tCTB_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
|	�krtd	�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+RKRtImportErrorRRRVR#RRRRRtCTB_PKT_PK_ENCR�tCTB_PKT_SK_ENCtCTB_PKT_OP_SIGtCTB_PKT_SK_CERTR�tCTB_PKT_SK_SUBtCTB_PKT_COMPRESSEDtCTB_PKT_ENCtCTB_PKT_MARKERtCTB_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	&