ask GPG passphrases one by one for each account. fix #3644

This commit is contained in:
Yann Leboulanger 2007-12-28 10:20:41 +00:00
parent f95df09441
commit ec91275255
1 changed files with 9 additions and 2 deletions

View File

@ -1410,14 +1410,19 @@ class Interface:
gajim.connections[account].gpg_passphrase(self.gpg_passphrase[keyid]) gajim.connections[account].gpg_passphrase(self.gpg_passphrase[keyid])
callback() callback()
return return
if self.gpg_dialog:
# A GPG dialog is already open, retry in 0.5 second
gobject.timeout_add(500, self.handle_event_gpg_password_required,
account, array)
return
password_ok = False password_ok = False
count = 0 count = 0
title = _('Passphrase Required') title = _('Passphrase Required')
second = _('Enter GPG key passphrase for account %s.') % account second = _('Enter GPG key passphrase for account %s.') % account
while not password_ok and count < 3: while not password_ok and count < 3:
count += 1 count += 1
w = dialogs.PassphraseDialog(title, second, '') self.gpg_dialog = dialogs.PassphraseDialog(title, second, '')
passphrase, save = w.run() passphrase, save = self.gpg_dialog.run()
if passphrase == -1: if passphrase == -1:
# User pressed cancel # User pressed cancel
passphrase = None passphrase = None
@ -1427,6 +1432,7 @@ class Interface:
test_gpg_passphrase(passphrase) test_gpg_passphrase(passphrase)
title = _('Wrong Passphrase') title = _('Wrong Passphrase')
second = _('Please retype your GPG passphrase or press Cancel.') second = _('Please retype your GPG passphrase or press Cancel.')
self.gpg_dialog = None
if passphrase != None: if passphrase != None:
self.gpg_passphrase[keyid] = passphrase self.gpg_passphrase[keyid] = passphrase
gobject.timeout_add(30000, self.forget_gpg_passphrase, keyid) gobject.timeout_add(30000, self.forget_gpg_passphrase, keyid)
@ -2697,6 +2703,7 @@ class Interface:
self.status_sent_to_users = {} self.status_sent_to_users = {}
self.status_sent_to_groups = {} self.status_sent_to_groups = {}
self.gpg_passphrase = {} self.gpg_passphrase = {}
self.gpg_dialog = None
self.default_colors = { self.default_colors = {
'inmsgcolor': gajim.config.get('inmsgcolor'), 'inmsgcolor': gajim.config.get('inmsgcolor'),
'outmsgcolor': gajim.config.get('outmsgcolor'), 'outmsgcolor': gajim.config.get('outmsgcolor'),