Fix decryption.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
lumi 2018-05-23 22:32:29 +02:00 committed by Maxime “pep” Buquet
parent deba255cb0
commit 737f5eae33
3 changed files with 27 additions and 4 deletions

View file

@ -185,7 +185,7 @@ class XEP_0384(BasePlugin):
header = msg['omemo_encrypted']['header'] header = msg['omemo_encrypted']['header']
payload = msg['omemo_encrypted']['payload'] payload = msg['omemo_encrypted']['payload']
jid = msg['from'] jid = msg['from'].bare
sid = header['sid'] sid = header['sid']
key = header.xml.find("{%s}key[@rid='%s']" % ( key = header.xml.find("{%s}key[@rid='%s']" % (

View file

@ -1,7 +1,7 @@
import omemo import omemo
from slixmpp.plugins.xep_0384.storage import SQLiteDatabase from slixmpp.plugins.xep_0384.storage import SQLiteDatabase
from omemo.util import generateDeviceID from omemo.util import generateDeviceID
import base64
class SessionManager: class SessionManager:
def __init__(self, own_jid, db_path): def __init__(self, own_jid, db_path):
@ -49,6 +49,10 @@ class SessionManager:
return self._sm.encryptMessage(jids, plaintext, bundles, devices, callback) return self._sm.encryptMessage(jids, plaintext, bundles, devices, callback)
def decrypt(self, jid, sid, iv, message, payload, prekey): def decrypt(self, jid, sid, iv, message, payload, prekey):
iv = base64.b64decode(iv.get_value())
payload = base64.b64decode(payload.get_value())
message = base64.b64decode(message)
sid = int(sid)
if prekey: if prekey:
return self._sm.decryptMessage(jid, sid, iv, message, payload) return self._sm.decryptMessage(jid, sid, iv, message, payload)
return self._sm.decryptPreKeyMessage(jid, sid, iv, message, payload) return self._sm.decryptPreKeyMessage(jid, sid, iv, message, payload)

View file

@ -65,14 +65,33 @@ class IV(ElementBase):
namespace = OMEMO_BASE_NS namespace = OMEMO_BASE_NS
name = 'iv' name = 'iv'
plugin_attrib = name plugin_attrib = name
interfaces = set() interfaces = {'value'}
def get_value(self):
return self.xml.text
def set_value(self, value):
self.xml.text = str(value)
def del_value(self):
self.xml.text = ''
class Payload(ElementBase): class Payload(ElementBase):
namespace = OMEMO_BASE_NS namespace = OMEMO_BASE_NS
name = 'payload' name = 'payload'
plugin_attrib = name plugin_attrib = name
interfaces = set() interfaces = {'value'}
def get_value(self):
return self.xml.text
def set_value(self, value):
self.xml.text = str(value)
def del_value(self):
self.xml.text = ''
class Bundle(ElementBase): class Bundle(ElementBase):