RE: Upcoming GMime 3.0 changes



Aaaaaand I've implemented support for inline PGP this morning 😊

Jeff

-----Original Message-----
From: balsa-list [mailto:balsa-list-bounces gnome org] On Behalf Of Jeffrey
Stedfast via balsa-list
Sent: Monday, March 13, 2017 6:39 PM
To: balsa-list gnome org
Subject: Upcoming GMime 3.0 changes

Hello Balsa devs,

I'm sending this email to inform you guys of some upcoming GMime 3.0
features that I've either implemented or will be adding soon.

1. Probably the most import change coming to GMime 3.0 is that each header
field/value pair has its own raw value cache instead of using a cached stream
of the entire head block, thus forcing the complete invalidation of the header
cache when anything changed in the headers. In GMime 2.6, once the
header cache was invalidated, each header would get re-folded when
written back out to disk. This was obviously not ideal.

2. Next up is the replacement of the old custom GnuPG back-end with
GpgMe. Also included with this change is full support for S/MIME via both
multipart/signed and application/pkcs7-mime content-types using gpgsm (via
GpgMe). During this change, I also took the liberty of simplifying the crypto
API's a bit and so I was able to make it such that
g_mime_multipart_signed_verify(), for example, no longer requires you to
pass it a GMimeCryptoContext. Instead, GMime parses the Content-Type's
protocol parameter and uses that to instantiate the correct crypto context
(GMimeGpgContext for PGP and GMimePkcs7Context for S/MIME). Many of
the various state properties have been replaced with bitflags that can be
passed to encrypt() and decrypt(). The sign() method now also takes a
detach argument (might make this into a bitflag instead?) in order to support
encapsulated signing.

3. The GMimeMessage API's have been improved a bit. Gone are the old
GMimeMessage API's that return strings for the From and Reply-To headers.
Instead, *all* GMimeMessage API's return an InternetAddressList pointer
which can be used to manipulate the parsed address header. Also improved
is the g_mime_message_set_subject() method which now takes an optional
charset parameter (or NULL to use the default).

4. New in GMime 3.0 is the GMimeParserOptions struct which can be passed
to GMimeParser and other parser functions exposed in the lower-level API's.
This structure helps define how strict/forgiving the various parsing routines
should be with the input. This replaces the need for g_mime_init()'s flags so
you can change these settings on the fly now.

5. Another new feature is GMimeTextPart which makes getting/setting text
on a GMimePart simpler. GMimeTextPart is a subclass of GMimePart, so all
of the GMimePart API's that you are used to still work but now you also have
access to convenient functions like g_mime_text_part_get_text() and
g_mime_text_part_set_text() which removes the need for creating streams,
data wrappers, and setting them on the part.

6. Brand new rfc822 address parser which is more tolerant than the previous
generation parser. What's not to love?

7. And finally we get to a nifty feature that I just hacked up while waiting for
some other code to compile (hey, it takes an hour to compile... I needed
something to do!) which is that GMimeParser now scans for -----BEGIN PGP
MESSAGE-----/-----END PGP MESSAGE----- and -----BEGIN PGP SIGNED
MESSAGE-----/-----END PGP SIGNED MESSAGE----- markers while looking for
MIME boundaries and sets some state on the corresponding GMimePart that
you can use to quickly decide if the part contains encapsulated OpenPGP
data.

Jeff

_______________________________________________
balsa-list mailing list
balsa-list gnome org
https://mail.gnome.org/mailman/listinfo/balsa-list


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]