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: else:
self.gpg.passphrase = passphrase self.gpg.passphrase = passphrase
def ask_gpg_keys(self): def ask_gpg_keys(self, keyID=None):
if self.gpg: if self.gpg:
if keyID:
return self.gpg.get_key(keyID)
return self.gpg.get_keys() return self.gpg.get_keys()
return None return None

View File

@ -113,6 +113,9 @@ if HAVE_GPG:
return '' return ''
def get_key(self, keyID):
return super(GnuPG, self).list_keys(keys=[keyID])
def get_keys(self, secret=False): def get_keys(self, secret=False):
keys = {} keys = {}
result = super(GnuPG, self).list_keys(secret=secret) 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 # An unsigned presence, just use the assigned key
keyID = attached_keys[attached_keys.index(jid) + 1] keyID = attached_keys[attached_keys.index(jid) + 1]
elif keyID: 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 # 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): for u in gajim.contacts.get_contacts(account, jid):
u.keyID = keyID u.keyID = keyID
keys_str = gajim.config.get_per('accounts', account, keys_str = gajim.config.get_per('accounts', account,