HEX
Server: Apache
System: Linux p102.lithium.hosting 4.18.0-553.141.1.el8_10.x86_64 #1 SMP Fri Jul 10 17:48:02 UTC 2026 x86_64
User: bvzmoamr (9955)
PHP: 8.1.34
Disabled: syslog
Upload Files
File: //lib64/python2.7/site-packages/hgext/gpg.pyc
�
1�3\c@@sbdZddlmZddlZddlZddlmZddlmZm	Z	m
Z
mZmZ
mZmZddlmZmZiZeje�ZdZiZeje�Zedd	d
d�eddd
d�eddd
dd
e�dZdefd��YZd�Zd�Zd�Zedged�de�d��Z edged�de�d��Z!d�Z"edddded�fddded �fd!d"ded#�fd$dd!ed%�ed&�fd'd(d!ed)�ed*�fd+d,e#ed-�fgej$ed.�de�d/��Z%d0�Z&d1�Z'd2�Z(dS(3s&commands to sign and verify changesetsi(tabsolute_importN(t_(tcmdutilterrorthelptmatchtnodetpycompatt	registrar(tdateutiltprocutilsships-with-hg-coretgpgtcmdtdefaulttkeys.*tgenericcB@s&eZdd�Zd�Zd�ZRS(cC@s&||_|rd|pd|_dS(Ns --local-user "%s"t(tpathR(tselfRR((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyt__init__6s	cC@s&d|j|jf}tj||�S(Ns%s --sign --detach-sign%s(RRR
tfilter(Rtdatatgpgcmd((s//usr/lib64/python2.7/site-packages/hgext/gpg.pytsign:sc	C@sSd	}}z�tjdddd�\}}tj|d�}|j|�|j�tjdddd�\}}tj|d�}|j|�|j�d|j||f}tj	d|�}Wd	xB||fD]4}	y|	r�tj
|	�nWq�tk
rq�Xq�WXg}
d\}}x
|j�D]�}
|
j
d
�sGq,n|
d}
|
j
d�rs|
j�d
}q,|
j
d�r�|
jdd�d }|jd�d	}q,|
j
d�s�|
j
d�s�|
j
d�s�|
j
d�r,|d	k	r
|
j||g�n|
jdd�}d	}q,q,W|d	k	rO|
j||g�n|
S(s' returns of the good and bad signaturestprefixshg-gpg-tsuffixs.sigtwbs.txts1%s --logger-fd 1 --status-fd 1 --verify "%s" "%s"RNs[GNUPG:]i	tVALIDSIGi
tERRSIGt iitGOODSIGtEXPSIGt	EXPKEYSIGtBADSIG(NN(tNoneRtmkstemptostfdopentwritetcloseRR
RtunlinktOSErrort
splitlinest
startswithtsplittappend(RRtsigtsigfiletdatafiletfdtfpRtrettftkeysRtfingerprinttl((s//usr/lib64/python2.7/site-packages/hgext/gpg.pytverify>sT





	

	
N(t__name__t
__module__R"RRR8(((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyR5s	cK@sI|jdd�}|jd�}|s<|jdd�}nt||�S(screate a new gpg instanceRRR(tconfigtgetR(tuitoptstgpgpathtgpgkey((s//usr/lib64/python2.7/site-packages/hgext/gpg.pytnewgpgps
cc@s�d�}|jd�}x[t|j��D]G}dtj|�}x+||j|�j�|�D]}|VqcWq+Wy2d}x%||j|�|�D]}|Vq�WWntk
r�nXdS(sb
    walk over every sigs, yields a couple
    ((node, version, sig), (filename, linenumber))
    cs@sNd}xA|D]9}|sq
n|jdd�||ffV|d7}q
WdS(NiRi(R,(tfileitertcontexttlnR7((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyt	parsefile}s
s.hgsigss
.hgsigs|%st	localsigsN(	tfiletreversedtheadsthgnodetshorttreadR*tvfstIOError(trepoREtfltrtfntitem((s//usr/lib64/python2.7/site-packages/hgext/gpg.pytsigwalkxs		%


cC@s�|\}}|\}}}	d||f}
tj|�}t|||�}tj|	�}	|j||	�}g}
x|D]�}|ddkr�|jtd�|
|df�qzn|ddkr�|jtd�|
|df�qzn|dd	kr"|jtd
�|
|df�n4|ddkrV|jtd�|
|df�n|
j|d|d|d
f�qzW|
S(sget the keys who signed a datas%s:%diRs%s Unknown key ID "%s"
iR!s%s Bad signature from "%s"
iRs1%s Note: Signature has expired (signed by: "%s")
R s0%s Note: This key has expired (signed by: "%s")
i(	RJtbintnode2txttbinasciit
a2b_base64R8R&RR-(R=ROtmygpgtsigdataRCRRRDRtversionR.RRR5t	validkeysR((s//usr/lib64/python2.7/site-packages/hgext/gpg.pytgetkeys�s.
!!&tsigsshg sigsthelpcategorycC@sct|�}i}x�t|�D]�\}}|\}}}|\}	}
y|j|�}Wn1tk
r�|jtd�|	|
f�qnX|jj|�}t|||||�}
|
s�qn|j	|g�||j
|
�qWxtt|dt�D]`}xW||D]K}d|t
j|jj|��f}|jdt||�|f�qWq�WdS(slist signed changesetss%s:%d node does not exist
treverses%5d:%ss	%-30s %s
N(RARTtlookuptKeyErrortwarnRt	changelogtrevR]t
setdefaulttextendtsortedtTrueRJthexRR&tkeystr(R=RORYtrevsRRCRR[R.RRRDtnRQR5Retk((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyR^�s(
%tsigcheckshg sigcheck REVc
C@st|�}|j|�}tj|�}g}xft|�D]X\}}|\}}	}
||kr=t|||||�}|r�|j|�q�q=q=W|s�|jtd�tj	|��dS|jtd�tj	|��x(|D] }|jdt
||��q�WdS(s@verify all the signatures there may be for a particular revisionsno valid signature for %s
Ns%s is signed by:
s %s
(RARaRJRjRTR]RgR&RRKRk(
R=ROReRYthexrevR5RRCRR[R.RnR((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyRo�s   
cC@s=|\}}}|jd|�}|r5d||fS|SdS(s/associate a string to a key (username, comment)Rs%s (%s)N(R;(R=RtkeyidtuserR6tcomment((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyRk�s
RR7tlocalsmake the signature localR4tforces$sign even if the sigfile is modifiedRs	no-commits'do not commit the sigfile after signingRnsthe key id to sign withtIDtmtmessagesuse text as commit messagetTEXTtetedits invoke editor on commit messagesshg sign [OPTION]... [REV]...c	O@s*|j��t||||�SWdQXdS(stadd a signature for the current or given revision

    If no revision is given, the parent of the working directory is used,
    or tip if no revision is checked out.

    The ``gpg.cmd`` config setting can be used to specify the command
    to run. A default key can be specified with ``gpg.key``.

    See :hg:`help dates` for a list of formats valid for -d/--date.
    N(twlockt_dosign(R=RORlR>((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyR�s
cO@sjt||�}tj|�}d}d}|jd�}|rUtj|�|d<n|r�g|D]}|j|�^qb}	nvg|jj�D]}
|
t	j
kr�|
^q�}	t|	�dkr�tj
td���n|	s�|jj�g}	nx�|	D]�}t	j|�}|jtd�|jj|�t	j|�f�t|||�}|j|�}
|
s�tj
td���ntj|
�}
|
jdd�}
|d	|||
f7}q�W|d
r�|jjd|�dS|dsPtj|jdd
g�}t|j d|dt!dt!��rPtj
td�dtd���qPn|j"d
d�}|j|�|j#�d
|jkr�|dj%d
g�n|dr�dS|d}|s�dj&g|	D]}dt	j|�^q��}nyIt'j(ddtj)|��}|j*||d|dd|d|�Wn+t+k
re}tj
tj,|���nXdS(Nt0Rtdateis6uncommitted merge - please provide a specific revisionssigning %d:%s
serror while signings
s	%s %s %s
RtRFRus.hgsigsRtunknowntignoreds#working copy of .hgsigs is changed thintsplease commit .hgsigs manuallytabt	no_commitRxs Added signature for changeset %steditformsgpg.signRrteditor(-RARtbyteskwargsR<R	t	parsedateRatdirstatetparentsRJtnullidtlenRtAbortRRdttipRjR&ReRKRVRRWt
b2a_base64treplaceRMR-RtexacttroottanytstatusRitwvfsR'R"taddtjoinRtgetcommiteditort	strkwargstcommitt
ValueErrortbytestr(R=RORlR>RYtsigvert
sigmessageRRmtnodesRthexnodeRR.tmsigstsigsfileRxR�tinst((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyR}sh%


$



	) cC@s6|dkrdtj|�Stjtd���dS(smap a manifest into some textR~s%s
sunknown signature versionN(RJRjRR�R(RORtver((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyRVIscC@s3tjjtjjtj�t�dtjt<dS(NsGPG signing(RtCATEGORY_ORDERtinserttindextcommandtCATEGORY_MAINTENANCEt_HELP_CATEGORYtCATEGORY_NAMES(R=((s//usr/lib64/python2.7/site-packages/hgext/gpg.pytextsetupPs	()t__doc__t
__future__RRWR$tmercurial.i18nRt	mercurialRRRRRRJRRtmercurial.utilsR	R
tcmdtableR�t
testedwithtconfigtablet
configitemR"RiR�tobjectRRARTR]R^RoRktFalsetcommitopts2RR}RVR�(((s//usr/lib64/python2.7/site-packages/hgext/gpg.pyt<module>sR4	;			''					E