php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /usr/lib/python2.6/site-packages/yum/
upload
files >> //usr/lib/python2.6/site-packages/yum/pgpmsg.pyc

[c@sfddkZddkZddkZddkZddkZyddkZWn>ej
o2ddkZddkZdfdYZnXe	Z
dZdZdZ
dZdZdZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZ hde6de6de6de6de6de6de6d 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/h	d.e'6d/e(6d0e)6d1e*6d2e+6d3e,6d4e-6d5e.6d6e/6Z0d*Z1dZ2d	Z3d
Z4dZ5dZ6d
Z7dZ8dZ9dZ:dZ;hd7e16d8e26d9e36d:e46d;e56d<e66d=e76d>e86d?e96d@e:6dAe;6Z<d*Z=dZ>d	Z?d
Z@hdBe=6dCe>6dDe?6dEe@6ZAdZBd	ZCd
ZDdZEdZFd
ZGdZHdZIdZJdZKdZLhdFeB6dGeC6dHeD6dIeE6dJeF6dKeG6dLeH6dMeI6dNeJ6dOeK6dPeL6ZMd*ZNdZOd	ZPd+ZQdZRdZSdZTdQZUdRZVdSZWdTZXdUZYdVZZh
dWeN6dXeO6dYeP6dZeQ6d[eR6d\eS6d]eT6d^eU6d_eV6d`eW6daeX6dbeY6dceZ6Z[d	Z\d
Z]dZ^dZ_d
Z`dZadZbdZcdZddZed+Zfd,Zgd-ZhddZideZjdQZkdfZldgZmdhZndiZodjZpdkZqdRZrdSZshdle\6dme]6dne^6doe_6dpe`6dqea6dreb6dsec6dted6duee6dvef6dweg6dxeh6dyei6dzej6d{ek6d|el6d}em6d~en6deo6dep6deq6der6des6Ztd*ZudZvd	Zwd
ZxdSZyhdeu6dev6dew6dex6dey6ZzdZ{d	Z|dZ}dZ~d+ZdZdZdVZdZhde6ZdZdZdZdZdZdZdZdZdZdZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdZdZdZedZdZedjo?ddkZx,eeeidiD]ZeGHqOWndS(iNthashlibcBseZedZRS(cCs=|djotiS|djotiStddS(Ntmd5tsha1sBad checksum type(Rtnewtshat
ValueError(talgo((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR#s


(t__name__t
__module__tstaticmethodR(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR!siii<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 DetectioncCsnd}x[|djoMtid|||d!d}|dt|}|d}|d}q	W||fS(sget_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.6/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.6/site-packages/yum/pgpmsg.pyt
get_whole_intGscCsRg}x<|djo.|idtid|d@|dL}q	Wdi|S(sKpack_long(l)
    returns big-endian representation of unsigned long integeriRiit(tinsertRtpacktjoin(tltarr((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt	pack_longMs
 cCst|}t|dd}t|djo=t|d}x0|djo|d7}|dL}qFWnd}tid||S(s_pack_mpi(l)
    returns the PGP Multi-Precision Integer representation of unsigned long integeriiis>H(R0tlentordRR,(R.tstbitsR%((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytpack_mpiVs

cCst||d\}}|djo||fS|djo3t||d\}}|dd>|d|fSt||dS(sfget_sig_subpak_len(msg, idx)
extracts a signature subpacket length field
returns (subpak_len, new_idx)iiiii(R)(R"R#tplentplen2((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytget_sig_subpak_lenfs

cCs7t||d\}}|ft|||ddS(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.6/site-packages/yum/pgpmsg.pyt	get_n_mpirscCs!t||}|d|dfS(sget_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.6/site-packages/yum/pgpmsg.pytget_mpi{scCsditdt|S(NR*cSstt|didS(i(thexR2tzfill(tx((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt<lambda>s(R-tmaptlist(R3((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt
str_to_hexscCsh|djodS|d}|d}|d}|d}|d}|d}|}d||||fS(Nitneveri<is%d days %02d:%02d:%02d((R3tsecstminsthrstdays((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytduration_to_strs






cCsg}t|tijo)t|tijot|f}nxK|D]C}||jo|i||qL|idt|dqLWdi|S(Nsunknown(t)s, (ttypettypestListTypet	TupleTypeRAtappendtstrR-(tmtvalstslistti((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt
map_to_strs,
t
pgp_packetcBseZdZdZRS(cCs
d|_dS(N(tNonetpkt_typ(tself((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt__init__scCstt|iS(N(RTtctb_pkt_to_strRW(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt__str__s(RRRYR[(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRUs	t
public_keycBs>eZdZdZdZdZdZdZRS(cCs5ti|d|_d|_d|_d|_dS(Ni(RURYRVtversiontpk_algotkey_sizetfingerprint_(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRYs

			cCs|io|iS|idjoNtid}|it|i|it|i|i|_n|idjogtid}|id|i	}|it
idt||i||i|_nt
d|i|iS(NiRiRss>Hsunknown public key version %d(R`R]RRtupdateR0t
pk_rsa_modt
pk_rsa_exptdigestt	serializeRR,R1tRuntimeError(RXthtbuf((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytfingerprints 


cCsE|idjot|id@S|idjo|idSdS(Nilii(R]R0RbRi(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytkey_idscCsg}|idjod|itid|it|i|i|i|it|i	|it|i
nx|idjog|itid|it|i|i|itjp|itjo0|it|i	|it|i
q|it
jo\|it|i|it|i|it|i|it|iq|itjp|itjoF|it|i|it|i|it|iqtd|indi|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.6/site-packages/yum/pgpmsg.pyRes*4.  cCsr|}t||d\|_}|idjo=|idjo-|idjotd|i|fn|idjo
d|_nt||d\|_}t|i|_|idjot||d\|_}nt||d\|_}|itjp|it	jo:t
||\|_|_}t
||\|_}n|itjowt
||\}|_}t
||\|_}t
||\|_}t
||\}|_}|||_n|itjp|itjoRt
||\|_|_}t
||\|_}t
||\|_}ntd|i|fdS(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.6/site-packages/yum/pgpmsg.pytdeserializes20
  cCs=ti}|iti|d|idt|id|idti|i	d|idjo8|idti|i	|i
ddddn|idt|id|it
jp|itjo@|id	t|id|id
t|idn|itjo||idt|id|idt|id|id
t|id|idt|idn|itjp|itjo^|idt|id|idt|id|idt|idn|iS(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.6/site-packages/yum/pgpmsg.pyR[s(!8 "" "(RRRYRiRjReR~R[(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR\s					tuser_idcBs#eZdZdZdZRS(cCsti|d|_dS(N(RURYRVtid(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRYs
cCs||||!|_dS(N(R(RXR"R#Rz((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR~scCs ti|dd|idS(Ns
sid: (RUR[R(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR[s(RRRYR~R[(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRs		tuser_attributecBs#eZdZdZdZRS(cCs#ti|d|_d|_dS(N(RURYRVtsub_typetdata(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRY#s
	cCs=t||d\|_}|d}||||!|_dS(Ni(R)RR(RXR"R#Rz((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR~(s
cCs3ti|ddt|idt|iS(Ns
s
sub_type: s
data: (RUR[RORRBR(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR[-s(RRRYR~R[(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR"s		t	signaturecBskeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZRS(cCs>ti|d|_d|_d|_d|_d|_dS(N(RURYRVR]tsig_typeR^t	hash_algot	hash_frag(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRY1s
				cCs^|idjo|iS|it}|o	|dS|it}|o	|dSdSdS(Nii(R]tkey_id_tget_hashed_subpaktSIG_SUB_TYPE_ISSUER_KEY_IDtget_unhashed_subpakRV(RXRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRj9s		cCs3|idjo|iS|it}|dSdS(Nii(R]RRtSIG_SUB_TYPE_CREATE_TIME(RXRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt
creation_timeEscCsC|idjotdn|it}|o	|dSdS(Nis$v3 signatures don't have expirationsii(R]RRtSIG_SUB_TYPE_KEY_EXPIRE(RXRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt
expirationLs	cCs.x'|iD]}|d|jo|Sq
WdS(Ni(thashed_subpaksRV(RXttypRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRTs

	cCs.x'|iD]}|d|jo|Sq
WdS(Ni(tunhashed_subpaksRV(RXRRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRZs

	c'Cst||\}}t||d\}}|tjo/t||d\}}|t|f|fS|tjp
|tjo)t||d\}}||f|fS|tjp
|tjo)t||d\}}||f|fS|t	joDt||d\}}t||d\}	}|||	f|fS|t
jo4||||d!}
||d}||
f|fS|tjp'|tjp|t
jp
|tjoFtdt||||d!}||d}||f|fS|tjobt||d\}}t||d\}
}|||d!}|d}|||
|f|fS|tjo,|||d!}|d}||f|fS|tjot||d\}}t||d\}}t||d\}}t||d\}}t||d\}}t||d\}}||||!}||}||||!}||}|||||||f|fS|tjoUg}||||d!D]}|t|q~}||d}||f|fS|tjo4||||d!}||d}||f|fS|tjo)t||d\}}||f|fS|tjo4||||d!}||d}||f|fS|tjo4||||d!}||d}||f|fS|tjoQt||d\}}|d}||||!} ||}||| f|fS|tjoh|d}|g}!xA|djo3t||d\}"}|!i|"|d}qrWt|!|fS|tjojt||d\}#}t||d\}$}||||d!}%||d}||#|$|%f|fS|tjo4||||d!}&||d}||&f|fS||||d!}&||d}||&f|fS(	NiicSs
t|S((R2(R>((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR?usiiiii( R8R)RR'RytSIG_SUB_TYPE_EXPIRE_TIMERtSIG_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_KEYRtSIG_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_lentnamtvalt_[1]R>tprefsturlturit	signer_idtrev_codetreas_lentreasR.tocttpublic_key_algoRthashtdat((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytdeserialize_subpacket`s


4'






 
6








	



cCs2x+|iD] }|dtjo	|dSq
WdS(spis_primary_user_id()
        returns true if this signature contains a primary user id subpacket with value trueii(RR(RXRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytis_primary_user_ids


c
Csj|dtjodti|dS|dtjodt|dS|dtjo|dodSdSn|dtjoi|ddjodS|ddjo
d|d	S|dd	jo
d
|d	Sd|d|d	fS|dtjo
d|dS|dtjo|dod
SdSn|dt	jodt|dS|dt
jodtt|dS|dt
joKd}|dt@o|d}n|tt|d	dt|dS|dtjodt|dS|dtjo
d|dS|dtjodtt|dS|dtjodtt|dS|dtjoBd}g}|ddd@o|idn|di|S|dtjo
d|dS|dtjo|dodSdSn|dtjo
d |dS|dtjog}d}t|ddjo|dd}n|t@o|id!n|t @o|id"n|t!@o|id#n|t"@o|id$n|t#@o|id%n|t$@o|id&nd'di|S|dt%jo
d(|dS|dt&jo)t'i(|dd)}d*||d	fS|dt)jog}t|djoW|d}|t*@o|id+n|t*@}|djo|id,|qnx<t+d	t|D]%}	|id-|	d||	fqWd.di|Sd/|dt|dfS(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: is	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(,RRRRRHRRRRRRRTtalgo_sk_to_strRtREVOKE_KEY_CLASS_SENSRRBRRRtalgo_hash_to_strRtalgo_comp_to_strRRNR-RRRRR1tKEY_FLAGS1_MAY_CERTIFYtKEY_FLAGS1_MAY_SIGNtKEY_FLAGS1_MAY_ENC_COMMtKEY_FLAGS1_MAY_ENC_STRGtKEY_FLAGS1_PRIV_MAYBE_SPLITtKEY_FLAGS1_GROUPRRtrevoke_reason_to_strtgetRtPGP_FEATURE_1_MOD_DETECTtrange(
RXtspR3Rtflagstflgs1RRRRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytsubpacket_to_strs


(





#cCst||d\|_}|idjo
d|_n|idjot||d\}}t||d\|_}t||d\|_}t|i|_|||d!|_|d}t||d\|_}t||d\|_}nO|idjo%t||d\|_}t||d\|_}t||d\|_}t||d\}}||}g|_	x:||jo,|i
||\}}|i	i|qWt||d\}}||}g|_xW||jo,|i
||\}}|ii|qWnt
d|i|ft||d\|_}|itjp|itjot||\|_}n^|itjo4t||\|_}t||\|_}nt
d|i|f|S(Niiiiis)unknown signature packet version %d at %ds4unknown public-key algorithm (%d) in signature at %d(R)R]R'RRRyRR^RRRRNRRfRRlRmR;trsa_sigRnt	dsa_sig_rt	dsa_sig_s(RXR"R#Rzthash_lentsub_paks_lentsub_paks_endR((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR~'sN


	

	
 cCs5ti}|iti|d|idt|id|idt|id|idjoC|idt	i
|id|idt|i
dn|idjo|idx/|iD]$}|id	|i|dqW|id
x3|iD]$}|id	|i|dqWn|idt|id|idt|id|itjp|itjo/|id
|idt|idn^|itjoM|id|idt|id|idt|idn|iS(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: (RRRRUR[ROR]tsig_type_to_strRRRRRBRRRRRRR<RR^RlRmRRnRRR(RXRRS((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR[Ps4!"

"

& 
"
"(
RRRYRjRRRRRRRR~R[(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR0s							`		_	)tpgp_certificatecBsJeZdZdZdZeeZdZdZdZ	RS(cCs1d|_d|_g|_g|_d|_dS(Ni(RVR]R\trevocationstuser_idstprimary_user_id(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRYps
				c	CsCti}|id|i|idt|ii|id|i|it|ixT|i	D]I}|it|dx)|dD]}|idt|qWqtWt
|dohxe|iD]V}|id|it|dx)|dD]}|idt|qWqWn|iS(	NsPGP Public Key Certificate v%d
sCert ID: %s
sPrimary ID: %s
iis   t
user_attrsR(
RRRR]RBR\RjRRORthasattrRR(RXRtuidtsigtuattr((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR[ws( 


#cCs|i|idiS(Ni(RRR(RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytget_user_idscCs|idjo9|iidjodS|ii|iidddS|id}xO|dD]C}|itjo-|i}|djodS|ii|SqaWdSdS(Niiii<i(R]R\RkRRRtSIG_TYPE_PK_USER_GENR(RXtu_idRStexp((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRs!

cCsdS(Ni((RX((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR_scCsD|ditjo$tdtt|din|d|_|ii|_|idjod}x||itjo||idjotd||in||it	jo$tdtt
||in|ii|||d}qmWx|t
|jo'||itjoEt
|idjo*td|tt||ifqzPn||g}|d}d}d}x|t
|jo||itjol||itttttfjo*td|tt
||ifn|i|||d}qW|ii|qWnd}g|_g|_g|_g|_|ii}x|t
|jo||itjo||id	jotd
||in||it	jo|ii||nM||itjo|ii||n!tdtt
||i|d}qWd}x|t
|jo||itjo7||g}d}d}|d}x|t
|jo||itjo||itttttfjo*td|tt
||ifn|i||||i|joR||io=||i}||jot
|i|_|}qqn|d}qW|ii|qo||itjo||g}	d}|d}x|t
|jo||itjol||itttttfjo*td|tt
||ifn|	i|||d}qW|ii|	qo||it joD||g}
|d}d}|t
|jotd
|dn||itjp||it!jo*td|tt
||ifn|
i|||d}|t
|joM||itjo9||it"jo%d}|
i|||d}n|o|ii|
q|ii|
qoPqoWt
|idjo#tdt#|iin|S(sload(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_SIGRtSIG_TYPE_KEY_REVOKERRRNR1tCTB_PKT_USER_IDRRtSIG_TYPE_PK_USER_PERtSIG_TYPE_PK_USER_CAStSIG_TYPE_PK_USER_POStSIG_TYPE_CERT_REVOKEtsig_typtdirect_key_sigstsubkeystrvkd_subkeysRRjtSIG_TYPE_KEYRRRtCTB_PKT_USER_ATTRtCTB_PKT_PK_SUBtSIG_TYPE_SUBKEY_BINDtSIG_TYPE_SUBKEY_REVOKERB(RXtpktstpkt_idxRt
is_revokedRtcert_idtprim_user_id_sig_timetctt	user_attrtsubkey((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytloads$
$*

'#*				' 

'#*


'#*

(*
;#(
RRRYR[RtpropertyRRR_R(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyRos					cCst||d\}}|t@tjod}|t@tjo
d}n|t@tjo
d}n|t@tjo
d}n|t@tjo
d}nd}|djot|||\}}n|t@d?||fS|t@t	jot||d\}}|djo|t
@||fS|djo:t||d\}}|t
@|dd>|d|fS|djo*t||d\}}|t
@||fStd	|ntd
||fdS(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 messageiiiiiiiis=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.6/site-packages/yum/pgpmsg.pytget_ctbSs6






"
cCsd}d}|}xet|D]W}|t|d>A}x:tddD])}|d>}|d@o||A}qIqIWqW|d@S(	NiiLiiiiii(RAR2R(R"t
crc24_initt
crc24_polytcrcRStj((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytcrc24ws

cCsCg}d}t|}x$||jot||\}}}d}|tjp
|tjo
t}nO|tjo
t}n5|tjo
t	}n|t
jo
t}n|oB||_|i
|||toti|idq#n tdtt||f|i|||}qW|S(Nis
s#unexpected pgp packet type %s at %d(R1RRVRRR\RRRRRRRWR~tdebugRR[RRTRZRN(R"tpkt_listR#tmsg_lenRWRztpkt((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytdecodes0







	
cCstd|id}d}d}ti}x|D]w}|p|djo
d}q:q:n|p$t|djo
d}q:q:n|o
|ddjoti|dd!}d}t||d\}}ti|i}	|i	|t
|	jo
td	nt|	}
g}xSt|
djo?t
}||_|i|
}
|i|g|
d|
+q0W|p|pd
S|dS|S|i|q:W|pd
SgS(sdecode_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
|iS((trstrip(R>((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR?ss
is$-----BEGIN PGP PUBLIC KEY BLOCK-----it=iisbad checksum on pgp messageN(R@tsplitRRR1tbase64tdecodestringR'RtcloseR$RR)Rtraw_keyRRNRVR(R"tmultitpgpkey_linestin_blocktin_datat	block_bufR.tcsumRStcert_msgR&t	cert_listtcertR
((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt
decode_msgsP




		
	cCsg}td|id}d}d}x|D]}|p,|djod}|d|7}q4qmn|d|7}|djo=d}t|d	t}|o|i|nd}q4q4q4W|S(
NcSs
|iS((R*(R>((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyR?ss
iR*s$-----BEGIN PGP PUBLIC KEY BLOCK-----is%s
s"-----END PGP PUBLIC KEY BLOCK-----R1(R@R,R:tTruetextend(R"tcertsR2R3tblockR.t
thesecerts((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pytdecode_multiple_keyss(

t__main__(RRRR-RKRtImportErrorRRRVR%RRRRRtCTB_PKT_PK_ENCRtCTB_PKT_SK_ENCtCTB_PKT_OP_SIGtCTB_PKT_SK_CERTRtCTB_PKT_SK_SUBtCTB_PKT_COMPRESSEDtCTB_PKT_ENCtCTB_PKT_MARKERtCTB_PKT_LITt
CTB_PKT_TRUSTRRRtCTB_PKT_SYM_ENC_INTtCTB_PKT_MOD_DETECTRZRRRRRRltALGO_PK_RSA_ENC_ONLYRmRtRntALGO_PK_ELLIPTIC_CURVEt
ALGO_PK_ECDSARst
ALGO_PK_DHRt
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_256RtALGO_COMP_UNCOMPt
ALGO_COMP_ZIPtALGO_COMP_ZLIBtALGO_COMP_BZIP2Rt
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_SHA224RtSIG_TYPE_DOCUMENTtSIG_TYPE_DOCUMENT_CANONtSIG_TYPE_STANDALONERRRRRRRRRtSIG_TYPE_TIMESTAMPRRRRRRRRtSIG_SUB_TYPE_PLACEHOLDERRRRRRRRRRRRRRRRRtsig_sub_type_to_strtREVOKE_REASON_NONEtREVOKE_REASON_SUPERtREVOKE_REASON_COMPRtREVOKE_REASON_NOT_USEDtREVOKE_REASON_ID_INVALIDRRRRRRRtREVOKE_KEY_CLASS_MANDRRtpgp_feature_to_strR'R)R0R5R8R:R;RBRHRTtobjectRUR\RRRRRR$R)tFalseR:R@Rtsystopentargvtreadtpgp_cert(((s./usr/lib/python2.6/site-packages/yum/pgpmsg.pyt<module>s<










	
											r@	$	
	"E	
 
y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`