Author: asterix Date: 2009-02-19 21:17:05 +0100 (Thu, 19 Feb 2009) New Revision: 11122
Modified: trunk/src/common/GnuPG.py trunk/src/common/connection.py trunk/src/gajim.py Log: detect expires GPG keys. Fixes #4263
Modified: trunk/src/common/GnuPG.py =================================================================== --- trunk/src/common/GnuPG.py 2009-02-19 14:46:54 UTC (rev 11121) +++ trunk/src/common/GnuPG.py 2009-02-19 20:17:05 UTC (rev 11122) @@ -145,6 +145,8 @@ except IOError: pass if 'GOOD_PASSPHRASE' in resp or 'SIG_CREATED' in resp: return self._stripHeaderFooter(output) + if 'KEYEXPIRED' in resp: + return 'KEYEXPIRED' return 'BAD_PASSPHRASE'
def verify(self, str_, sign):
Modified: trunk/src/common/connection.py =================================================================== --- trunk/src/common/connection.py 2009-02-19 14:46:54 UTC (rev 11121) +++ trunk/src/common/connection.py 2009-02-19 20:17:05 UTC (rev 11122) @@ -964,13 +964,18 @@ self.dispatch('SIGNED_IN', ())
def test_gpg_passphrase(self, password): + '''Returns 'ok', 'bad_pass' or 'expired' ''' if not self.gpg: return False self.gpg.passphrase = password keyID = gajim.config.get_per('accounts', self.name, 'keyid') signed = self.gpg.sign('test', keyID) self.gpg.password = None - return signed != 'BAD_PASSPHRASE' + if signed == 'KEYEXPIRED': + return 'expired' + elif signed == 'BAD_PASSPHRASE': + return 'bad_pass' + return 'ok'
def get_signed_presence(self, msg, callback = None): if gajim.config.get_per('accounts', self.name, 'gpg_sign_presence'):
Modified: trunk/src/gajim.py =================================================================== --- trunk/src/gajim.py 2009-02-19 14:46:54 UTC (rev 11121) +++ trunk/src/gajim.py 2009-02-19 20:17:05 UTC (rev 11122) @@ -466,10 +466,19 @@ self.complete(None)
def _ok(passphrase, checked, count): - if gajim.connections[account].test_gpg_passphrase(passphrase): + result = gajim.connections[account].test_gpg_passphrase(passphrase) + if result == 'ok': # passphrase is good self.complete(passphrase) return + elif result == 'expired': + dialogs.ErrorDialog(_('GPG key expired'), + _('Your GPG key has expied, you will be connected to %s without ' + 'OpenPGP.') % account) + # Don't try to connect with GPG + gajim.connections[account].continue_connect_info[2] = False + self.complete(None) + return
if count < 3: # ask again