diff --git a/slixmpp_omemo/__init__.py b/slixmpp_omemo/__init__.py index bb786b7..80de0a9 100644 --- a/slixmpp_omemo/__init__.py +++ b/slixmpp_omemo/__init__.py @@ -170,6 +170,10 @@ class UndecidedException(XEP0384): self.ik = ik +class ErroneousPayload(XEP0384): + """To be raised when the payload is not of the form we expect""" + + class XEP_0384(BasePlugin): """ @@ -512,6 +516,8 @@ class XEP_0384(BasePlugin): allow_untrusted: bool = False, ) -> Optional[str]: header = encrypted['header'] + if encrypted['payload']['value'] is None: + raise ErroneousPayload('The payload element was empty') payload = b64dec(encrypted['payload']['value']) jid = sender.bare @@ -524,7 +530,11 @@ class XEP_0384(BasePlugin): key = Key(key) isPrekeyMessage = key['prekey'] in TRUE_VALUES + if key['value'] is None: + raise ErroneousPayload('The key element was empty') message = b64dec(key['value']) + if header['iv']['value'] is None: + raise ErroneousPayload('The iv element was empty') iv = b64dec(header['iv']['value']) # XXX: 'cipher' is part of KeyTransportMessages and is used when no payload