omemo / gajim-omemo

Gajim plugin for OMEMO Multi-End Message and Object Encryption
87 stars 7 forks source link

OMEMO only working in one direction with ejabberd server #50

Closed hannob closed 8 years ago

hannob commented 8 years ago

I have the problem that with my server omemo does not seem to work. As far as I'm aware omemo only requires pubsub on the server side, which is enabled. It's running latest ejabberd (16.01).

When communicating from my server to an account at jabber.ccc.de (both with gajim-omemo) then encryption works in one direction (from me to the other server), but not in the other. The other user does not see the OMEMO controls in the chat window.

When we both use jabber.ccc.de it works in both directions.

iNPUTmice commented 8 years ago

Possibly related to #39
If I remember correctly the list of known device ids for a particular contact is only filled by pep events. In case this event is not delivered we will experience a uni-directional encryption as @hannob describes it. Meaning we will have an axolotl session in memory (or in our database) and are able to decrypt messages but we are unable to respond because when responding we will look at an empty device id list. To circumvent this we must do two things. One: When a message (for a new session) arrives add the remote device id to the device list. Two: When starting gajim (or the plugin respectively) go through a list of all known sessions and add the device ids to their respective device id lists. Remember an empty pep message (or a pep message with n number of device ids) will still overwrite the entire device list.

A little background information. Pep in ejabberd is weird in a way that PEP events are only generated if a client is only. On top of that OMEMO is supposed to work without PEP as pointed out in #39 as it is only needed for initialization.

iNPUTmice commented 8 years ago

Hi @hannob I wasn't actually able to reproduce the issue but with the last couple of commits gajim omemo should be able to work around this. Please test this and provide feedback.

ghost commented 8 years ago

Just had this issue with 0.4 as well, and updating the plugin to current HEAD indeed fixed it. Thanks!

kalkin commented 8 years ago

@nobse Thanks for response closing this. @hannob This issue should be solved. I will close it, please feel free to comment if you are still experiencing it and i will reopen it.

hannob commented 8 years ago

It would be easier to test if you could land this fix in a release... (but the person with whom I had this bug is notoriously offline at the moment)

kalkin commented 8 years ago

It would be easier to test if you could land this fix in a release...

I'm working on a release, there is an issue (#55) which needs to be solved, so I don't get half a dozen new issues.