ó
    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)ÚgpgéD   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Ð3°cÑ9×A¸cˆ�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(   € Ø-°·±¸D¿H¹HÐ0EÑ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  p¼U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ÑM‰KˆBÜ—’˜2˜tÓ$ˆBØ�H‰H�SŒMØ�H‰HŒJÜ#×+Ò+°:ÀgÑN‰LˆBÜ—’˜2˜tÓ$ˆBØ�H‰H�TŒNØ�H‰HŒJàHà—I‘IØØðñð ô —/’/ # vÓ.ˆCàÓ(�ðÞÜŸ	š	 !žñ ñ )ð ˆØ%ÑˆØ—‘×!ˆAð —<‘< ×,Ñ,ÙØ�!�"�ˆAØ�|‰|˜K×(Ñ(àŸg™g›i¨™m’Ø—‘˜i×(Ñ(Ø—g‘g˜d AÓ& r¨Ð*�Ø—
‘
˜3”Ø"’à—‘˜Z×(Ñ(Ø—<‘< 	×*Ñ*Ø—<‘< ×-Ñ-Ø—<‘< 	×*Ó*à‘?Ø—K‘K  mÑ 3Ô4Ø—g‘g˜d AÓ&�Ø"“ñ- "ð. ‰?Ø�K‰K˜˜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=   € à�i‰i˜ Ó'€GØ�X‰X�e‹_€FÞØ—‘˜6 6Ó*ˆÜˆ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ÞÙØ—7‘7˜4 Ó# g ]Ð3Ò3Ø�!‰GŠBò	 ùs   ‚24ó   .hgsigss
   .hgsigs|%sNó	   localsigs)ÚfileÚreversedÚheadsr   Úreadr:   Úvfsr9   )Úrepor^   ÚflÚrÚfns        r   Úsigwalkrk   ‘   s›   é € òð 
�‰�:Ó	€BÜ�b—h‘h“jÖ!ˆØœU 1›XÑ%ˆÙ˜RŸW™W Q›Z×2Ñ2Ó4°bÓ9×9Ò9ñ "ðàˆÙ˜TŸX™X b›\¨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	                  X¹5      n/ nU HÍ  nUS   S:X  a#  U R                  [        S5      X®S   4-  5        M/  US   S:X  a#  U R                  [        S5      X®S   4-  5        M[  US   S	:X  a"  U R                  [        S
5      X®S   4-  5        O*US   S:X  a!  U R                  [        S5      X®S   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  € à�F€BØ Ñ€D�3Ø˜˜Ñ €FÜˆt‹9€Dä�D Ó(€DÜ
×
Ò
˜cÓ
"€CØ�<‰<˜Ó"€Dà€IãˆØˆq‰6�YÓØ�H‰H”QÐ4Ó5¸ÀQÁÐ8HÑHÔIÙØˆq‰6�YÓØ�H‰H”QÐ8Ó9¸VÈÁVÐ<LÑLÔMÙØˆq‰6�YÓØ�H‰HÜÐIÓJØ˜q™6Ð"ñ#õð �‰V�|Ó#Ø�H‰HÜÐHÓIØ˜q™6Ð"ñ#ôð 	×Ñ˜#˜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      Xš4-  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  € ô �2‹J€EØ€Dä  ž‰ˆØ!Ñˆ�sØ‰ˆð	Ø—‘˜DÓ!ˆAð �N‰N×Ñ˜qÓ!ˆÜ�r ¨gÓ6ˆÞÙØ�‰˜˜2ÔØ‰�‰�tÖñ 'ô �d DÔ)ˆØ”ˆAØ˜S¤# d§n¡n×&9Ñ&9¸#Ó&>Ó"?Ð@Ñ@ˆAØ�H‰H�]¤f¨R£m°QÐ%7Ñ7Ö8ó ò *øô ó 	Ø�G‰G”AÐ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  p‰n
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Å   € ô �2‹J€EØ
�+‰+�cÓ
€CÜ�‹X€FØ€Dä  ž‰ˆØ!Ñˆ�sØ�>Ü˜ %¨wÓ7ˆAßˆqØ—‘˜A–ñ 'ö Ø
�‰”Ð1Ó2´U¸3³ZÑ?Ô@Øð ‡H�HŒQÐ$Ó%¬¨c«
Ñ2Ô3ÛˆØ
�‰�œF 2›OÑ+Ö,ò 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�Ø�i‰i˜ Ó,€GÞØ˜T˜OÑ+Ð+àˆ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  o�R	                  U5      PM     n	nO‹UR
                  R                  5        V
s/ s H  oªU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	XµU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à�8‰8�FÓ€DÞÜ×)Ò)¨$Ó/ˆˆV‰æÙ)-Ó.ª A—‘˜Q–©ˆÐ.ˆð "Ÿ]™]×2Ñ2Ô4ó
Ú4�TÀÇÁÑ8K�DÑ4ð 	ð 
ô ˆu‹:˜‹>Ü—+’+ÜÐKÓLóð ö Ø—^‘^×'Ñ'Ó)Ð*ˆEãˆÜ�a“&ˆØ
�‰”Ð%Ó&¨$¯.©.×*<Ñ*<¸QÓ*?ÄÀqÃÐ)JÑJÔKä˜ Ó(ˆØ�j‰j˜ÓˆÞÜ—+’+œaÐ 6Ó7Ó8Ð8Ü×!Ò! #Ó&ˆØ�k‰k˜% Ó%ˆØ�m w¸Ð&<Ñ<Ñ<Š
ñ ð ˆG‡}Ø�‰�‰˜ jÔ1Øä�KŠK˜˜Ó%€Eà��=Üˆt�{‰{ °¸dˆ{ÐC×DÑDÜ—+’+ÜÐ8Ó9ÜÐ8Ó9ñð ð
 
�‰�:˜uÔ	%¨Ø�‰�zÔ"÷ 
&ð ˜Ÿ™Ó&Ø�]‰]×)Ñ)¨$Õ/Ø�‰J�N‰N˜J˜<Ô(÷ 0ð ˆK×Øà�9‰o€GÞà—*‘*ÙEJÓKÂUÀÐ0´5¸³8Ô;ÁUÑKó
ˆð2Ü×(Ò(ÑF°+ÐFÀÑFˆØ�‰Ø�T˜&‘\ 4¨¡<°uÀVð 	ò 	
ùòq /ùò
÷H 
&Õ	%ú÷ 0Õ/üò Løô ó 2Ü�kŠkœ(×*Ò*¨4Ó0Ó1Ð1ûð2úsH   Á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›Ñ"Ð"ä�kŠkœ!Ð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   € ä×Ñ×ÑÜ×Ñ×!Ñ!¤'×">Ñ">Ó?Äôð +9„D×ÑœÒ'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ð9ñ2 	ˆ�b™!Ð.Ó/¸nÑMñ-ó Nð-ò0ñ 	Øà	ˆx˜™qÐ!<Ó=Ð>Ø	ˆx˜™qÐ!HÓIÐJàØØÙÐ8Ó9ð		
ð 
ˆv�s™AÐ8Ó9¹1¸U»8ÐDØ	ˆz˜3¡Ð"?Ó @Á!ÀGÃ*ÐMØ	ˆw˜™qÐ!DÓEÐFðð ×Ñññ Ð%Ó&Øñ#ñ&0ó'ð&0òG2òT;ó9r   