
    6h+                    $   S r SSKJr  SSKrSSKrSSKJr  SSKJrJ	r	J
r
  SSKJrJrJrJrJrJr  SSKJrJr  0 r\R,                  " \5      rSr0 r\R2                  " \5      r\" S	S
S	S9  \" S	SSS9  \" S	SSSS9  S	r\R6                  R9                  \R6                  R;                  \R,                  R<                  5      \5        S\R>                  \'    " S S5      r S r!S r"S r#\" S/ \" S5      \S9S 5       r$\" S/ \" S5      \S9S 5       r%S r&\" SSS S\" S!5      4S"S#S\" S$5      4S%S&S\" S'5      4S(SS%\" S)5      \" S*5      4S+S,S%\" S-5      \" S.5      4S/S0S1\" S25      4/\RN                  -   \" S35      \S9S4 5       r(S5 r)S6 r*S7 r+g)8z&commands to sign and verify changesets    )annotationsN)_)binhexshort)cmdutilerrorhelpmatchpycompat	registrar)dateutilprocutils   ships-with-hg-core   gpg   cmd)default   keys   .*T)r   generics   Signing changes (GPG)c                  *    \ rS rSrSS jrS rS rSrg)gpgD   Nc                H    Xl         U=(       a    SU-  =(       d    SU l        g )Ns    --local-user "%s"    )pathkey)selfr   r   s      +/usr/lib/python3/dist-packages/hgext/gpg.py__init__gpg.__init__E   s    	93c9Acr   c                d    SU R                   U R                  4-  n[        R                  " X5      $ )Ns   %s --sign --detach-sign%s)r   r   r   filter)r   datagpgcmds      r   signgpg.signI   s(    -DHH0EEt,,r   c                   S=p4 [         R                  " SSS9u  pS[        R                  " US5      nUR	                  U5        UR                  5         [         R                  " SSS9u  pT[        R                  " US5      nUR	                  U5        UR                  5         SU R                  UU4-  n[        R                  " SU5      nX44 H#  n	 U	(       a  [        R                  " U	5        M#  M%     / n
S	u  pUR                  5        GH  nUR                  S
5      (       d  M  USS nUR                  S5      (       a  UR                  5       S   nML  UR                  S5      (       a*  UR                  SS5      SS nUR                  S5        SnM  UR                  S5      (       dD  UR                  S5      (       d.  UR                  S5      (       d  UR                  S5      (       d  M  Ub  U
R                  X/-   5        UR                  SS5      nSnGM     Ub  U
R                  X/-   5        U
$ ! [         a     GMz  f = f! X44 H4  n	 U	(       a  [        R                  " U	5        M#  M%  ! [         a     M2  f = f   f = f)z&returns of the good and bad signaturesNs   hg-gpg-s   .sig)prefixsuffixwbs   .txts1   %s --logger-fd 1 --status-fd 1 --verify "%s" "%s"r   )NNs   [GNUPG:]	   s   VALIDSIG
      ERRSIG          s   GOODSIG   EXPSIG	   EXPKEYSIG   BADSIG)r   mkstemposfdopenwritecloser   r   r!   unlinkOSError
splitlines
startswithsplitappend)r   r"   sigsigfiledatafilefdfpr#   retfkeysr   fingerprintls                 r   verify
gpg.verifyM   s:   !!	"***WMKB2t$BHHSMHHJ#++:gNLB2t$BHHTNHHJHII  //#v.C(		!  ) %!A <<,,!"A||K((ggimi((ggdA&r*

3"Z((<<	**<<--<<	**?KKm 34ggdA&"- ". ?KKm+,;  	 (		!  	 )sB   CI H;;
I
	I
J
I62J
6
J	 J
J	J
)r   r   )N)__name__
__module____qualname____firstlineno__r   r$   rH   __static_attributes__ r   r   r   r   D   s    B-8r   r   c                    U R                  SS5      nUR                  S5      nU(       d  U R                  SS5      n[        X#5      $ )zcreate a new gpg instancer   r   r   r   )configgetr   )uioptsgpgpathgpgkeys       r   newgpgrW      s=    ii'GXXe_F66*wr   c              #  Z  #    S nU R                  S5      n[        UR                  5       5       H?  nS[        U5      -  nU" UR	                  U5      R                  5       U5       Sh  vN   MA      SnU" U R                  U5      U5       Sh  vN   g N, N! [         a     gf = f7f)zV
walk over every sigs, yields a couple
((node, version, sig), (filename, linenumber))
c              3  l   #    SnU  H(  nU(       d  M  UR                  SS5      X44v   US-  nM*     g 7f)N   r-   r/   )r<   )fileitercontextlnrG   s       r   	parsefilesigwalk.<locals>.parsefile   s;     A774#g]33!GB	 s   24   .hgsigss
   .hgsigs|%sN	   localsigs)filereversedheadsr   readr:   vfsr9   )repor^   flrfns        r   sigwalkrk      s      
:	Bbhhj!U1X%RWWQZ224b999 "TXXb\2...	 	: 	/ sH   A(B+*B+B+4B BB B+B 
B(%B+'B((B+c                J   Uu  pVUu  pxn	SXV4-  n
[        U5      n[        XU5      n[        R                  " U	5      n	UR	                  X5      n/ nU H  nUS   S:X  a#  U R                  [        S5      XS   4-  5        M/  US   S:X  a#  U R                  [        S5      XS   4-  5        M[  US   S	:X  a"  U R                  [        S
5      XS   4-  5        O*US   S:X  a!  U R                  [        S5      XS   4-  5        UR                  US   US   US   45        M     U$ )zget the keys who signed a datas   %s:%dr   r,   s   %s Unknown key ID "%s"
rZ   r2   s   %s Bad signature from "%s"
r/   r0   s1   %s Note: Signature has expired (signed by: "%s")
r1   s0   %s Note: This key has expired (signed by: "%s")
r.   )r   node2txtbinascii
a2b_base64rH   r6   r   r=   )rS   rg   mygpgsigdatar\   rj   r]   nodeversionr>   r'   r"   rE   	validkeysr   s                  r   getkeysru      sH   FB D3 Ft9DD(D


c
"C<<"DIq6YHHQ45Q8HHIq6YHHQ89VV<LLMq6YHHIJq6"# V|#HHHIq6"# 	#a&#a&#a&12# $ r   s   sigss   hg sigs)helpcategoryc           	     P   [        U 5      n0 n[        U5       Hv  u  pEUu  pgnUu  p UR                  U5      nUR                  R                  U5      n[        XX$U5      nU(       d  MQ  UR                  U/ 5        X<   R                  U5        Mx     [        USS9 HV  nX>    HK  nSU[        UR                  R                  U5      5      4-  nU R                  S[        X5      U4-  5        MM     MX     g! [         a#    U R	                  [        S5      X4-  5         GM  f = f)zlist signed changesetss   %s:%d node does not exist
T)reverses   %5d:%ss	   %-30s %s
N)rW   rk   lookupKeyErrorwarnr   	changelogrevru   
setdefaultextendsortedr   rr   r6   keystr)rS   rg   rp   revsr"   r\   rr   rs   r>   rj   r]   nri   rE   r}   ks                   r   sigsr      s    2JED !s	D!A NNq!rg62t ' dD)AS#dnn&9&9#&>"?@@AHH]fRmQ%778  *  	GGA45@A	s   C88(D%$D%s   sigchecks   hg sigcheck REVc                   [        U 5      nUR                  U5      n[        U5      n/ n[        U5       H8  u  pgUu  pn
X:X  d  M  [	        XX6U5      nU(       d  M'  UR                  U5        M:     U(       d'  U R                  [        S5      [        U5      -  5        gU R                  [        S5      [        U5      -  5        U H   nU R                  S[        X5      -  5        M"     g)z@verify all the signatures there may be for a particular revisions   no valid signature for %s
Ns   %s is signed by:
s    %s
)
rW   ry   r   rk   ru   r   r6   r   r   r   )rS   rg   r}   rp   hexrevrE   r"   r\   rr   rs   r>   r   r   s                r   sigcheckr      s     2JE
++c
CXFD !s>%w7AqA ' 
12U3Z?@ HHQ$%c
23
F2O+, r   c                N    Uu  p#nU R                  SU5      nU(       a  SX54-  $ U$ )z/associate a string to a key (username, comment)r   s   %s (%s))rQ   )rS   r   keyiduserrF   comments         r   r   r     s1    "Eii,GTO++r   s   sign   ls   locals   make the signature local   fs   forces$   sign even if the sigfile is modifiedr   s	   no-commits'   do not commit the sigfile after signing   ks   the key id to sign withs   ID   ms   messages   use text as commit messages   TEXT   es   editFs    invoke editor on commit messagess   hg sign [OPTION]... [REV]...c                v    UR                  5          [        X/UQ70 UD6sSSS5        $ ! , (       d  f       g= f)a\  add 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)wlock_dosign)rS   rg   r   rT   s       r   r$   r$     s)    < 
r/$/$/ 
s   *
8c           	     N   [        U 40 UD6nSnSnUR                  S5      nU(       a  [        R                  " U5      US'   U(       a!  U Vs/ s H  oR	                  U5      PM     n	nOUR
                  R                  5        V
s/ s H  oUR                  :w  d  M  U
PM     n	n
[        U	5      S:  a  [        R                  " [        S5      5      eU	(       d  UR                  R                  5       /n	U	 H  n[        U5      nU R                  [        S5      UR                  R!                  U5      [#        U5      4-  5        [%        XU5      nUR'                  U5      nU(       d  [        R                  " [        S5      5      e[(        R*                  " U5      nUR-                  SS5      nUS	XU4-  -  nM     US
   (       a  UR.                  R1                  SU5        g [2        R4                  " S/5      nUS   (       dF  [7        UR9                  USSS95      (       a'  [        R                  " [        S5      [        S5      S9eUR;                  SS5       nUR                  U5        S S S 5        SUR
                  ;  a9  UR
                  R=                  U5         US    R?                  S/5        S S S 5        US   (       a  g US   nU(       d.  SRA                  U	 Vs/ s H  nS[#        U5      -  PM     sn5      n [B        RD                  " SSS0UD6nURG                  UUS   US   UUS9  g s  snf s  sn
f ! , (       d  f       N= f! , (       d  f       N= fs  snf ! [H         a/  n[        R                  " [J        RL                  " U5      5      eS nAff = f)N   0r   daterZ   s6   uncommitted merge - please provide a specific revisions   signing %d:%s
s   error while signing   
s	   %s %s %s
localra   r`   forceT)r   unknownignoreds#   working copy of .hgsigs is changed s   please commit .hgsigs manually)hints   ab	no_commitmessages    Added signature for changeset %seditforms   gpg.signr   )r   editorrO   )'rW   rR   r   	parsedatery   dirstateparentsnullidlenr	   Abortr   r|   tipr   r6   r}   r   rm   r$   rn   
b2a_base64replacerf   r=   r   exactanystatuswvfschanging_filesaddjoinr   getcommiteditorcommit
ValueErrorr   bytestr)rS   rg   r   rT   rp   sigver
sigmessager   r   nodesrr   hexnoder"   r>   msigssigsfiler   r   insts                      r   r   r   -  s   2EFJ88FD))$/V)-.AQ. "]]224
4T8KD4 	 
 u:>++KL  ^^'')*Ea&
%&$..*<*<Q*?q)JJK(jj++a 6788!!#&kk%%mw&<<<
  G}j1KK%E=t{{d{CDD++8989 
 
:u	%z" 
& &]]))$/JNNJ<( 0 K9oG**EJKU058;UK
2((F+FFT&\4<uV 	 	
q /
H 
&	% 0/ L  2kk(**40112sH   L:L?L?M$M(M&1M+ 
M
M#+
N$5*NN$c                h    US:X  a  S[        U5      -  $ [        R                  " [        S5      5      e)zmap a manifest into some textr   s   %s
s   unknown signature version)r   r	   r   r   )rg   rr   vers      r   rm   rm   w  s-    
d{T""kk!89::r   c                    [         R                  R                  [         R                  R                  [        R
                  5      [        5        S[         R                  [        '   g )Ns   GPG signing)r
   CATEGORY_ORDERinsertindexcommandCATEGORY_MAINTENANCE_HELP_CATEGORYCATEGORY_NAMES)rS   s    r   extsetupr     sD    !!'">">? +9D'r   ),__doc__
__future__r   rn   r4   mercurial.i18nr   mercurial.noder   r   r   	mercurialr   r	   r
   r   r   r   mercurial.utilsr   r   cmdtabler   
testedwithconfigtable
configitemr   r   r   r   CATEGORY_HELPr   r   rW   rk   ru   r   r   r   commitopts2r$   r   rm   r   rO   r   r   <module>r      s&   - "  	  
 
 


H
%
 #
!!+.
 



 


 
		      i//==> '?  N #A AH 6D 	"a
m.A9 B92 	b!./nM- N-0 		xq!<=>	xq!HIJ89		
 
vsA891U8D	z3"? @!G*M	wq!DEF  %&#&0'&0G2T;9r   