implement XEP-0380. Fixes #8734

This commit is contained in:
Yann Leboulanger 2017-09-21 17:05:01 +02:00
parent 6d3c1d9781
commit 3e1ea4a3dc
1 changed files with 21 additions and 0 deletions

View File

@ -1080,6 +1080,27 @@ class ConnectionHandlersBase:
app.plugin_manager.extension_point( app.plugin_manager.extension_point(
'decrypt', self, obj, self._on_message_received) 'decrypt', self, obj, self._on_message_received)
if not obj.encrypted: if not obj.encrypted:
# XEP-0380
enc_tag = obj.stanza.getTag('encryption', namespace=nbxmpp.NS_EME)
if enc_tag:
ns = enc_tag.getAttr('namespace')
if ns:
if ns == 'urn:xmpp:otr:0':
obj.msgtxt = _('This message was encrypted with OTR '
'and could not be decrypted.')
elif ns == 'jabber:x:encrypted':
obj.msgtxt = _('This message was encrypted with Legacy '
'OpenPGP and could not be decrypted. You can install '
'the PGP plugin to handle those messages.')
elif ns == 'urn:xmpp:openpgp:0':
obj.msgtxt = _('This message was encrypted with '
'OpenPGP for XMPP and could not be decrypted.')
else:
enc_name = enc_tag.getAttr('name')
if not enc_name:
enc_name = ns
obj.msgtxt = _('This message was encrypted with %s '
'and could not be decrypted.') % enc_name
self._on_message_received(obj) self._on_message_received(obj)
def _on_message_received(self, obj): def _on_message_received(self, obj):