[omemo] Refactor processing message
Split out some logic into methods
This commit is contained in:
@@ -244,19 +244,17 @@ class OmemoState(DeviceManager):
|
|||||||
return cipher
|
return cipher
|
||||||
|
|
||||||
def _process_pre_key_message(self, jid, device, key):
|
def _process_pre_key_message(self, jid, device, key):
|
||||||
|
self._log.info('Process pre key message from %s', jid)
|
||||||
pre_key_message = PreKeyWhisperMessage(serialized=key)
|
pre_key_message = PreKeyWhisperMessage(serialized=key)
|
||||||
if not pre_key_message.getPreKeyId():
|
if not pre_key_message.getPreKeyId():
|
||||||
raise Exception('Received Pre Key Message '
|
raise Exception('Received Pre Key Message '
|
||||||
'without PreKey => %s' % jid)
|
'without PreKey => %s' % jid)
|
||||||
|
|
||||||
identity_key = pre_key_message.getIdentityKey()
|
|
||||||
trust = self._storage.getTrustForIdentity(jid, identity_key)
|
|
||||||
trust = Trust(trust) if trust is not None else Trust.UNDECIDED
|
|
||||||
|
|
||||||
session_cipher = self._get_session_cipher(jid, device)
|
session_cipher = self._get_session_cipher(jid, device)
|
||||||
|
|
||||||
self._log.info('Process pre key message from %s', jid)
|
|
||||||
key = session_cipher.decryptPkmsg(pre_key_message)
|
key = session_cipher.decryptPkmsg(pre_key_message)
|
||||||
|
|
||||||
|
identity_key = pre_key_message.getIdentityKey()
|
||||||
|
trust = self._get_trust_from_identity_key(jid, identity_key)
|
||||||
fingerprint = get_fingerprint(identity_key)
|
fingerprint = get_fingerprint(identity_key)
|
||||||
|
|
||||||
self._storage.setIdentityLastSeen(jid, identity_key)
|
self._storage.setIdentityLastSeen(jid, identity_key)
|
||||||
@@ -266,25 +264,35 @@ class OmemoState(DeviceManager):
|
|||||||
return key, fingerprint, trust
|
return key, fingerprint, trust
|
||||||
|
|
||||||
def _process_message(self, jid, device, key):
|
def _process_message(self, jid, device, key):
|
||||||
message = WhisperMessage(serialized=key)
|
|
||||||
self._log.info('Process message from %s', jid)
|
self._log.info('Process message from %s', jid)
|
||||||
|
message = WhisperMessage(serialized=key)
|
||||||
|
|
||||||
session_cipher = self._get_session_cipher(jid, device)
|
session_cipher = self._get_session_cipher(jid, device)
|
||||||
key = session_cipher.decryptMsg(message, textMsg=False)
|
key = session_cipher.decryptMsg(message, textMsg=False)
|
||||||
|
|
||||||
session_record = self._storage.loadSession(jid, device)
|
identity_key = self._get_identity_key_from_device(jid, device)
|
||||||
identity_key = session_record.getSessionState().getRemoteIdentityKey()
|
trust = self._get_trust_from_identity_key(jid, identity_key)
|
||||||
|
|
||||||
trust = self._storage.getTrustForIdentity(jid, identity_key)
|
|
||||||
trust = Trust(trust) if trust is not None else Trust.UNDECIDED
|
|
||||||
|
|
||||||
fingerprint = get_fingerprint(identity_key)
|
fingerprint = get_fingerprint(identity_key)
|
||||||
|
|
||||||
self._storage.setIdentityLastSeen(jid, identity_key)
|
self._storage.setIdentityLastSeen(jid, identity_key)
|
||||||
|
|
||||||
self.add_device(jid, device)
|
self.add_device(jid, device)
|
||||||
|
|
||||||
return key, fingerprint, trust
|
return key, fingerprint, trust
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_identity_key_from_pk_message(key):
|
||||||
|
pre_key_message = PreKeyWhisperMessage(serialized=key)
|
||||||
|
return pre_key_message.getIdentityKey()
|
||||||
|
|
||||||
|
def _get_identity_key_from_device(self, jid, device):
|
||||||
|
session_record = self._storage.loadSession(jid, device)
|
||||||
|
return session_record.getSessionState().getRemoteIdentityKey()
|
||||||
|
|
||||||
|
def _get_trust_from_identity_key(self, jid, identity_key):
|
||||||
|
trust = self._storage.getTrustForIdentity(jid, identity_key)
|
||||||
|
return Trust(trust) if trust is not None else Trust.UNDECIDED
|
||||||
|
|
||||||
def _check_pre_key_count(self):
|
def _check_pre_key_count(self):
|
||||||
# Check if enough PreKeys are available
|
# Check if enough PreKeys are available
|
||||||
pre_key_count = self._storage.getPreKeyCount()
|
pre_key_count = self._storage.getPreKeyCount()
|
||||||
|
|||||||
Reference in New Issue
Block a user