do not list all keys when we want to know if we have a key. Fixes #8477

This commit is contained in:
Yann Leboulanger 2016-12-17 14:06:36 +01:00
parent d9efb31b2e
commit 458d1083bc
3 changed files with 11 additions and 6 deletions

View File

@ -684,8 +684,10 @@ class CommonConnection:
else:
self.gpg.passphrase = passphrase
def ask_gpg_keys(self):
def ask_gpg_keys(self, keyID=None):
if self.gpg:
if keyID:
return self.gpg.get_key(keyID)
return self.gpg.get_keys()
return None
@ -2163,7 +2165,7 @@ class Connection(CommonConnection, ConnectionHandlers):
_cb_parameters={"jid":jid, "msg":msg, "keyID":keyID, "forward_from":forward_from,
"session":session, "original_message":original_message, "subject":subject, "type_":type_,
"msg_iq":msg_iq, "xhtml":xhtml, "obj":obj}))
self._prepare_message(obj.jid, obj.message, obj.keyID, type_=obj.type_,
subject=obj.subject, chatstate=obj.chatstate, msg_id=obj.msg_id,
resource=obj.resource, user_nick=obj.user_nick, xhtml=obj.xhtml,
@ -2176,7 +2178,7 @@ class Connection(CommonConnection, ConnectionHandlers):
if obj.conn.name != self.name:
return
obj.msg_id = self.connection.send(obj.msg_iq, now=obj.now)
# obj in this function is the obj as seen in _nec_message_outgoing()
def cb(obj, jid, msg, keyID, forward_from, session, original_message,
subject, type_, msg_iq, xhtml, msg_id):
@ -2197,7 +2199,7 @@ class Connection(CommonConnection, ConnectionHandlers):
else:
self.log_message(jid, msg, forward_from, session,
original_message, subject, type_, xhtml, obj.additional_data)
cb(msg_id=obj.msg_id, **obj._cb_parameters)
def send_contacts(self, contacts, fjid, type_='message'):

View File

@ -113,6 +113,9 @@ if HAVE_GPG:
return ''
def get_key(self, keyID):
return super(GnuPG, self).list_keys(keys=[keyID])
def get_keys(self, secret=False):
keys = {}
result = super(GnuPG, self).list_keys(secret=secret)

View File

@ -1285,9 +1285,9 @@ def prepare_and_validate_gpg_keyID(account, jid, keyID):
# An unsigned presence, just use the assigned key
keyID = attached_keys[attached_keys.index(jid) + 1]
elif keyID:
public_keys = gajim.connections[account].ask_gpg_keys()
full_key = gajim.connections[account].ask_gpg_keys(keyID=keyID)
# Assign the corresponding key, if we have it in our keyring
if keyID in public_keys:
if full_key:
for u in gajim.contacts.get_contacts(account, jid):
u.keyID = keyID
keys_str = gajim.config.get_per('accounts', account,