Hi all, attached is a bigger patch which improves the performance of the GpgME crypto operations in Balsa. Basically, it delays loading the public key of a signature until the user actually wants to display (or print) it. As a consequence, the signature “traffic light” is now based entirely on GpgME's status. Note that this results in a small difference from the previous implementation, where the indicator was “green” when both the signature validity and the key's owner trust were at least marginal. With the patch, using the default GpgME model, the key's owner trust must be one level higher (full) for a “green” signature. However, I think this approach is even better as it will (probably) show similar trust results as other MUA's. I also took the opportunity to re-factor some functions (inter alia now including the same key details in a print-out as in the display widget), and to set the “crypto” log domain for the related source files. As always, any comment will be welcome! Cheers, Albrecht. --- Patch details: - libbalsa/body.c: calculate protection state without the key - libbalsa/gmime-gpgme-signature.[ch]: do not try to load the key when creating the signature object, add and rename some signature-only related functions from rfc3156.[hc], set 'crypto' log domain - libbalsa/libbalsa-gpgme-keys.[ch]: add function to load a public key, properly restore the context attributes when listing keys, set 'crypto' log domain - libbalsa/libbalsa-gpgme-widgets.[ch]: improved function for creating a string from the key data (shifted from rfc3156.[hc]), set 'crypto' log domain - libbalsa/rfc3156.[ch]: refoctoring; shift some signature-only related functions to gmime-gpgme-signature.[ch], set 'crypto' log domain - src/balsa-message.c: use renamed signature info functions, calculate protection state without the key - src/balsa-mime-widget-crypto.c: add callback to load the key when the user wants to show it, drop condition which cannot be TRUE, use renamed signature info functions - src/balsa-mime-widget-message.c: use renamed signature info functions - src/balsa-print-object-header.c: try to load the key before printing, use renamed signature info functions - README, configure.ac: require gpgme ≥ 1.5.0 - libbalsa/libbalsa-gpgme.c: set 'crypto' log domain, adjust debug messages - libbalsa/gmime-application-pkcs7.c, libbalsa/gmime-multipart-crypt.c, libbalsa/gmime-part-rfc2440.c, libbalsa/libbalsa-gpgme-cb.c: set 'crypto' log domain
Attachment:
crypto-performance.diff.bz2
Description: application/bzip
Attachment:
pgpo9OcFZ57LE.pgp
Description: PGP signature