KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /proc/21573/root/usr/lib/python2.4/site-packages/yum/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/21573/root/usr/lib/python2.4/site-packages/yum/pgpmsg.pyo
m
Pc@sdkZdkZdkZdkZdkZy
dkZWn8ej
o,dkZdkZdfdYZnXe	Z
dZdZdZ
dZdZdZdZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZhed<ed<ed<ed<ed<ed<ed<ed<ed<ed<ed<ed <ed!<ed"<Zd	Zd#Z dZ!dZ"d	Z#dZ$dZ%d	Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,he$d*<e%d+<e&d,<e'd-<e(d.<e)d/<e*d0<e+d1<e,d2<Z-d#Z.dZ/dZ0d	Z1d
Z2dZ3dZ4d
Z5dZ6dZ7he.d3<e/d4<e0d5<e1d6<e2d7<e3d8<e4d9<e5d:<e6d;<e7d<<Z8d#Z9dZ:dZ;he9d=<e:d><e;d?<Z<dZ=dZ>d	Z?d
Z@dZAdZBd
ZChe=d@<e>dA<e?dB<e@dC<eAdD<eBdE<eCdF<ZDd#ZEdZFdZGd$ZHd%ZId&ZJd'ZKdGZLdHZMdIZNdJZOdKZPdLZQheEdM<eFdN<eGdO<eHdP<eIdQ<eJdR<eKdS<eLdT<eMdU<eNdV<eOdW<ePdX<eQdY<ZRdZSd	ZTd
ZUdZVdZWd
ZXdZYdZZdZ[dZ\d$Z]d(Z^d)Z_dZZ`d[ZadGZbd\Zcd]Zdd^Zed_Zfd`ZgheSda<eTdb<eUdc<eVdd<eWde<eXdf<eYdg<eZdh<e[di<e\dj<e]dk<e^dl<e_dm<e`dn<eado<ebdp<ecdq<eddr<eeds<efdt<egdu<Zhd#ZidZjdZkd	ZldIZmheidv<ejdw<ekdx<eldy<emdz<ZndZodZpd
ZqdZrd$ZsdZtdZudLZvd{Zwd|Zxd}Zyd~ZzdZ{dZ|dZ}dZ~dZdZdfdYZdefdYZdefdYZdefdYZdefdYZdZdZdZdZdZdS(NthashlibcBstZedZRS(NcCsC|djotiSn|djotiSntddS(Ntmd5tsha1sBad checksum type(talgoRtnewtshat
ValueError(R((t./usr/lib/python2.4/site-packages/yum/pgpmsg.pyRs


(t__name__t
__module__tstaticmethodR(((RRsiii<i?iiiiiiiii	i
iii
is#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 packetiiiiiiisRSA (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-bittUncompressedtZIPtZLIBtMD5tSHA1t	RIPEMD160sdouble-width SHAtMD2tTIGER192sHAVAL-5-160iii 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	timestampiiiiiiissignature 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 URLs	key flagsssigner's user idsreason for revocationsNo reason specifiedsKey is supercededsKey has been compromisedsKey is no longer useds&user id information is no longer validcCsnd}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 messagelitBilN(tntnumlentstructtunpacktmsgtidxtbtlong(RRRR R((Rtget_whole_numbers
!
cCs(t|||\}}t||fS(siget_whole_int(msg, idx, numlen)
same as get_whole_number but returns the number as an int for convenienceN(R"RRRRtint(RRRR((Rt
get_whole_int"scCsRg}x<|djo.|idtid|d@|dL}q	Wdi|S(sKpack_long(l)
    returns big-endian representation of unsigned long integeriRiitN(tarrtltinsertRtpacktjoin(R'R&((Rt	pack_long(s
 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>HN(	R+R'tstlentbitstordRRR)(R'RR,R.((Rtpack_mpi1s

cCst||d\}}|djo||fSn|djo6t||d\}}|dd>|d|fSnt||dS(sfget_sig_subpak_len(msg, idx)
extracts a signature subpacket length field
returns (subpak_len, new_idx)iiiiiN(R$RRtplentplen2(RRR1R2((Rtget_sig_subpak_lenAs

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>iiiN(R$RRtlnR"(RRR4((Rt	get_n_mpiMscCs!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 messageiiN(R5RRR'(RRR'((Rtget_mpiVscCsditdt|S(NR%cCstt|didS(Ni(thexR/txtzfill(R8((Rt<lambda>_s(R*tmaptlistR,(R,((Rt
str_to_hex^scCsk|djodSn|d}|d}|d}|d}|d}|d}|}d||||fS(Nitneveri<is%d days %02d:%02d:%02d(R,tsecstminsthrstdays(R,R@R?RARB((Rtduration_to_stras






cCsg}t|tijo)t|tijot|f}nxN|D]F}|i	|o|i
||qL|i
dt|dqLWdi|S(Nsunknown(t)s, (
tslistttypetvalsttypestListTypet	TupleTypeR<titmthas_keytappendtstrR*(RLRGRERK((Rt
map_to_strms,t
pgp_packetcBstZdZdZRS(NcCs
d|_dS(N(tNonetselftpkt_typ(RS((Rt__init__zscCstt|iS(N(RPtctb_pkt_to_strRSRT(RS((Rt__str__}s(RR	RURW(((RRQys	t
public_keycBs>tZdZdZdZdZdZdZRS(NcCs5ti|d|_d|_d|_d|_dS(Ni(RQRURSRRtversiontpk_algotkey_sizetfingerprint_(RS((RRUs

			cCs|io|iSn|idjoNtid}|it|i|it|i	|i
|_n|idjogtid}|id|i}|it
idt||i||i
|_ntd|i|iS(NiRiRss>Hsunknown public key version %d(RSR\RYRRthtupdateR+t
pk_rsa_modt
pk_rsa_exptdigestt	serializetbufRR)R-tRuntimeError(RSR]Rc((Rtfingerprints 


cCsK|idjot|id@Sn#|idjo|idSndS(Nilii(RSRYR+R_Re(RS((Rtkey_idscCsg}|idjod|itid|it|i|i|i	|it
|i|it
|inx|idjog|itid|it|i|i	|i	t
jp|i	tjo0|it
|i|it
|iq|i	tjo\|it
|i|it
|i|it
|i|it
|iq|i	tjp|i	tjoF|it
|i|it
|i|it
|iqtd|i	ndi|S(Nis>BIHBis>BIBsunknown public key algorithm %dR%(tchunksRSRYRNRR)R#RtvalidityRZR0R_R`tALGO_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_keyRdR*(RSRg((RRbs*4.  cCsr|}t||d\|_}|idjo=|idjo-|idjotd|i|fn|idjo
d|_nt||d\|_}t	|i|_|idjot||d\|_
}nt||d\|_}|itjp|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(Rtidx_saveR$RRSRYRdR"RtfloatRhRZRiRjR5R[R_R6R`Rktl1RlRmRntl2RoRpRqRrRsRt(RSRRtpkt_lenRuRxRw((Rtdeserializes20
  cCs=ti}|iti|d|idt|id|idt	i
|id|idjo8|idt	i
|i|iddddn|idt
|id|itjp|itjo@|id	t|id|id
t|idn|itjo||idt|id|idt|id|id
t|id|idt|idn|itjp|itjo^|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	cStringIOtStringIOtsiotwriteRQRWRSRORYttimetctimeRRhtalgo_pk_to_strRZRiRjR7R_R`RkRlRmRnRoRpRqRrRsRttgetvalue(RSR}((RRWs(!8 "" "(RR	RUReRfRbRzRW(((RRXs					tuser_idcBs#tZdZdZdZRS(NcCsti|d|_dS(N(RQRURSRRtid(RS((RRUs
cCs||||!|_dS(N(RRRyRSR(RSRRRy((RRzscCs ti|dd|idS(Ns
sid: (RQRWRSR(RS((RRWs(RR	RURzRW(((RRs		t	signaturecBsbtZdZdZdZdZdZdZdZdZ	d	Z
d
ZRS(NcCs>ti|d|_d|_d|_d|_d|_dS(N(	RQRURSRRRYtsig_typeRZt	hash_algot	hash_frag(RS((RRUs
				cCsg|idjo|iSnI|it}|o|dSn|it}|o|dSndSdS(Nii(RSRYtkey_id_tget_hashed_subpaktSIG_SUB_TYPE_ISSUER_KEY_IDRKtget_unhashed_subpakRR(RSRK((RRfscCsF|idjotdn|it}|o|dSndS(Nis$v3 signatures don't have expirationsii(RSRYRRtSIG_SUB_TYPE_KEY_EXPIRERK(RSRK((Rt
expirationscCs1x*|iD]}|d|jo|Sq
q
WdS(Ni(RSthashed_subpaksRKttypRR(RSRRK((RRs

cCs1x*|iD]}|d|jo|Sq
q
WdS(Ni(RStunhashed_subpaksRKRRR(RSRRK((RR s

c!Cst||\}}t||d\}}|tjo2t||d\}
}|t	|
f|fSn|t
jp
|tjo,t||d\}}||f|fSn|t
jp
|tjo,t||d\}}||f|fSn|tjoGt||d\}}t||d\}}|||f|fSn|tjo7||||d!}||d}||f|fSn|tjp'|tjp|tjp
|tjoItdt||||d!}||d}||f|fSn|tjoet||d\}}t||d\}}|||d!}|d}||||f|fSn|t jo/|||d!}|d}||f|fSn|t"jot||d\}}t||d\}}t||d\}}t||d\}
}t||d\}}t||d\}}||||!}||}||||!}	||}|||||
||	f|fSn|t+joXg}||||d!D]}|t.|q~}||d}||f|fSn|t0jo7||||d!}||d}||f|fSn|t2jo,t||d\}}||f|fSn|t3jo7||||d!}||d}||f|fSn|t4jo7||||d!} ||d}|| f|fSn|t6joTt||d\}}|d}||||!}||}|||f|fSn||||d!}||d}||f|fS(NiicCs
t|S(N(R/R8(R8((RR:;siii(;R3RRtsublenR$tsubtypetSIG_SUB_TYPE_CREATE_TIMER"ttmRvtSIG_SUB_TYPE_EXPIRE_TIMERR,tSIG_SUB_TYPE_EXPORT_CERTtSIG_SUB_TYPE_REVOCABLEtbooltSIG_SUB_TYPE_TRUST_SIGt	trust_lvlt	trust_amttSIG_SUB_TYPE_REGEXPtexprtSIG_SUB_TYPE_PREF_SYMM_ALGOtSIG_SUB_TYPE_PREF_HASH_ALGOtSIG_SUB_TYPE_PREF_COMP_ALGOtSIG_SUB_TYPE_KEY_FLAGSR;R<t	algo_listtSIG_SUB_TYPE_REVOKE_KEYtclsRtfprintRtk_idtSIG_SUB_TYPE_NOTATIONtflg1tflg2tflg3tflg4tname_lentval_lentnamtvaltSIG_SUB_TYPE_KEY_SRV_PREFt_[1]R8R/tprefstSIG_SUB_TYPE_PREF_KEY_SRVRturltSIG_SUB_TYPE_PRIM_USER_IDtSIG_SUB_TYPE_POLICY_URLtSIG_SUB_TYPE_SGNR_USER_IDt	signer_idtSIG_SUB_TYPE_REVOKE_REASONtrev_codetreas_lentreastdat(!RSRRRRRRRR8RRRRRRRRRRRRRRRRRRRRR,RRR((Rtdeserialize_subpacket&s


4'






#
6






cCs5x.|iD]#}|dtjo|dSq
q
WdS(spis_primary_user_id()
        returns true if this signature contains a primary user id subpacket with value trueiiN(RSRRKR(RSRK((Rtis_primary_user_idrs
cCs|dtjodti|dSn|dtjodt|dSn|dtjo|dodSq}dSn|dtjou|ddjodSn|ddjod|d	Sn|dd	jod
|d	Snd|d|d	fSn|dtjod|dSn|dt	jo|dod
SqPdSn|dt
jodt|dSn|dtjodtt
|dSn|dtjoNd}|dt@o|d}n|tt|d	dt|dSn|dtjodt|dSn|dtjod|dSn|dtjodtt|dSn|dtjodtt|dSn|dtjoEd}g}|ddd@o|idn|di|Sn|dtjod|dSn|dtjo|dodSq?dSn|dtjod |dSn|dt jog}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|Sn|dt*jod(|dSn|dt+joBd)}t-i.|dot-|d}nd*||d	fSnd+|dt|dfS(,Niscreation 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, %ssunknown(%d): %s(/tspRRRRRCRRRRRRRPtalgo_sk_to_strRR,tREVOKE_KEY_CLASS_SENSRR=RRRtalgo_hash_to_strRtalgo_comp_to_strRRRNR*RRRRtflagstflgs1R-tKEY_FLAGS1_MAY_CERTIFYtKEY_FLAGS1_MAY_SIGNtKEY_FLAGS1_MAY_ENC_COMMtKEY_FLAGS1_MAY_ENC_STRGtKEY_FLAGS1_PRIV_MAYBE_SPLITtKEY_FLAGS1_GROUPRRRtrevoke_reason_to_strRM(RSRRRR,RR((Rtsubpacket_to_strzs+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||\}}|ii|qWt||d\}}||}g|_xW||jo,|i||\}}|ii|qWntd|i|ft||d\|_}|itjp|itjot||\|_}n^|itjo4t||\|_}t||\|_}ntd|i|f|S(Niiiiis)unknown signature packet version %d at %ds4unknown public-key algorithm (%d) in signature at %d(R$RRRSRYR"thash_lenRRRvRRZRtsub_paks_lentsub_paks_endRRRRNRRdRRiRjR6trsa_sigRkt	dsa_sig_rt	dsa_sig_s(RSRRRyRRRR((RRzsN


	

	
 cCs5ti}|iti|d|idt|id|idt	|i
d|idjoC|idti|i
d|idt|idn|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: ( R{R|R}R~RQRWRSRORYtsig_type_to_strRRRRR=RRRKRRRRR7RRZRiRjRRkRRR(RSRKR}((RRWs4!"

"

& 
"
"(RR	RURfRRRRRRRzRW(((RRs						L		U	)tpgp_certificatecBsJtZdZdZdZeeZdZdZdZ	RS(NcCs1d|_d|_d|_g|_g|_dS(N(RRRSRYRXt
revocationtuser_idst
rvkd_user_ids(RS((RRUs
				cCsti}|id|i|id|i|it|ixT|i	D]I}|it|dx)|dD]}|idt|q|WqTW|iS(NsPGP Public Key Certificate v%d
sPrimary ID: %s
iis   (
R{R|R}R~RSRYRRORXRtuidtsigR(RSRRR}((RRW s
cCs|iddiS(Nii(RSRR(RS((Rtget_user_id+scCs|idjo?|iidjodSn|ii|iidddSnj|id}xU|dD]I}|it	jo3|i
}|djodSn|ii|SqgqgWdSdS(Niiii<i(RSRYRXRhRRtu_idRKRtSIG_TYPE_PK_USER_GENRtexp(RSRKRR((RR3s$

cCsdS(Ni((RS((RR[DscCs|ditjo$tdtt|din|d|_|ii|_|idjod}||it
jo||idjotd||in||itjo$tdtt
||in|||_|d}nx|t|jo||itjo*td|tt||ifn||g}|d}d}d}x
|t|jo||it
jo||itttttfjo*td|tt
||ifn||idjotd||in|i||||itjo
d}n|io||itjo
|}n|d}qzW|io#|o|o|di|_n|o|ii|q|ii|qWnd}g|_g|_ g|_!||it
job||id	jotd
||in||itjo|||_|d}q}nx|t|jon||it
joZ||it"jo$tdtt
||in|ii|||d}qWx|t|jo||itjo6||g}d}d}|d}x|t|jo||it
jo||itttttfjo*td|tt
||ifn|i||||itjo
d}n||id	jo||io
d}n|d}qRW|o|ii|q|ii|q||it#jo||g}|d}d}x|t|jo||it
jo||it%t&fjo*td|tt
||ifn|i||||it&jo
d}n|d}qW|o|i!i|q|i i|qtd
|tt||ifqWt|idjotdndS(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 signatures8v4 cert signature has type %s, supposed to be direct keys.signature %d doesn't bind subkey to key, is %ss-pgp packet %d is not user id or subkey, is %ss)no user id packet was present in the certN('tpktsRTtCTB_PKT_PK_CERTRRPRVRSRXRYtpkt_idxtCTB_PKT_SIGRtSIG_TYPE_KEY_REVOKERRR-tCTB_PKT_USER_IDRt
is_revokedRRtSIG_TYPE_PK_USER_PERtSIG_TYPE_PK_USER_CAStSIG_TYPE_PK_USER_POStSIG_TYPE_CERT_REVOKEtsig_typRNtcert_idRRRtdirect_key_sigstsubkeystrvkd_subkeystSIG_TYPE_KEYtCTB_PKT_PK_SUBtsubkeytSIG_TYPE_SUBKEY_BINDtSIG_TYPE_SUBKEY_REVOKE(RSRRRRRR((RtloadGs$
$
*

'#*

			
'$

'#*
%


'*
+(
RR	RURWRtpropertyRRR[R(((RRs					cCst||d\}}|t@tjod}|t@tjo
d}n|t@t	jo
d}n|t@t
jo
d}n|t@tjo
d}nd}|djot|||\}}n|t
@d?||fSn|t@tjot||d\}}|djo|t@||fSn|djo=t||d\}}|t@|dd>|d|fSn|djo-t||d\}}|t@||fSqtd	|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$RRR tCTB_76_MASKt
CTB_76_NORMALtn_lentCTB_PKT_LEN_MASKt
CTB_PKT_LEN_1t
CTB_PKT_LEN_2t
CTB_PKT_LEN_4tCTB_PKT_LEN_UNDEFRytCTB_PKTV2_MASKt
CTB_76_NEWR1tCTB_PKT_MASKR2t	Exception(RRR R1RyR2R((Rtget_ctbs8






%
cCsd}d}|}xet|D]W}|t|d>A}x:tddD])}|d>}|d@o||A}qIqIWqW|d@S(	NiiLiiiiii(	t
crc24_initt
crc24_polytcrcR<RRKR/trangetj(RRRKR
RR((Rtcrc24s

cCs g}d}t|}x||jot||\}}}d}|t
jp
|tjo
t}n5|t
jo
t}n|tjo
t}n|oB||_|i|||toti|idqntd||f|i|||}qW|S(Nis
s unknown pgp packet type %d at %d(tpkt_listRR-Rtmsg_lenRRTRyRRtpktRRRXRRRRRztdebugR~RWRdRN(RRRRTR
RRy((Rtdecode"s,





	
cCs\td|id}d}	d}
ti}x"|D]}|	p|djo
d}	q:q:n|
p$t
|djo
d}
q:q:n|ddjoti|dd!}d}t||d\}}ti|i}|i|t|jo
td	nt|}t}|i|||_|Sn|i|q:WdS(
NcCs
|iS(N(R8trstrip(R8((RR:Dss
is$-----BEGIN PGP PUBLIC KEY BLOCK-----it=iisbad checksum on pgp message(R;Rtsplittpgpkey_linestin_blocktin_dataR{R|t	block_bufR'R-tbase64tdecodestringtcsumRKR"Rtcert_msgtcloseRRRRRtcertRtraw_keyR~RR(RRKRRR'RRRRRR((Rt
decode_msgAs:




	
	cCsg}td|id}d}d}x|D]}|p,|djod}|d|7}q4qmn|d|7}|djo7d}t|}|o|i
|nd}q4q4q4W|S(	NcCs
|iS(N(R8R(R8((RR:yss
iR%s$-----BEGIN PGP PUBLIC KEY BLOCK-----is%s
s"-----END PGP PUBLIC KEY BLOCK-----(tcertsR;RRRRtblockR'RRRN(RR'RRRR R!((Rtdecode_multiple_keysus(

(RRR{RRHRtImportErrorRRRRRRRRRRtCTB_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_TRUSTRRRVRRRRRRitALGO_PK_RSA_ENC_ONLYRjRqRktALGO_PK_ELLIPTIC_CURVEt
ALGO_PK_ECDSARpt
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_256RtALGO_COMP_UNCOMPt
ALGO_COMP_ZIPtALGO_COMP_ZLIBRt
ALGO_HASH_MD5tALGO_HASH_SHA1tALGO_HASH_RIPEMD160tALGO_HASH_SHA_DBLt
ALGO_HASH_MD2tALGO_HASH_TIGER192tALGO_HASH_HAVAL_5_160RtSIG_TYPE_DOCUMENTtSIG_TYPE_DOCUMENT_CANONtSIG_TYPE_STANDALONERRRRRRRRRtSIG_TYPE_TIMESTAMPRRRRRRRRtSIG_SUB_TYPE_PLACEHOLDERRRRRRRRRRRRRRtsig_sub_type_to_strtREVOKE_REASON_NONEtREVOKE_REASON_SUPERtREVOKE_REASON_COMPRtREVOKE_REASON_NOT_USEDtREVOKE_REASON_ID_INVALIDRRRRRRRtREVOKE_KEY_CLASS_MANDRR"R$R+R0R3R5R6R=RCRPRQRXRRtobjectRRRRRR"(R&R-RBRRRR0RHRMRQRRR2RCR:R+RRRRR+RRRRRRRqRRR{RRR"RR$RRRRRQRRR@R4RRR?RCRR.RpR/RRRR"RVRRkR3RDR'RRjR*RPR%RRRRRRRRIRRORRR<RJRRRRRLRRRR8R;R=RRR5R>RR)R7R6R=RiRERRRXRRRKRR3RRR$RRRGRNR6RPR1RHRRFRRRR5R0R,RRRRAR(R9((Rt?s-
		
W
`!E{3		
											r	$	
		4

Anon7 - 2021