About Me

My name is Paul Schaub, I am a free software developer with a M.Sc. in Computer Science from Germany.

Contact me

To find out how to contact me, check out my profile on keyoxide.org!


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 they are using.


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 🙂


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.


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.


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/blog post can be found here. Have fun playing around with it 🙂

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


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

Masters Thesis

The topic of my masters thesis was exploring methods to improve fingerprint verification in end-to-end encrypted multi-device instant messaging. If you want to read my thesis, you can find it here.

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 among 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. Below is a list of blog posts I made during that period.

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.

XMPP Extension Protocols