Cryptography everywhere

Last summer, while looking for a new mail client, I stumbled upon Trojitá, a lightweight IMAP client based on Qt. The largest drawback from my point of view was the missing support for PGP and S/MIME. After looking at the code I figured I could try to implement the missing features.

The result was a partially working branch full of little hacks, which supported sending of encrypted and signed PGP messages. Checking of signatures worked most of the time and reading of encrypted messages required looking at the debug output most of the time.

Following the development and fixing some small bugs provided me with more insight on the code base of Trojitá and the idea of a clean rewrite of my code came up. As the clean solution required the design of a new model representing the parts of a message, a task I didn’t really feel up to, it didn’t evolve any further for quite some time.

The turning point was the announcement of KDE taking part in this years Google Summer of Code. As Trojitá is part of the KDE project this provided a great opportunity. I am able to use my participation in GSoC for my studies in computer science and with this I can concentrate on the required changes better and invest more time in a clean solution.

In the past few weeks I was able to develop a model that can provide the original, unencrypted message parts as well as decrypted ones. I was able to reuse most of the PGP related code and I am currently working on cleaning up my code so it can me merged into Trojitá’s master branch.

After that I’ll start integrating the decryption of S/MIME messages as well as checking PGP and S/MIME signatures. I’ll try to keep you posted on my progress.