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/