I was involved in an OMEMO sprint this weekend with devs from Dino, Conversations and Gajim.

We decided to focus on modifying the various libsignal libraries used by the clients to make them compatible with the latest OMEMO version (which AFAIK no client yet fully supports).

I forked libsignal-protocol-javascript into libomemo.js


A lot of time was spent updating ancient dependencies and getting tests to run. I then started making changes for OMEMO compat.


libomemo.js is still very much a work in progress.

I'm still busy updating it to use the latest protobuf.js which has a completely different API.

Once that's done, I'll make the OMEMO-related protobuf changes to the lib.

I'm also considering migrating the codebase to TypeScript.

Eventually is should be possible for all other JavaScript XMPP clients to use libomemo.js for the crypto part of OMEMO.

· · Web · 1 · 1 · 1

The crypto primitives are compiled from C via emscripten.

One cool thing is that emscripten now compiles to WASM which is much faster than normal JS.

Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!