Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

libomemo 0.7.1

Implements OMEMO (XEP-0384) in C.

Input and output are XML strings, so it does not force you to use a certain XML lib. While the actual protocol functions do not depend on any kind of storage, it comes with a basic implementation in SQLite.

It deals with devicelists and bundles as well as encrypting the payload, but does not handle the double ratchet sessions for encrypting the key to the payload. However, you can use my axc lib for that and easily combine it with this one (or write all the libsignal client code yourself if that is better suited to your needs).

Dependencies

  • Mini-XML (libmxml-dev)
  • gcrypt (libgcrypt20-dev)
  • glib (libglib2.0-dev)
  • SQLite (libsqlite3-dev)

Optional:

  • For testing: cmocka (make test)
  • For the coverage report: gcovr (make coverage)

I recommend to simply link it statically - the standard target is a is a static lib (containing PIC) which uses the compatible namespace (i.e. not the one in the XEP).

Usage

Basically, there are three data types: messages, devicelists, and bundles. You can import received the received XML data to work with it, or create them empty. When done with them, they can be exported back to XML for displaying or sending.

The test cases should demonstrate the general usage.

If a different namespace than the one specified in the XEP is to be used, you can use specify it at compile time. See the makefile for an example.