Ë �$nënI�ãó<—dZddlZddlZddlmZddlmZmZmZddl m Z m Z m Z m Z mZmZddlmZmZiZej(e«ZdZiZej.e«Zedd d¬ «edd d¬ «edd dd ¬«dZe j2j5e j2j7ej(j8«e«de j:e<Gd„d«Zd„Zd„Z d„Z!edged«e¬«d„«Z"edged«e¬«d„«Z#d„Z$edddded «fd!d"ded#«fd$d%ded&«fd'd d$ed(«ed)«fd*d+d$ed,«ed-«fd.d/d0ed1«fge jJzed2«e¬«d3„«Z&d4„Z'd5„Z(d6„Z)y)7z&commands to sign and verify changesetséN)Ú_)ÚbinÚhexÚshort)ÚcmdutilÚerrorÚhelpÚmatchÚpycompatÚ registrar)ÚdateutilÚprocutilsships-with-hg-coreógpgócmd)Údefaultókeys.*T)rÚgenericsSigning changes (GPG)có —eZdZdd„Zd„Zd„Zy)ÚgpgNcó6—||_|xrd|zxsd|_y)Ns --local-user "%s"ó)ÚpathÚkey)Úselfrrs ú-usr/lib/python3.12/site-packages/hgext/gpg.pyÚ__init__z gpg.__init__Ds €ØˆŒ ØÒ9Ð3°cÑ9ÒA¸cˆ�rcód—d|j|jfz}tj||«S)Ns%s --sign --detach-sign%s)rrrÚfilter)rÚdataÚgpgcmds rÚsignzgpg.signHs*€Ø-°·±¸D¿H¹HÐ0EÑEˆÜ�‰˜t VÓ,Ð,rcó¤—dx}} tjdd¬«\}}tj|d«}|j |«|j «tjdd¬«\}}tj|d«}|j |«|j «d|j ||fz}tjd|«}||fD]} | rtj| «Œ g} d \} } |j«D]è} | jd «sŒ| d d} | jd «r| j«d } Œ?| jd«r)| jdd«dd} | jd«d} Œy| jd«s4| jd«s#| jd«s| jd«sŒ¾| �| j| | gz«| jdd«} d} Œê| �| j| | gz«| S#t$rY�ŒEwxYw#||fD])} | rtj| «Œ#t$rYŒ'wxYwwxYw)z&returns of the good and bad signaturesNshg-gpg-s.sig)ÚprefixÚsuffixÚwbs.txts1%s --logger-fd 1 --status-fd 1 --verify "%s" "%s"r)NNs[GNUPG:]é sVALIDSIGé óERRSIGó éésGOODSIGóEXPSIGó EXPKEYSIGóBADSIG)r ÚmkstempÚosÚfdopenÚwriteÚcloserrrÚunlinkÚOSErrorÚ splitlinesÚ startswithÚsplitÚappend)rrÚsigÚsigfileÚdatafileÚfdÚfpr ÚretÚfÚkeysrÚ fingerprintÚls rÚverifyz gpg.verifyLs,€à!Ð!ˆ�(ð ä"×*Ñ*°*À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à˜xÓ(�ðÙÜŸ ™  !œ øñ)ð ˆØ%шˆ[Ø—‘Ö!ˆ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Ñ+Ô ,؈ øô;òÚðûð ˜xÓ(�ðÙÜŸ ™  !œ ùÜòÙðúñ )úsB†C HÃH È HÈHÈIÈ&H>È=IÈ> I ÉIÉ I É I)N)Ú__name__Ú __module__Ú __qualname__rr!rD©rrrrCs„óBò-ó8rrc óˆ—|jdd«}|jd«}|s|jdd«}t||«S)zcreate a new gpg instancerrrr)ÚconfigÚgetr)ÚuiÚoptsÚgpgpathÚgpgkeys rÚnewgpgrP‡s?€à�i‰i˜ Ó'€GØ �X‰X�e‹_€FÙ Ø—‘˜6 6Ó*ˆÜ ˆw˜Ó Ðrc#óPK—d„}|jd«}t|j««D]?}dt|«z}||j |«j «|«D]}|–—ŒŒA d}||j |«|«D]}|–—Œy#t$rYywxYw­w)zb walk over every sigs, yields a couple ((node, version, sig), (filename, linenumber)) c3ó^K—d}|D]"}|sŒ|jdd«||ff–—|dz }Œ$y­w)Nér)r+)r8)ÚfileiterÚcontextÚlnrCs rÚ parsefilezsigwalk..parsefile–s>èø€Ø ˆÛˆAÙØØ—7‘7˜4 Ó# g¨r ]Ð3Ò 3Ø �!‰G‰Bñ ùs‚+-ó.hgsigss .hgsigs|%só localsigsN)ÚfileÚreversedÚheadsrÚreadr6ÚvfsÚIOError)ÚreporWÚflÚrÚfnÚitems rÚsigwalkre�sžèø€ò ð �‰�:Ó €BÜ �b—h‘h“jÖ !ˆØ œU 1›XÑ %ˆÙ˜bŸg™g a›j×3Ñ3Ó5°rÖ:ˆDØ‹Jñ;ð"ð à ˆÙ˜dŸh™h r›l¨BÖ/ˆDØ‹Jñ0øä ò Ù ð üs*‚A0B&Á3#BÂB& B# B&Â"B#Â#B&cóJ—|\}}|\}}} d||fz} t|«}t|||«} tj| «} |j | | «} g} | D]Ê}|ddk(r#|j t d«| |dfz«Œ.|ddk(r#|j t d«| |dfz«ŒY|dd k(r#|j t d «| |dfz«n*|dd k(r"|j t d «| |dfz«| j|d|d|d f«ŒÌ| S)zget the keys who signed a datas%s:%drr(s%s Unknown key ID "%s" rSr.s%s Bad signature from "%s" r+r,s1%s Note: Signature has expired (signed by: "%s") r-s0%s Note: This key has expired (signed by: "%s") r*)rÚnode2txtÚbinasciiÚ a2b_base64rDr2rr9)rLr`ÚmygpgÚsigdatarUrcrVÚnodeÚversionr:r#rrAÚ validkeysrs rÚgetkeysro­sZ€à �F€BˆØ Ñ€Dˆ'�3Ø ˜˜R˜Ñ €FÜ ˆt‹9€Dä �D˜$ Ó (€DÜ × Ñ ˜cÓ "€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ÀSÈÁVÐÓ"?Ð@Ñ@ˆAØ �H‰H�]¤f¨R°£m°QÐ%7Ñ7Õ 8ññ*øôò Ø �G‰G”AÐ4Ó5¸¸R¸Ñ@Ô AÚ ð ús«C7Ã7(D#Ä"D#ssigcheckshg sigcheck REVcó—t|«}|j|«}t|«}g}t|«D]4\}}|\}} } ||k(sŒt |||||«} | sŒ$|j | «Œ6|s'|j td«t|«z«y|j td«t|«z«|D] } |j dt|| «z«Œ"y)z@verify all the signatures there may be for a particular revisionsno valid signature for %s Ns%s is signed by: s %s ) rPrsrreroryr2rrr{) rLr`rwrjÚhexrevrArrUrlrmr:r~rs rÚsigcheckr‚ésÏ€ô �2‹J€EØ �+‰+�cÓ €CÜ �‹X€FØ €Dä  ž‰ ˆˆgØ!шˆg�sØ �6‹>ܘ˜D %¨¨wÓ7ˆAÚØ— ‘ ˜A•ð 'ñ Ø �‰”Ð1Ó2´U¸3³ZÑ?Ô@Øð‡H�HŒQÐ$Ó %¬¨c« Ñ 2Ô3ÛˆØ �‰�œF 2 s›OÑ+Õ,ñrcóH—|\}}}|jd|«}|rd||fzS|S)z/associate a string to a key (username, comment)rs%s (%s))rJ)rLrÚkeyidÚuserrBÚcomments rr{r{s5€à"Ñ€Eˆ4�Ø�i‰i˜  Ó,€GÙØ˜T 7˜OÑ+Ð+àˆ rssignólólocalsmake the signature localófóforces$sign even if the sigfile is modifiedrs no-commits'do not commit the sigfile after signingóksthe key id to sign withsIDómómessagesuse text as commit messagesTEXTóeseditFs invoke editor on commit messagesshg sign [OPTION]... [REV]...cón—|j«5t||g|¢­i|¤Žcddd«S#1swYyxYw)atadd 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)rLr`r|rMs rr!r! s+€ð< �‰�Ü�r˜4Ð/ $Ò/¨$Ñ/÷ �Šús‘+«4c ó —t|fi|¤Ž}tj|«}d}d}|jd«}|rt j |«|d<|r|D�cgc]}|j |«‘Œ} }n€|jj«D� cgc]} | |jk7sŒ| ‘Œ} } t| «dkDrtjtd««‚| s|jj«g} | D]¾}t!|«} |j#td«|jj%|«t'|«fz«t)|||«} |j+| «} | stjtd««‚t-j.| «} | j1dd«} |d | || fzz }ŒÀ|d r|j2j5d |«y|d s\t7j8d g«}t;|j=|dd¬««r)tjtd«td«¬«‚|j?d d«}|j#|«|jA«d |jvr9|jjC|«5|djEd g«ddd«|dry|d}|s+djG| D�cgc]}dt'|«z‘Œc}«} tIjJddditjL|«¤Ž}|jO||d|d|¬«ycc}wcc} w#1swYŒ“xYwcc}w#tP$r-}tjtjR|««‚d}~wwxYw)Nó0rsdaterSs6uncommitted merge - please provide a specific revisionssigning %d:%s serror while signingó s %s %s %s rˆrYrŠrXT)r ÚunknownÚignoreds#working copy of .hgsigs is changed splease commit .hgsigs manually)Úhintsabs no_commitr�s Added signature for changeset %sÚeditformsgpg.signsuser)r ÚeditorrH)*rPr Ú byteskwargsrKr Ú parsedatersÚdirstateÚparentsÚnullidÚlenrÚAbortrrvÚtiprr2rwrrgr!rhÚ b2a_base64Úreplacer^r9r ÚexactÚanyÚstatusÚwvfsr3Úchanging_filesÚaddÚjoinrÚgetcommiteditorÚ strkwargsÚcommitÚ ValueErrorÚbytestr)rLr`r|rMrjÚsigverÚ sigmessageÚdater}ÚnodesrlÚhexnoderr:ÚmsigsÚsigsfileÚmessager™Úinsts rr‘r‘.s?€Ü �2Ñ ˜Ñ €EÜ × Ñ  Ó %€DØ €FØ€Jà �8‰8�GÓ €DÙ Ü ×*Ñ*¨4Ó0ˆˆW‰ á Ù)-Ó.© A�—‘˜Q•¨ˆÑ.ð"Ÿ]™]×2Ñ2Ô4ó Ù4�T¸ÀÇ Á Ó8KŠDÐ4ð ð ô ˆu‹:˜Š>Ü—+‘+ÜÐKÓLóð ñØ—^‘^×'Ñ'Ó)Ð*ˆEã ˆÜ�a“&ˆØ �‰”Ð%Ó&¨$¯.©.×*<Ñ*<¸QÓ*?ÄÀqÃÐ)JÑJÔK䘘a Ó(ˆØ�j‰j˜ÓˆÙÜ—+‘+œaÐ 6Ó7Ó8Ð 8Ü×!Ñ! #Ó&ˆØ�k‰k˜% Ó%ˆØ�m w°¸Ð&<Ñ<Ñ<‰ ðð ˆH‚~Ø �‰�‰˜  jÔ1Øà �Š>Ü— ‘ ˜Z˜LÓ)ˆÜ ˆt�{‰{ °¸dˆ{ÓCÔ DÜ—+‘+ÜÐ8Ó9ÜÐ8Ó9ôð ð �y‰y˜ UÓ+€HØ ‡N�N�:ÔØ ‡N�NÔà˜Ÿ™Ñ&Ø �]‰]× )Ñ )¨$Õ /Ø �‰J�N‰N˜J˜<Ô (÷0ð ˆLÒØà�:Ñ€GÙ à—*‘*ÙEJÓ KÁUÀÐ 0´5¸³8Ó ;ÀUÑ Kó ˆð2Ü×(Ñ(ñ Ø ð Ü$,×$6Ñ$6°tÓ$<ñ ˆð � ‰ Ø �T˜'‘] D¨¡M¸Àvð õ ùòu/ùò ÷P0Ð /üò Løô ò2Ü�k‰kœ(×*Ñ*¨4Ó0Ó1Ð1ûð2ús=ÁL2ÂL7Â#L7ÊL<ËMË+AM Ì<MÍ NÍ(M>Í>Ncód—|dk(rdt|«zStjtd««‚)zmap a manifest into some textr“s%s sunknown signature version)rrr r)r`rlÚvers rrgrgzs-€à ˆd‚{Øœ˜T›Ñ"Ð"ä�k‰kœ!Ð8Ó9Ó:Ð:rcóЗtjjtjjtj «t «dtjt <y)Ns GPG signing)r ÚCATEGORY_ORDERÚinsertÚindexÚcommandÚCATEGORY_MAINTENANCEÚ_HELP_CATEGORYÚCATEGORY_NAMES)rLs rÚextsetuprÂsD€ä×Ñ×ÑÜ ×Ñ×!Ñ!¤'×">Ñ">Ó?Äôð+9„D×ÑœÒ'r)*Ú__doc__rhr0Úmercurial.i18nrÚmercurial.noderrrÚ mercurialrrr r r r Úmercurial.utilsr rÚcmdtabler¿Ú testedwithÚ configtableÚ configitemrÁr¼r½r¾Ú CATEGORY_HELPrÂrrPrerorr‚r{Ú commitopts2r!r‘rgrÃrHrrÚrÏs)ðñ -óÛ å÷ñ÷ ÷÷ð €Ø ˆ)× Ñ ˜HÓ %€ð #€ à€ Ø !ˆY× !Ñ ! +Ó .€ á Ø Ø Ø õñ  Ø Ø Ø õñ  Ø Ø Ø Ø õ ð€Ø×Ñ×ÑØ×Ñ×јi×/Ñ/×=Ñ=Ó>Àôð'?€×Ñ�NÑ#÷AñAòH ò ò:ñ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òI2òX;ó9r