plugin XEP-0384: specific warning on missing omemo-backend-signal + fixed encoding following Python 3 port

This commit is contained in:
Goffi 2019-12-07 11:30:56 +01:00
commit ad1ec9698c
2 changed files with 16 additions and 12 deletions

View file

@ -21,7 +21,6 @@ from sat.core.i18n import _, D_
from sat.core.constants import Const as C
from sat.core.log import getLogger
from sat.core import exceptions
from omemo import exceptions as omemo_excpt
from twisted.internet import defer
from twisted.words.xish import domish
from twisted.words.protocols.jabber import jid
@ -34,14 +33,20 @@ import random
import base64
try:
import omemo
from omemo import exceptions as omemo_excpt
from omemo.extendedpublicbundle import ExtendedPublicBundle
from omemo_backend_signal import BACKEND as omemo_backend
# from omemo import wireformat
except ImportError as e:
except ImportError:
raise exceptions.MissingModule(
'Missing module omemo, please download/install it. You can use '
'"pip install omemo"'
)
try:
from omemo_backend_signal import BACKEND as omemo_backend
except ImportError:
raise exceptions.MissingModule(
'Missing module omemo-backend-signal, please download/install it. You can use '
'"pip install omemo-backend-signal"'
)
log = getLogger(__name__)
@ -335,7 +340,7 @@ class OmemoSession(object):
bundles = {e.userhost(): v for e, v in bundles.items()}
encrypt_mess_p = self._session.encryptMessage(
bare_jids=bare_jids,
plaintext=message.encode('utf-8'),
plaintext=message.encode(),
bundles=bundles,
expect_problems=expect_problems)
return promise2Deferred(encrypt_mess_p)
@ -425,8 +430,6 @@ class OMEMO(object):
expect_problems.setdefault(data.bare_jid, set()).add(data.device)
defer.returnValue({})
@defer.inlineCallbacks
def getTrustUI(self, client, entity_jid=None, trust_data=None, submit_id=None):
"""Generate a XMLUI to manage trust
@ -512,7 +515,7 @@ class OMEMO(object):
xmlui.addLabel(D_("This device ID"))
xmlui.addText(str(client._xep_0384_device_id))
xmlui.addLabel(D_("This device fingerprint"))
ik_hex = session.public_bundle.ik.encode('hex').upper()
ik_hex = session.public_bundle.ik.hex().upper()
fp_human = ' '.join([ik_hex[i:i+8] for i in range(0, len(ik_hex), 8)])
xmlui.addText(fp_human)
xmlui.addEmpty()
@ -525,7 +528,7 @@ class OMEMO(object):
xmlui.addLabel(D_("Device ID"))
xmlui.addText(str(data['device']))
xmlui.addLabel(D_("Fingerprint"))
ik_hex = data['ik'].encode('hex').upper()
ik_hex = data['ik'].hex().upper()
fp_human = ' '.join([ik_hex[i:i+8] for i in range(0, len(ik_hex), 8)])
xmlui.addText(fp_human)
xmlui.addLabel(D_("Trust this device?"))
@ -904,7 +907,7 @@ class OMEMO(object):
break
except Exception as e:
msg = _("Can't encrypt message for {entity}: {reason}".format(
entity=entity_bare_jid.full(), reason=str(e).decode('utf-8', 'replace')))
entity=entity_bare_jid.full(), reason=e))
log.warning(msg)
extra = {C.MESS_EXTRA_INFO: C.EXTRA_INFO_ENCR_ERR}
client.feedback(entity_bare_jid, msg, extra)
@ -959,7 +962,7 @@ class OMEMO(object):
"for our device (device_id: {device_id}, fingerprint: "
"{fingerprint}): {xml}").format(
device_id=device_id,
fingerprint=omemo_session.public_bundle.ik.encode('hex'),
fingerprint=omemo_session.public_bundle.ik.hex().upper(),
xml=encrypted_elt.toXml()))
user_msg = (D_("An OMEMO message from {sender} has not been encrypted for "
"our device, we can't decrypt it").format(
@ -995,6 +998,7 @@ class OMEMO(object):
plaintext = yield omemo_session.decryptMessage(**kwargs)
else:
post_treat.addCallback(client.encryption.markAsTrusted)
plaintext = plaintext.decode()
except Exception as e:
log.warning(_("Can't decrypt message: {reason}\n{xml}").format(
reason=e, xml=message_elt.toXml()))

View file

@ -49,7 +49,7 @@ install_requires = [
'urwid-satext >= 0.7.0a2',
'wokkel >= 0.7.1',
'omemo',
'omemo_backend_signal',
'omemo-backend-signal',
]
DBUS_DIR = 'dbus-1/services'