fix the "do not ask me again" behaviour with untrusted GPG key warning. Fixes #7584

This commit is contained in:
Yann Leboulanger 2013-12-01 10:06:38 +01:00
parent cb98239794
commit 1b0406a814
3 changed files with 10 additions and 4 deletions

View File

@ -326,7 +326,7 @@ class CommonConnection:
form_node, user_nick, keyID, attention,
correction_msg, callback)
gajim.nec.push_incoming_event(GPGTrustKeyEvent(None,
conn=self, callback=_on_always_trust))
conn=self, keyID=keyID, callback=_on_always_trust))
else:
self._message_encrypted_cb(output, type_, msg, msgtxt,
original_message, fjid, resource, jid, xhtml,

View File

@ -34,7 +34,7 @@ if HAVE_GPG:
self.decode_errors = 'replace'
self.passphrase = None
self.use_agent = use_agent
self.always_trust = False
self.always_trust = [] # list of keyID to always trust
def _setup_my_options(self):
self.options.armor = 1
@ -47,8 +47,14 @@ if HAVE_GPG:
self.options.extra_args.append('--use-agent')
def encrypt(self, str_, recipients, always_trust=False):
trust = always_trust
if not trust:
trust = True
for key in recipients:
if key not in self.always_trust:
trust = False
result = super(GnuPG, self).encrypt(str_, recipients,
always_trust=always_trust, passphrase=self.passphrase)
always_trust=trust, passphrase=self.passphrase)
if result.status == 'invalid recipient':
return '', 'NOT_TRUSTED'

View File

@ -695,7 +695,7 @@ class Interface:
#('GPG_ALWAYS_TRUST', account, callback)
def on_yes(checked):
if checked:
obj.conn.gpg.always_trust = True
obj.conn.gpg.always_trust.append(obj.keyID)
obj.callback(True)
def on_no():