Skip to content

OMEMO With XMPP

bensmiley edited this page Apr 11, 2017 · 3 revisions

On iOS, XMPPFramework has support for the OMEMO, but the extension itself depends on SignalProtocol-ObjC for the encryption, which in turn is an Objective-C wrapper for libsignal-protocol-c For more info see the pull request that added the code for it and this issue

On Android, Smack has OMEMO support but is still in development, and in order for it to work one needs smack-omemo and for the actual encryption you need smack-omemo-signal which is just a wrapper around libsignal-java

Because both libraries depend on libsignal which is licensed under GPLv3 and there is no other implementation for the Signal protocol one cannot use it in closed source mobile applications.

An alternative is to use Olm and Megolm https://matrix.org/git/olm/tree/, which is licensed under Apache 2.0, and which is implemented in C and has Java and Objective-C wrappers (SDK/libraries) , which can be used by Smakc and XMPPFramework

However, there is still ongoing discussion on the XMPP mailing list about the OMEMO spec itself and how to bundle the encryption library (Olm or Signal) output inside it: https://github.com/xsf/xeps/pull/460 https://mail.jabber.org/pipermail/standards/2017-March/ https://mail.jabber.org/pipermail/standards/2017-April/ (search for "omemo" or "OMEMO (XEP-0384) use of X3DH / XEdDSA")