Ticket #733: gpg-agent.patch
| File gpg-agent.patch, 5.7 KB (added by lucky@…, 5 years ago) |
|---|
-
src/common/connection.py
1401 1401 if lowered_uf_status_msg == _('invisible'): # do not show I'm invisible! 1402 1402 lowered_uf_status_msg = _('offline') 1403 1403 msg = _("I'm %s") % lowered_uf_status_msg 1404 1405 # sign presence 1404 1406 keyID = gajim.config.get_per('accounts', self.name, 'keyid') 1407 use_gpg_agent = gajim.config.get_per('accounts', self.name, 'gpguseagent') 1405 1408 if keyID and USE_GPG: 1406 if self.connected < 2 and self.gpg.passphrase is None: 1409 # translates to: 1410 # if we are not yet online, 1411 # were not given a passphrase 1412 # and won't use the gpg-agent 1413 # then cry out loud. 1414 if self.connected < 2 and self.gpg.passphrase is None and not use_gpg_agent: 1407 1415 # We didn't set a passphrase 1408 1416 self.dispatch('ERROR', (_('OpenPGP passphrase was not given'), 1409 1417 #%s is the account name here 1410 1418 _('You will be connected to %s without OpenPGP.') % self.name)) 1411 else: 1419 # ... we have a passphrase or use the agent, so we can sign 1420 elif self.gpg.passphrase is not None or use_gpg_agent: 1412 1421 signed = self.gpg.sign(msg, keyID) 1413 1422 if signed == 'BAD_PASSPHRASE': 1414 1423 signed = '' 1415 1424 if self.connected < 2: 1416 1425 self.dispatch('BAD_PASSPHRASE', ()) 1426 else: 1427 signed = '' 1417 1428 self.status = msg 1418 1429 if show != 'offline' and not self.connected: 1419 1430 self.connection = self.connect() … … 1845 1856 1846 1857 def gpg_passphrase(self, passphrase): 1847 1858 if USE_GPG: 1848 self.gpg.passphrase = passphrase 1859 use_gpg_agent = gajim.config.get_per('accounts', self.name, 'gpguseagent') 1860 if use_gpg_agent: 1861 self.gpg.passphrase = None 1862 else: 1863 self.gpg.passphrase = passphrase 1849 1864 1850 1865 def ask_gpg_keys(self): 1851 1866 if USE_GPG: -
src/common/config.py
154 154 'custom_port': [ opt_int, 5222 ], 155 155 'custom_host': [ opt_str, '' ], 156 156 'savegpgpass': [ opt_bool, False ], 157 'gpguseagent': [ opt_bool, True ], 157 158 'gpgpassword': [ opt_str, '' ], 158 159 'sync_with_global_status': [ opt_bool, False ], 159 160 'no_log_for': [ opt_str, '' ], -
src/roster_window.py
1227 1227 gajim.config.set_per('accounts', account, 'password', passphrase) 1228 1228 1229 1229 keyid = None 1230 save_gpg_pass = True 1231 save_gpg_pass = gajim.config.get_per('accounts', account, 1232 'savegpgpass') 1230 use_gpg_agent = False 1231 use_gpg_agent = gajim.config.get_per('accounts', account, 'gpguseagent') 1232 # we only need to bother with the passphrase if we don't use the agent 1233 if use_gpg_agent: 1234 save_gpg_pass = False 1235 else: 1236 save_gpg_pass = True 1237 save_gpg_pass = gajim.config.get_per('accounts', account, 1238 'savegpgpass') 1233 1239 keyid = gajim.config.get_per('accounts', account, 'keyid') 1234 1240 if keyid and gajim.connections[account].connected < 2 and \ 1235 1241 gajim.config.get('usegpg'): 1236 if save_gpg_pass:1237 passphrase = gajim.config.get_per('accounts', account,1238 'gpgpassword')1242 1243 if use_gpg_agent: 1244 self.gpg_passphrase[keyid] = None 1239 1245 else: 1240 if self.gpg_passphrase.has_key(keyid): 1241 passphrase = self.gpg_passphrase[keyid] 1242 save = False 1246 if save_gpg_pass: 1247 passphrase = gajim.config.get_per('accounts', account, 'gpgpassword') 1243 1248 else: 1244 w = dialogs.PassphraseDialog( 1245 _('Passphrase Required'), 1246 _('Enter GPG key passphrase for account %s') % account, 1247 _('Save passphrase')) 1248 passphrase, save = w.run() 1249 if passphrase == -1: 1250 passphrase = None 1251 else: 1252 self.gpg_passphrase[keyid] = passphrase 1253 gobject.timeout_add(30000, self.forget_gpg_passphrase, keyid) 1254 if save: 1255 gajim.config.set_per('accounts', account, 'savegpgpass', True) 1256 gajim.config.set_per('accounts', account, 'gpgpassword', 1257 passphrase) 1258 gajim.connections[account].gpg_passphrase(passphrase) 1249 if self.gpg_passphrase.has_key(keyid): 1250 passphrase = self.gpg_passphrase[keyid] 1251 save = False 1252 else: 1253 w = dialogs.PassphraseDialog( 1254 _('Passphrase Required'), 1255 _('Enter GPG key passphrase for account %s') % account, 1256 _('Save passphrase')) 1257 passphrase, save = w.run() 1258 if passphrase == -1: 1259 passphrase = None 1260 else: 1261 self.gpg_passphrase[keyid] = passphrase 1262 gobject.timeout_add(30000, self.forget_gpg_passphrase, keyid) 1263 if save: 1264 gajim.config.set_per('accounts', account, 'savegpgpass', True) 1265 gajim.config.set_per('accounts', account, 'gpgpassword', 1266 passphrase) 1267 gajim.connections[account].gpg_passphrase(passphrase) 1268 1259 1269 gajim.connections[account].change_status(status, txt, sync) 1260 1270 for room_jid in self.plugin.windows[account]['gc']: 1261 1271 if room_jid != 'tabbed': -
src/gajim.py
656 656 config.GroupchatConfigWindow(self, account, jid, array[1]) 657 657 658 658 def handle_event_bad_passphrase(self, account, array): 659 use_gpg_agent = gajim.config.get_per('accounts', account, 'gpguseagent') 660 if use_gpg_agent: 661 return 659 662 keyID = gajim.config.get_per('accounts', account, 'keyid') 660 663 self.roster.forget_gpg_passphrase(keyID) 661 664 dialogs.WarningDialog(_('Your passphrase is incorrect'),
