My name is Paul Schaub, I am a free software developer and computer science student from Germany.


I’m working on some free software projects in my spare time. In my opinion free software is very important to a free society, since only free software give the user freedom and control over the machine.


This project started as part of my bachelors thesis. smack-omemo is an implementation of OMEMO encryption for the XMPP library Smack. I chose this as the topic of my bachelors thesis, since I’m very interested in cryptography and I believe, that using strong encryption is necessary for a functional democracy. Implementing this functionality is my political activism against the growing surveillance state.

The project is split into two parts. First there is smack-omemo, which encapsulates the XMPP logic and stanza elements. This module does not contain any code related to the double ratchet algorithm as used in the Signal protocol, which OMEMO is based on. Instead it defines some interfaces and abstract methods.

The second part is smack-omemo-signal, which is a concrete implementation of smack-omemo. It contains libsignal-protocol-java, which implements the double ratchet algorithm.

I had to split the project, since libsignal-protocol-java is licensed under the GPL, Smack on the other hand is Apache licensed. Also the modularization makes it easy to port the module to another double ratchet library at a later point in time.

Here you can find the code. Contributors are welcome :)

smack-omemo, smack-omemo-signal.


As a reaction to the german interior ministers decision to allow government spying on popular messengers, I wrote a tutorial in which I show, how easy it is, to create an OMEMO encrypted messenger in less than 200 lines of Java code. This is my political resistance against a dangerous decision made out of either malice or plain stupidity. The tutorial can be found here, while the source code is hosted here (FSFE) or here (Github).

When the government fails (or refuses) to protect your communications, you’ll have to take action yourselves.


As part of my Google Summer of Code 2018 project, I created an implementation of XEP-0373 and XEP-0374 OpenPGP for XMPP: Instant Messaging for Smack. Together with smack-omemo, this is the second end-to-end encryption implementation I wrote and the second one included in Smack.

The code for smack-openpgp can be found here.


Since I needed an easy to use OpenPGP library for java and Android for my GSoC 2018 project, I created PGPainless (https://pgpainless.org).

PGPainless aims to be as simple to use as possible, while offering all functionality that is needed when dealing with OpenPGP encryption.

The projects repository is found here.



For quite some time I was maintainig the dandelion* (inofficial) Android app for the social network diaspora* together with @gsantner. I spent many hours enhancing the overall experience of the app by adding features like proxy support and sharing functionalities. Also I spiced up the UI by implementing customizable color themes and animated fragments!

Here you can find the project. We are always looking for new contributors and translators!



A simulation of the Enigma machine for Android. I reverse engineered the mechanics of the cipher machine from Wikipedia articles and tested the interoperability using an online simulator. The app is written in java as most of my projects are.

EnigmAndroid is available on FDroid only, since I want to support free software and do not agree with Googles politics.

If you are interested, please feel free to check it out :)

Other work

Bachelors Thesis

I wrote my bachelors thesis about OMEMO encryption (in German). Here you can take a look for yourselves.

Bachelors thesis - OMEMO encryption

Summer of Code 2017

I participated in the Google Summer of Code as a student for the XMPP Standards Foundation. I contributed to Ignite Realtime’s Smack project to implement Jingle File Transfer (XEP-0234) combined with end-to-end encryption.

My work resulted amongst other things in two XMPP Extension Protocols, XEP-0391 and XEP-0396.

The project page with an overview of my work can be found here, all related blog posts can be found here.

Summer of Code 2018

This year I got another opportunity to work full time on Smack for 3 months. This time my project is an implementation of OpenPGP for XMPP (XEP-0373 and XEP-0374) for Smack. As you can see, I really like cryptography ;)

The project page can be found here, all related blog posts are found here.

My Blog

I’m very actively blogging about my free software advantures. If you want to follow my work, take a look at my blog.

Contact me

If you want to get in touch with me, you can find me on mastodon. I’m also a supporter of the FSFE, so if you want to send me a mail, feel free to do so. Here you can find my PGP-Key.

You can also reach out to me via XMPP: vanitasvitae@jabberhead.tk (QR-Code).

Occasionally I do post stuff on Movim, a federated social network based on XMPP. You should really check it out!

If you want, you can support my work by donating bitcoins ;).