Correctly check and handle the case when we don't trust our own key. Fixes #8122
This commit is contained in:
parent
89f6efefde
commit
d318481176
|
@ -321,7 +321,7 @@ class CommonConnection:
|
||||||
always_trust)
|
always_trust)
|
||||||
def _on_encrypted(output):
|
def _on_encrypted(output):
|
||||||
msgenc, error = output
|
msgenc, error = output
|
||||||
if error == 'NOT_TRUSTED':
|
if error.startswith( 'NOT_TRUSTED'):
|
||||||
def _on_always_trust(answer):
|
def _on_always_trust(answer):
|
||||||
if answer:
|
if answer:
|
||||||
gajim.thread_interface(encrypt_thread, [msg, keyID,
|
gajim.thread_interface(encrypt_thread, [msg, keyID,
|
||||||
|
@ -334,7 +334,8 @@ class CommonConnection:
|
||||||
form_node, user_nick, keyID, attention,
|
form_node, user_nick, keyID, attention,
|
||||||
correction_msg, callback)
|
correction_msg, callback)
|
||||||
gajim.nec.push_incoming_event(GPGTrustKeyEvent(None,
|
gajim.nec.push_incoming_event(GPGTrustKeyEvent(None,
|
||||||
conn=self, keyID=keyID, callback=_on_always_trust))
|
conn=self, keyID=error.split(' ')[-1],
|
||||||
|
callback=_on_always_trust))
|
||||||
else:
|
else:
|
||||||
self._message_encrypted_cb(output, type_, msg, msgtxt,
|
self._message_encrypted_cb(output, type_, msg, msgtxt,
|
||||||
original_message, fjid, resource, jid, xhtml,
|
original_message, fjid, resource, jid, xhtml,
|
||||||
|
|
|
@ -50,6 +50,7 @@ if HAVE_GPG:
|
||||||
def encrypt(self, str_, recipients, always_trust=False):
|
def encrypt(self, str_, recipients, always_trust=False):
|
||||||
trust = always_trust
|
trust = always_trust
|
||||||
if not trust:
|
if not trust:
|
||||||
|
# check if we trust all keys
|
||||||
trust = True
|
trust = True
|
||||||
for key in recipients:
|
for key in recipients:
|
||||||
if key not in self.always_trust:
|
if key not in self.always_trust:
|
||||||
|
@ -59,7 +60,10 @@ if HAVE_GPG:
|
||||||
result = super(GnuPG, self).list_keys(keys=recipients)
|
result = super(GnuPG, self).list_keys(keys=recipients)
|
||||||
for key in result:
|
for key in result:
|
||||||
if key['trust'] not in ('f', 'u'):
|
if key['trust'] not in ('f', 'u'):
|
||||||
return '', 'NOT_TRUSTED'
|
if key['keyid'][-8:] not in self.always_trust:
|
||||||
|
return '', 'NOT_TRUSTED ' + key['keyid'][-8:]
|
||||||
|
else:
|
||||||
|
trust = True
|
||||||
result = super(GnuPG, self).encrypt(str_, recipients,
|
result = super(GnuPG, self).encrypt(str_, recipients,
|
||||||
always_trust=trust, passphrase=self.passphrase)
|
always_trust=trust, passphrase=self.passphrase)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue