-=[ Mr. Bumblebee ]=-
_Indonesia_

Path : /usr/lib/python2.7/dist-packages/bzrlib/
File Upload :
Current File : //usr/lib/python2.7/dist-packages/bzrlib/gpg.pyc

ó
B¦Rc@@sGdZddlmZddlZddlZddlmZddlmZeeƒdƒddl	m
Z
mZdZdZ
d	Zd
ZdZdd„Zd
efd„ƒYZdefd„ƒYZd„Zdefd„ƒYZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!dS(sGPG signing and checking logic.i(tabsolute_importN(tStringIO(tlazy_imports£
import errno
import subprocess

from bzrlib import (
    config,
    errors,
    trace,
    ui,
    )
from bzrlib.i18n import (
    gettext, 
    ngettext,
    )
(t
deprecated_intdeprecated_methodiiiic
C@sidt6dt6dt6dt6dt6}g}t}t|ƒ}tjj	ƒ}zšx“t
|j||ƒƒD]y\}	\}
}}|jd|	|ƒ|j
|
||gƒ||cd7<|tkrÏt}n|dk	rl|ƒqlqlWWd|jƒX|||fS(sÉDo verifications on a set of revisions

    :param repository: repository object
    :param revids: list of revision ids to verify
    :param strategy: GPG strategy to use
    :param process_events_callback: method to call for GUI frontends that
        want to keep their UI refreshed

    :return: count dictionary of results of each type,
             result list for each revision,
             boolean True if all results are verified successfully
    isverifying signaturesiN(tSIGNATURE_VALIDtSIGNATURE_KEY_MISSINGtSIGNATURE_NOT_VALIDtSIGNATURE_NOT_SIGNEDtSIGNATURE_EXPIREDtTruetlentuit
ui_factorytnested_progress_bart	enumeratetverify_revision_signaturestupdatetappendtFalsetNonetfinished(
t
repositorytrevidststrategytprocess_events_callbacktcounttresulttall_verifiablettotaltpbtitrev_idtverification_resulttuid((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pytbulk_verify_signatures8s,

"	tDisabledGPGStrategycB@sAeZdZed„ƒZd„Zd„Zd„Zd„ZRS(s*A GPG Strategy that makes everything fail.cC@stS(N(R
(((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pytverify_signatures_availablebscC@sdS(s%Real strategies take a configuration.N((tselftignored((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyt__init__fscC@stjdƒ‚dS(NsSigning is disabled.(terrorst
SigningFailed(R&tcontent((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pytsigniscC@stjdƒ‚dS(Ns#Signature verification is disabled.(R)tSignatureVerificationFailed(R&R+t	testament((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pytverifylscC@sdS(N((R&tcommand_line_input((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pytset_acceptable_keysps(	t__name__t
__module__t__doc__tstaticmethodR%R(R,R/R1(((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR$_s			tLoopbackGPGStrategycB@sãeZdZed„ƒZd„Zd„Zd„Zd„Ze	e
dƒƒd	„ƒZe	e
dƒƒd
„ƒZe	e
dƒƒd„ƒZ
e	e
dƒƒd„ƒZe	e
dƒƒd
„ƒZe	e
dƒƒd„ƒZRS(sZA GPG Strategy that acts like 'cat' - data is just passed through.
    Used in tests.
    cC@stS(N(R
(((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR%yscC@sdS(s%Real strategies take a configuration.N((R&R'((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR(}scC@sd|dS(Ns&-----BEGIN PSEUDO-SIGNED CONTENT-----
s$-----END PSEUDO-SIGNED CONTENT-----
((R&R+((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR,€scC@s
tdfS(N(RR(R&R+R.((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR/„scC@s[|dk	rW|jdƒ}g|_x0|D]%}|dkr@q+|jj|ƒq+WndS(Nt,tunknown(Rtsplittacceptable_keysR(R&R0tpatternstpattern((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR1‡s	
iiicC@st|||ƒS(N(R#(R&t	revisionsR((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pytdo_verifications‘scC@s
t|ƒS(N(tvalid_commits_message(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR?•scC@s
t|ƒS(N(tunknown_key_message(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR@™scC@s
t|ƒS(N(tcommit_not_valid_message(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRAscC@s
t|ƒS(N(tcommit_not_signed_message(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRB¡scC@s
t|ƒS(N(texpired_commit_message(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRC¥s(iii(iii(iii(iii(iii(iii(R2R3R4R5R%R(R,R/R1RRR>R?R@RARBRC(((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR6ts				
cC@sOtjjdƒ}|dk	r>|tjd<tjd|ƒn
tjdƒdS(NtTTYtGPG_TTYssetting GPG_TTY=%ss;** Env var TTY empty, cannot set GPG_TTY.  Is TTY exported?(tostenvirontgetRttracetmutter(ttty((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyt_set_gpg_ttyªs

tGPGStrategycB@s|eZdZdZd„Zed„ƒZd„Zd„Z	d„Z
d„Zee
dƒƒdd
„ƒZee
dƒƒd„ƒZee
dƒƒd„ƒZee
dƒƒd
„ƒZee
dƒƒd„ƒZee
dƒƒd„ƒZee
dƒƒd„ƒZee
dƒƒd„ƒZee
dƒƒd„ƒZee
dƒƒd„ƒZee
d ƒƒd„ƒZRS(!s$GPG Signing and checking facilities.cC@sB||_yddl}|jƒ|_Wntk
r=}nXdS(Ni(t
_config_stacktgpgmetContexttcontexttImportError(R&tconfig_stackROterror((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR(¼s	cC@s/yddl}tSWntk
r*}tSXdS(s
        check if this strategy can verify signatures

        :return: boolean if this strategy can verify signatures
        iN(ROR
RRR(RORT((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR%Äs
cC@sd|jjdƒ}|dks*|dkrHtj|jjdƒƒ}n|jjdƒdd|gS(Ntgpg_signing_keytdefaulttemailtgpg_signing_commands--clearsigns-u(RNRHRtconfigtextract_email_address(R&tkey((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyt
_command_lineÑs
cC@sxt|tƒr!tjdƒ‚ntjjƒt}tj	dkrLd}nyÒtj|j
ƒdtjdtjd|ƒ}y^|j|ƒd}|jdkr®|jƒn|jdkrÕtj|j
ƒƒ‚n|SWn@tk
r}|jtjkrtj|j
ƒƒ‚q‚nXWnStk
r4‚n@tk
rs}|jtjkrmtj|j
ƒƒ‚qt‚nXdS(NR+twin32tstdintstdoutt
preexec_fni(t
isinstancetunicodeR)tBzrBadParameterUnicodeRR
t
clear_termRLtsystplatformRt
subprocesstPopenR\tPIPEtcommunicatet
returncodetwaitR*tOSErrorterrnotEPIPEt
ValueErrortENOENT(R&R+R`tprocessRte((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR,Ús8
				

c
C@s¢yddl}Wn"tk
r4}tj|ƒ‚nXt|ƒ}tƒ}y|jj|d|ƒ}Wn)|jk
r‘}tj	|dƒ‚nXt
|ƒdkr®tdfS|dj}|j
dk	rê||j
krêt|dfSn||jƒkrtdfS|dj|j@rb|jj|ƒ}	|	jdj}
|	jdj}t|
d|dfS|dj|j@r€tdfS|dj|j@r¢t|dfS|djdkrà|j
dk	rà||j
kràtdfSn|djdkr|j
dkrtdfS|dj|j@rq|jj|djƒjdj}||djkrdt|dfStdfSn|dj|j@rtdfStj	dƒ‚dS(sðCheck content has a valid signature.

        :param content: the commit signature
        :param testament: the valid testament string for the commit

        :return: SIGNATURE_VALID or a failed SIGNATURE_ value, key uid if valid
        iNiiøÿÿÿs <t>s%Unknown GnuPG key verification result(RORRR)tGpgmeNotInstalledRRQR/Rt
GpgmeErrorR-RRtfprR:RtgetvaluetsummarytSIGSUM_VALIDtget_keytuidstnameRWRt
SIGSUM_REDtSIGSUM_KEY_MISSINGtSIGSUM_KEY_EXPIREDtsubkeystexpirest	timestampR	tSIGSUM_SYS_ERROR(
R&R+R.RORTt	signaturetplain_outputRtfingerprintR[R}RWR‚((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR/þsP	



"
"
#

cC@sûd}|jjdƒ}|dk	r-|}n|dk	rK|jdƒ}n|r÷g|_xš|D]}|jj|ƒ}t}xI|D]A}t}|jj	|j
djƒtj
d|j
djƒq†W|satjtdƒj|ƒƒqaqaWndS(sÕSet the acceptable keys for verifying with this GPGStrategy.

        :param command_line_input: comma separated list of patterns from
                                command line
        :return: nothing
        R:R7isAdded acceptable key: s%No GnuPG key results for pattern: {0}N(RRNRHR9R:RQtkeylistRR
RRRwRIRJtnotetgettexttformat(R&R0R;tacceptable_keys_configR<Rt	found_keyR[((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR1Ls&		

		iiicC@st||||ƒS(sÃdo verifications on a set of revisions

        :param revisions: list of revision ids to verify
        :param repository: repository object
        :param process_events_callback: method to call for GUI frontends that
            want to keep their UI refreshed

        :return: count dictionary of results of each type,
                 result list for each revision,
                 boolean True if all results are verified successfully
        (R#(R&R=RR((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR>hscC@s
t|ƒS(s@takes a verify result and returns list of signed commits strings(tverbose_valid_message(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRŽyscC@s
t||ƒS(s?takes a verify result and returns list of not valid commit info(tverbose_not_valid_message(R&Rtrepo((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR~scC@s
t||ƒS(s@takes a verify result and returns list of not signed commit info(R(R&RR((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pytverbose_not_signed_messageƒscC@s
t|ƒS(s:takes a verify result and returns list of missing key info(tverbose_missing_key_message(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR’ˆscC@s
t||ƒS(s:takes a verify result and returns list of expired key info(tverbose_expired_key_message(R&RR((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR“scC@s
t|ƒS(s%returns message for number of commits(R?(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR?’scC@s
t|ƒS(s%returns message for number of commits(R@(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR@—scC@s
t|ƒS(s%returns message for number of commits(RA(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRAœscC@s
t|ƒS(s%returns message for number of commits(RB(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRB¡scC@s
t|ƒS(s%returns message for number of commits(RC(R&R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRC¦sN(iii(iii(iii(iii(iii(iii(iii(iii(iii(iii(iii(R2R3R4RR:R(R5R%R\R,R/R1RRR>RŽRR‘R’R“R?R@RARBRC(((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRM·s(	
			$	N	cC@stdƒj|tƒS(s%returns message for number of commitsu!{0} commits with valid signatures(RŠR‹R(R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR?¬scC@s!tdd|tƒj|tƒS(s%returns message for number of commitsu{0} commit with unknown keyu{0} commits with unknown keys(tngettextRR‹(R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR@²s
cC@s!tdd|tƒj|tƒS(s%returns message for number of commitsu{0} commit not validu{0} commits not valid(R”RR‹(R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRAºs
cC@s!tdd|tƒj|tƒS(s%returns message for number of commitsu{0} commit not signedu{0} commits not signed(R”RR‹(R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRBÂs
cC@s!tdd|tƒj|tƒS(s%returns message for number of commitsu{0} commit with key now expiredu {0} commits with key now expired(R”R	R‹(R((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRCÊs
c
C@sÖi}i}xt|D]l\}}}|tkr|j|ƒ}dj|jƒƒ}|j|dƒ||cd7<|||<qqWg}xF|jƒD]8\}}	|jtdd|	ƒj|	|||ƒƒq–W|S(s:takes a verify result and returns list of expired key infos, iiu1{0} commit by author {1} with key {2} now expiredu2{0} commits by author {1} with key {2} now expired(	R	tget_revisiontjointget_apparent_authorst
setdefaulttitemsRR”R‹(
RRtsignerstfingerprint_to_authorsR tvalidityR‡trevisiontauthorstnumber((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR“Òs"	cC@s›i}xF|D]>\}}}|tkr
|j|dƒ||cd7<q
q
Wg}x?|jƒD]1\}}|jtdd|ƒj||ƒƒqbW|S(s@takes a verify result and returns list of signed commits stringsiiu{0} signed {1} commitu{0} signed {1} commits(RR˜R™RR”R‹(RRšR RœR"RŸ((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRŽçsc	C@s¿i}xj|D]b\}}}|tkr
|j|ƒ}dj|jƒƒ}|j|dƒ||cd7<q
q
Wg}x?|jƒD]1\}}|jtdd|ƒj||ƒƒq†W|S(s?takes a verify result and returns list of not valid commit infos, iiu{0} commit by author {1}u{0} commits by author {1}(	RR•R–R—R˜R™RR”R‹(	RRRšR RœtemptyRRžRŸ((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyRösc	C@s¿i}xj|D]b\}}}|tkr
|j|ƒ}dj|jƒƒ}|j|dƒ||cd7<q
q
Wg}x?|jƒD]1\}}|jtdd|ƒj||ƒƒq†W|S(s@takes a verify result and returns list of not signed commit infos, iiu{0} commit by author {1}u{0} commits by author {1}(	RR•R–R—R˜R™RR”R‹(	RRRšR RœR RRžRŸ((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR‘scC@s›i}xF|D]>\}}}|tkr
|j|dƒ||cd7<q
q
Wg}x?|jƒD]1\}}|jtdd|ƒj||ƒƒqbW|S(s:takes a verify result and returns list of missing key infoiiu!Unknown key {0} signed {1} commitu"Unknown key {0} signed {1} commits(RR˜R™RR”R‹(RRšR RœR‡RŸ((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyR’s("R4t
__future__RRFReRtbzrlib.lazy_importRtglobalstbzrlib.symbol_versioningRRRRRRR	RR#tobjectR$R6RLRMR?R@RARBRCR“RŽRR‘R’(((s./usr/lib/python2.7/dist-packages/bzrlib/gpg.pyt<module>s8	&6	
õ									

Copyright © 2017 || Recoded By Mr.Bumblebee