Hi all,
there's a patch series at [1] which adds support for decrypting and verifying OpenPGP e-mails -- thanks to Stephan's GSoC work.

Because I've added many modifications to Stephan's original work, I would appreciate a second pair of eyes to go through the patches. I think that it presents a big improvement as-is, even though it is not yet a complete "we support GPG" thingy (it's read-only for now, and the UI sucks).

One thing which I don't know how to do is nested encryption/signatures. The whole thing is implemented by modifying the MIME tree of a displayed message by "PartReplacers". The MIME tree of a message is traversed from top to the bottom, and the registered PartReplacer instances have a possibility to replace any tree node with a custom implementation.

The magic happens in ProxyMessagePart::fetchChildren. However, this code really assumes that this function is called at a time that all ancestors of the current tree node are already placed into the model, and that they have corresponding QPersistentModelIndexes which are going to remain valid -- see the Doxygen bits in src/Cryptography/PartReplacer.h.

This doesn't work that well with Mimetic, our MIME parsing library, which is quite good at providing a complete, recursive MIME tree. If this tree itself contains some items which would normally be overriden (multipart/signed or multipart/encrypted for example), they are instead included as-is.

There's also a problem on a lower level, the QCA library and especially its implementation of PGP simply sucks. It doesn't use the libgpgme for talking to GPG over a liibrary interface, but instead uses a hand-crafted parser to talk to gpg over pipes. The implementation is a bit buggy, there is for example a segfault when one tries to ask the key returned as a "key which signed this message" for basic information like human-radable name", etc. There's also no support for talking to the key servers.

Anyway, if you've got some time, I would appreciate some testing and feedback here.

Cheers,
Jan

[1] https://gerrit.vesnicky.cesnet.cz/r/#/q/topic:gpg

--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/

Reply via email to