summaryrefslogtreecommitdiff
path: root/community/balsa
diff options
context:
space:
mode:
Diffstat (limited to 'community/balsa')
-rw-r--r--community/balsa/PKGBUILD8
-rw-r--r--community/balsa/gmime26.patch1372
2 files changed, 4 insertions, 1376 deletions
diff --git a/community/balsa/PKGBUILD b/community/balsa/PKGBUILD
index 77beb3d7f..404a1bf98 100644
--- a/community/balsa/PKGBUILD
+++ b/community/balsa/PKGBUILD
@@ -1,21 +1,21 @@
-# $Id: PKGBUILD 76471 2012-09-18 19:07:49Z jlichtblau $
+# $Id: PKGBUILD 88630 2013-04-20 17:58:41Z jlichtblau $
# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
# Contributor: Ionut Biru <ibiru@archlinux.org>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
# Contributor: Roman Kyrylych <roman@archlinux.org>
pkgname=balsa
-pkgver=2.4.12
+pkgver=2.5.0
pkgrel=1
pkgdesc="An e-mail client for GNOME"
arch=('i686' 'x86_64')
url='http://pawsa.fedorapeople.org/balsa/'
license=('GPL')
-depends=('gmime' 'libwebkit' 'libesmtp' 'libnotify' 'gpgme' 'gtksourceview2' 'gtkspell' 'gnome-icon-theme' 'desktop-file-utils')
+depends=('gmime' 'webkitgtk3' 'libesmtp' 'libnotify' 'gpgme' 'gtksourceview3' 'gtkspell3' 'gnome-icon-theme' 'desktop-file-utils')
makedepends=('perlxml' 'gnome-doc-utils' 'intltool')
install=$pkgname.install
source=(http://pawsa.fedorapeople.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('3f72fc69bb7fecb59e64c4cb88dc5083ed58dc76c9345b22d6c15af2c6b1e3c4')
+sha256sums=('67eaddbc33a079a74b65bf5f71ef163573f7d4a6f29ed6dca2ad6811d95519b4')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/community/balsa/gmime26.patch b/community/balsa/gmime26.patch
deleted file mode 100644
index fe4e6a9fa..000000000
--- a/community/balsa/gmime26.patch
+++ /dev/null
@@ -1,1372 +0,0 @@
-From 393d0077495cb750ee47bab6ec44a60906a95179 Mon Sep 17 00:00:00 2001
-From: Peter Bloomfield <PeterBloomfield@bellsouth.net>
-Date: Mon, 28 Nov 2011 03:00:55 +0000
-Subject: Build with GMime 2.6.0
-
- * configure.in: check for GMime >= 2.5.7
- * libbalsa/gmime-application-pkcs7.c
- (g_mime_application_pkcs7_sign), (g_mime_application_pkcs7_verify),
- (g_mime_application_pkcs7_encrypt),
- (g_mime_application_pkcs7_decrypt): build with GMime >= 2.5.7.
- * libbalsa/gmime-application-pkcs7.h: ditto.
- * libbalsa/gmime-gpgme-context.c (g_mime_gpgme_context_get_type),
- (g_mime_gpgme_context_class_init), (g_mime_gpgme_context_finalize),
- (g_mime_gpgme_digest_id): ditto.
- * libbalsa/gmime-gpgme-context.h: ditto.
- * libbalsa/gmime-part-rfc2440.c (g_mime_part_rfc2440_sign_encrypt),
- (g_mime_part_rfc2440_verify), (g_mime_part_rfc2440_decrypt):
- ditto.
- * libbalsa/gmime-part-rfc2440.h: ditto.
- * libbalsa/rfc3156.c (password_request_func),
- (libbalsa_sign_mime_object), (libbalsa_encrypt_mime_object),
- (libbalsa_body_check_signature), (libbalsa_body_decrypt): ditto.
----
-diff --git a/ChangeLog b/ChangeLog
-index bd95e68..d5c62f5 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,25 @@
-+2011-11-27 Peter Bloomfield
-+
-+ Build with GMime 2.6.0
-+
-+ * configure.in: check for GMime >= 2.5.7
-+ * libbalsa/gmime-application-pkcs7.c
-+ (g_mime_application_pkcs7_sign), (g_mime_application_pkcs7_verify),
-+ (g_mime_application_pkcs7_encrypt),
-+ (g_mime_application_pkcs7_decrypt): build with GMime >= 2.5.7.
-+ * libbalsa/gmime-application-pkcs7.h: ditto.
-+ * libbalsa/gmime-gpgme-context.c (g_mime_gpgme_context_get_type),
-+ (g_mime_gpgme_context_class_init), (g_mime_gpgme_context_finalize),
-+ (g_mime_gpgme_digest_id): ditto.
-+ * libbalsa/gmime-gpgme-context.h: ditto.
-+ * libbalsa/gmime-part-rfc2440.c (g_mime_part_rfc2440_sign_encrypt),
-+ (g_mime_part_rfc2440_verify), (g_mime_part_rfc2440_decrypt):
-+ ditto.
-+ * libbalsa/gmime-part-rfc2440.h: ditto.
-+ * libbalsa/rfc3156.c (password_request_func),
-+ (libbalsa_sign_mime_object), (libbalsa_encrypt_mime_object),
-+ (libbalsa_body_check_signature), (libbalsa_body_decrypt): ditto.
-+
- 2011-11-22 Pawel Salek
-
- * NEWS, configure.in: release balsa-2.4.11
-diff --git a/configure.in b/configure.in
-index 4a8320e..64d99f3 100644
---- a/configure.in
-+++ b/configure.in
-@@ -307,7 +307,12 @@ fi
- case "$with_gmime" in
- 2.4) ;;
- 2.6) AC_DEFINE([HAVE_GMIME_2_6], [1],
-- [Defined to build with GMime version 2.5 or 2.6]) ;;
-+ [Defined to build with GMime version 2.5 or 2.6])
-+ if $PKG_CONFIG --atleast-version=2.5.7 gmime-2.6; then
-+ AC_DEFINE([HAVE_GMIME_2_5_7], [1],
-+ [Defined when GMime version is at least 2.5.7])
-+ fi
-+ ;;
- *) AC_MSG_ERROR([unknown GMime version $with_gmime]) ;;
- esac
-
-diff --git a/libbalsa/gmime-application-pkcs7.c b/libbalsa/gmime-application-pkcs7.c
-index 12f4f8f..63b8087 100644
---- a/libbalsa/gmime-application-pkcs7.c
-+++ b/libbalsa/gmime-application-pkcs7.c
-@@ -96,8 +96,14 @@ g_mime_application_pkcs7_sign (GMimePart *pkcs7, GMimeObject *content,
- GMimeFilter *crlf_filter, *from_filter;
-
- g_return_val_if_fail (GMIME_IS_PART (pkcs7), -1);
-+#ifndef HAVE_GMIME_2_5_7
- g_return_val_if_fail (GMIME_IS_CIPHER_CONTEXT (ctx), -1);
- g_return_val_if_fail (ctx->sign_protocol != NULL, -1);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_return_val_if_fail (GMIME_IS_CRYPTO_CONTEXT (ctx), -1);
-+ g_return_val_if_fail(g_mime_crypto_context_get_signature_protocol(ctx)
-+ != NULL, -1);
-+#endif /* HAVE_GMIME_2_5_7 */
- g_return_val_if_fail (GMIME_IS_OBJECT (content), -1);
-
- /* Prepare all the parts for signing... */
-@@ -127,7 +133,14 @@ g_mime_application_pkcs7_sign (GMimePart *pkcs7, GMimeObject *content,
- sig_data_stream = g_mime_stream_mem_new ();
-
- /* get the signed content */
-- if (g_mime_cipher_context_sign (ctx, userid, GMIME_CIPHER_HASH_DEFAULT, filtered_stream, sig_data_stream, err) == -1) {
-+#ifndef HAVE_GMIME_2_5_7
-+ if (g_mime_cipher_context_sign (ctx, userid, GMIME_CIPHER_HASH_DEFAULT, filtered_stream, sig_data_stream, err) == -1)
-+#else /* HAVE_GMIME_2_5_7 */
-+ if (g_mime_crypto_context_sign
-+ (ctx, userid, GMIME_CIPHER_HASH_DEFAULT, filtered_stream,
-+ sig_data_stream, err) == -1)
-+#endif /* HAVE_GMIME_2_5_7 */
-+ {
- g_object_unref (filtered_stream);
- g_object_unref (sig_data_stream);
- g_object_unref (stream);
-@@ -168,9 +181,15 @@ g_mime_application_pkcs7_sign (GMimePart *pkcs7, GMimeObject *content,
- * decrypting it again. In this case, validity is undefined.
- */
- GMimeObject *
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_application_pkcs7_verify(GMimePart * pkcs7,
- GMimeSignatureValidity ** validity,
- GMimeCipherContext * ctx, GError ** err)
-+#else /* HAVE_GMIME_2_5_7 */
-+g_mime_application_pkcs7_verify(GMimePart * pkcs7,
-+ GMimeSignatureList ** list,
-+ GMimeCryptoContext * ctx, GError ** err)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- GMimeObject *decrypted;
- GMimeDataWrapper *wrapper;
-@@ -181,8 +200,14 @@ g_mime_application_pkcs7_verify(GMimePart * pkcs7,
- const char *smime_type;
-
- g_return_val_if_fail(GMIME_IS_PART(pkcs7), NULL);
-+#ifndef HAVE_GMIME_2_5_7
- g_return_val_if_fail(GMIME_IS_CIPHER_CONTEXT(ctx), NULL);
- g_return_val_if_fail(ctx->encrypt_protocol != NULL, NULL);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_return_val_if_fail(GMIME_IS_CRYPTO_CONTEXT(ctx), NULL);
-+ g_return_val_if_fail(g_mime_crypto_context_get_encryption_protocol(ctx)
-+ != NULL, NULL);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* some sanity checks */
- smime_type =
-@@ -208,9 +233,16 @@ g_mime_application_pkcs7_verify(GMimePart * pkcs7,
- g_object_unref(crlf_filter);
-
- /* get the cleartext */
-+#ifndef HAVE_GMIME_2_5_7
- *validity = g_mime_cipher_context_verify(ctx, GMIME_CIPHER_HASH_DEFAULT,
- ciphertext, filtered_stream, err);
-- if (!*validity) {
-+ if (!*validity)
-+#else /* HAVE_GMIME_2_5_7 */
-+ *list = g_mime_crypto_context_verify(ctx, GMIME_CIPHER_ALGO_DEFAULT,
-+ ciphertext, filtered_stream, err);
-+ if (!*list)
-+#endif /* HAVE_GMIME_2_5_7 */
-+ {
- g_object_unref(filtered_stream);
- g_object_unref(ciphertext);
- g_object_unref(stream);
-@@ -248,7 +280,12 @@ g_mime_application_pkcs7_verify(GMimePart * pkcs7,
- */
- int
- g_mime_application_pkcs7_encrypt (GMimePart *pkcs7, GMimeObject *content,
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext *ctx, GPtrArray *recipients,
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContext *ctx,
-+ GPtrArray *recipients,
-+#endif /* HAVE_GMIME_2_5_7 */
- GError **err)
- {
- GMimeDataWrapper *wrapper;
-@@ -257,8 +294,14 @@ g_mime_application_pkcs7_encrypt (GMimePart *pkcs7, GMimeObject *content,
- GMimeFilter *crlf_filter;
-
- g_return_val_if_fail (GMIME_IS_PART (pkcs7), -1);
-+#ifndef HAVE_GMIME_2_5_7
- g_return_val_if_fail (GMIME_IS_CIPHER_CONTEXT (ctx), -1);
- g_return_val_if_fail (ctx->encrypt_protocol != NULL, -1);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_return_val_if_fail (GMIME_IS_CRYPTO_CONTEXT (ctx), -1);
-+ g_return_val_if_fail(g_mime_crypto_context_get_encryption_protocol(ctx)
-+ != NULL, -1);
-+#endif /* HAVE_GMIME_2_5_7 */
- g_return_val_if_fail (GMIME_IS_OBJECT (content), -1);
-
- /* get the cleartext */
-@@ -279,7 +322,15 @@ g_mime_application_pkcs7_encrypt (GMimePart *pkcs7, GMimeObject *content,
-
- /* encrypt the content stream */
- ciphertext = g_mime_stream_mem_new ();
-- if (g_mime_cipher_context_encrypt (ctx, FALSE, NULL, recipients, stream, ciphertext, err) == -1) {
-+#ifndef HAVE_GMIME_2_5_7
-+ if (g_mime_cipher_context_encrypt (ctx, FALSE, NULL, recipients, stream, ciphertext, err) == -1)
-+#else /* HAVE_GMIME_2_5_7 */
-+ if (g_mime_crypto_context_encrypt
-+ (ctx, FALSE, NULL,
-+ GMIME_CIPHER_ALGO_DEFAULT,
-+ recipients, stream, ciphertext, err) == -1)
-+#endif /* HAVE_GMIME_2_5_7 */
-+ {
- g_object_unref (ciphertext);
- g_object_unref (stream);
- return -1;
-@@ -313,8 +364,14 @@ g_mime_application_pkcs7_encrypt (GMimePart *pkcs7, GMimeObject *content,
- * err with more information about the reason.
- */
- GMimeObject *
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_application_pkcs7_decrypt (GMimePart *pkcs7, GMimeCipherContext *ctx,
- GError **err)
-+#else /* HAVE_GMIME_2_5_7 */
-+g_mime_application_pkcs7_decrypt (GMimePart *pkcs7,
-+ GMimeCryptoContext *ctx,
-+ GError **err)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- GMimeObject *decrypted;
- GMimeDataWrapper *wrapper;
-@@ -325,8 +382,14 @@ g_mime_application_pkcs7_decrypt (GMimePart *pkcs7, GMimeCipherContext *ctx,
- const char *smime_type;
-
- g_return_val_if_fail(GMIME_IS_PART(pkcs7), NULL);
-+#ifndef HAVE_GMIME_2_5_7
- g_return_val_if_fail(GMIME_IS_CIPHER_CONTEXT(ctx), NULL);
- g_return_val_if_fail(ctx->encrypt_protocol != NULL, NULL);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_return_val_if_fail(GMIME_IS_CRYPTO_CONTEXT(ctx), NULL);
-+ g_return_val_if_fail(g_mime_crypto_context_get_encryption_protocol(ctx)
-+ != NULL, NULL);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* some sanity checks */
- smime_type =
-@@ -353,7 +416,13 @@ g_mime_application_pkcs7_decrypt (GMimePart *pkcs7, GMimeCipherContext *ctx,
- g_object_unref(crlf_filter);
-
- /* get the cleartext */
-- if (g_mime_cipher_context_decrypt(ctx, ciphertext, filtered_stream, err) == NULL) {
-+#ifndef HAVE_GMIME_2_5_7
-+ if (g_mime_cipher_context_decrypt(ctx, ciphertext, filtered_stream, err) == NULL)
-+#else /* HAVE_GMIME_2_5_7 */
-+ if (g_mime_crypto_context_decrypt
-+ (ctx, ciphertext, filtered_stream, err) == NULL)
-+#endif /* HAVE_GMIME_2_5_7 */
-+ {
- g_object_unref(filtered_stream);
- g_object_unref(ciphertext);
- g_object_unref(stream);
-diff --git a/libbalsa/gmime-application-pkcs7.h b/libbalsa/gmime-application-pkcs7.h
-index 03fa401..6678ff5 100644
---- a/libbalsa/gmime-application-pkcs7.h
-+++ b/libbalsa/gmime-application-pkcs7.h
-@@ -28,7 +28,11 @@ extern "C" {
- #endif /* __cplusplus */
-
- #include <gmime/gmime-part.h>
-+#ifndef HAVE_GMIME_2_5_7
- #include <gmime/gmime-cipher-context.h>
-+#else /* HAVE_GMIME_2_5_7 */
-+#include <gmime/gmime-crypto-context.h>
-+#endif /* HAVE_GMIME_2_5_7 */
-
- #undef HAS_APPLICATION_PKCS7_MIME_SIGNED_SUPPORT
-
-@@ -39,21 +43,40 @@ extern "C" {
- * Balsa always encodes S/MIME signed stuff as multipart/signed. */
- int g_mime_application_pkcs7_sign(GMimePart * pkcs7,
- GMimeObject * content,
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext * ctx,
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContext * ctx,
-+#endif /* HAVE_GMIME_2_5_7 */
- const char *userid, GError ** err);
- #endif
-
-+#ifndef HAVE_GMIME_2_5_7
- GMimeObject *g_mime_application_pkcs7_verify(GMimePart * pkcs7,
- GMimeSignatureValidity ** validity,
- GMimeCipherContext * ctx, GError ** err);
-+#else /* HAVE_GMIME_2_5_7 */
-+GMimeObject *g_mime_application_pkcs7_verify(GMimePart * pkcs7,
-+ GMimeSignatureList ** validity,
-+ GMimeCryptoContext * ctx, GError ** err);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- int g_mime_application_pkcs7_encrypt(GMimePart * pkcs7,
- GMimeObject * content,
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext * ctx,
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContext * ctx,
-+#endif /* HAVE_GMIME_2_5_7 */
- GPtrArray * recipients, GError ** err);
-
-+#ifndef HAVE_GMIME_2_5_7
- GMimeObject *g_mime_application_pkcs7_decrypt(GMimePart * pkcs7,
- GMimeCipherContext * ctx, GError ** err);
-+#else /* HAVE_GMIME_2_5_7 */
-+GMimeObject *g_mime_application_pkcs7_decrypt(GMimePart * pkcs7,
-+ GMimeCryptoContext * ctx, GError ** err);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- #ifdef __cplusplus
- }
-diff --git a/libbalsa/gmime-gpgme-context.c b/libbalsa/gmime-gpgme-context.c
-index 24b140b..0c56f94 100644
---- a/libbalsa/gmime-gpgme-context.c
-+++ b/libbalsa/gmime-gpgme-context.c
-@@ -27,6 +27,9 @@
- #include <unistd.h>
- #include <glib.h>
- #include <gmime/gmime.h>
-+#ifdef HAVE_GMIME_2_5_7
-+#include <gmime/gmime-certificate.h>
-+#endif /* HAVE_GMIME_2_5_7 */
- #include <gpgme.h>
- #include <time.h>
- #include <glib/gi18n.h>
-@@ -44,6 +47,7 @@ static gboolean g_mime_gpgme_context_check_protocol(GMimeGpgmeContextClass
- protocol,
- GError ** error);
-
-+#ifndef HAVE_GMIME_2_5_7
- static GMimeCipherHash g_mime_gpgme_hash_id(GMimeCipherContext * ctx,
- const char *hash);
-
-@@ -70,6 +74,46 @@ static GMimeSignatureValidity *g_mime_gpgme_decrypt(GMimeCipherContext *
- GMimeStream * istream,
- GMimeStream * ostream,
- GError ** err);
-+#else /* HAVE_GMIME_2_5_7 */
-+static GMimeDigestAlgo g_mime_gpgme_digest_id(GMimeCryptoContext * ctx,
-+ const char *hash);
-+
-+static const char *g_mime_gpgme_digest_name(GMimeCryptoContext * ctx,
-+ GMimeDigestAlgo hash);
-+
-+static const char
-+ *g_mime_gpgme_get_signature_protocol(GMimeCryptoContext * context);
-+static const char
-+ *g_mime_gpgme_get_encryption_protocol(GMimeCryptoContext * context);
-+static const char
-+ *g_mime_gpgme_get_key_exchange_protocol(GMimeCryptoContext * context);
-+
-+static int g_mime_gpgme_sign(GMimeCryptoContext * ctx,
-+ const char * userid,
-+ GMimeDigestAlgo hash,
-+ GMimeStream * istream,
-+ GMimeStream * ostream,
-+ GError ** err);
-+
-+static GMimeSignatureList *g_mime_gpgme_verify(GMimeCryptoContext * ctx,
-+ GMimeDigestAlgo hash,
-+ GMimeStream * istream,
-+ GMimeStream * sigstream,
-+ GError ** err);
-+
-+static int g_mime_gpgme_encrypt(GMimeCryptoContext * ctx,
-+ gboolean sign,
-+ const char *userid,
-+ GMimeDigestAlgo digest,
-+ GPtrArray * recipients,
-+ GMimeStream * istream,
-+ GMimeStream * ostream, GError ** err);
-+
-+static GMimeDecryptResult *g_mime_gpgme_decrypt(GMimeCryptoContext * ctx,
-+ GMimeStream * istream,
-+ GMimeStream * ostream,
-+ GError ** err);
-+#endif /* HAVE_GMIME_2_5_7 */
-
-
- /* internal passphrase callback */
-@@ -102,7 +146,11 @@ static void g_set_error_from_gpgme(GError ** error, gpgme_error_t gpgme_err,
- const gchar * message);
-
-
-+#ifndef HAVE_GMIME_2_5_7
- static GMimeCipherContextClass *parent_class = NULL;
-+#else /* HAVE_GMIME_2_5_7 */
-+static GMimeCryptoContextClass *parent_class = NULL;
-+#endif /* HAVE_GMIME_2_5_7 */
-
-
- GType
-@@ -124,8 +172,13 @@ g_mime_gpgme_context_get_type(void)
- };
-
- type =
-+#ifndef HAVE_GMIME_2_5_7
- g_type_register_static(GMIME_TYPE_CIPHER_CONTEXT,
- "GMimeGpgmeContext", &info, 0);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_type_register_static(GMIME_TYPE_CRYPTO_CONTEXT,
-+ "GMimeGpgmeContext", &info, 0);
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
- return type;
-@@ -136,19 +189,39 @@ static void
- g_mime_gpgme_context_class_init(GMimeGpgmeContextClass * klass)
- {
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContextClass *cipher_class =
- GMIME_CIPHER_CONTEXT_CLASS(klass);
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContextClass *crypto_class =
-+ GMIME_CRYPTO_CONTEXT_CLASS(klass);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- parent_class = g_type_class_ref(G_TYPE_OBJECT);
-
- object_class->finalize = g_mime_gpgme_context_finalize;
-
-+#ifndef HAVE_GMIME_2_5_7
- cipher_class->hash_id = g_mime_gpgme_hash_id;
- cipher_class->hash_name = g_mime_gpgme_hash_name;
- cipher_class->sign = g_mime_gpgme_sign;
- cipher_class->verify = g_mime_gpgme_verify;
- cipher_class->encrypt = g_mime_gpgme_encrypt;
- cipher_class->decrypt = g_mime_gpgme_decrypt;
-+#else /* HAVE_GMIME_2_5_7 */
-+ crypto_class->digest_id = g_mime_gpgme_digest_id;
-+ crypto_class->digest_name = g_mime_gpgme_digest_name;
-+ crypto_class->get_signature_protocol =
-+ g_mime_gpgme_get_signature_protocol;
-+ crypto_class->get_encryption_protocol =
-+ g_mime_gpgme_get_encryption_protocol;
-+ crypto_class->get_key_exchange_protocol =
-+ g_mime_gpgme_get_key_exchange_protocol;
-+ crypto_class->sign = g_mime_gpgme_sign;
-+ crypto_class->verify = g_mime_gpgme_verify;
-+ crypto_class->encrypt = g_mime_gpgme_encrypt;
-+ crypto_class->decrypt = g_mime_gpgme_decrypt;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- if (gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP) ==
- GPG_ERR_NO_ERROR)
-@@ -190,7 +263,11 @@ g_mime_gpgme_context_finalize(GObject * object)
- }
-
- #if !defined(HAVE_GMIME_2_6)
-+#ifndef HAVE_GMIME_2_5_7
- g_object_unref(GMIME_CIPHER_CONTEXT(ctx)->session);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_object_unref(GMIME_CRYPTO_CONTEXT(ctx)->session);
-+#endif /* HAVE_GMIME_2_5_7 */
- #endif /* HAVE_GMIME_2_6 */
-
- G_OBJECT_CLASS(parent_class)->finalize(object);
-@@ -200,15 +277,26 @@ g_mime_gpgme_context_finalize(GObject * object)
- /*
- * Convert a hash algorithm name to a number
- */
-+#ifndef HAVE_GMIME_2_5_7
- static GMimeCipherHash
- g_mime_gpgme_hash_id(GMimeCipherContext * ctx, const char *hash)
-+#else /* HAVE_GMIME_2_5_7 */
-+static GMimeDigestAlgo
-+g_mime_gpgme_digest_id(GMimeCryptoContext * ctx, const char *hash)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
-+#ifndef HAVE_GMIME_2_5_7
- if (hash == NULL)
- return GMIME_CIPHER_HASH_DEFAULT;
-+#else /* HAVE_GMIME_2_5_7 */
-+ if (hash == NULL)
-+ return GMIME_DIGEST_ALGO_DEFAULT;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- if (!g_ascii_strcasecmp(hash, "pgp-"))
- hash += 4;
-
-+#ifndef HAVE_GMIME_2_5_7
- if (!g_ascii_strcasecmp(hash, "md2"))
- return GMIME_CIPHER_HASH_MD2;
- else if (!g_ascii_strcasecmp(hash, "md5"))
-@@ -223,6 +311,22 @@ g_mime_gpgme_hash_id(GMimeCipherContext * ctx, const char *hash)
- return GMIME_CIPHER_HASH_HAVAL5160;
-
- return GMIME_CIPHER_HASH_DEFAULT;
-+#else /* HAVE_GMIME_2_5_7 */
-+ if (!g_ascii_strcasecmp(hash, "md2"))
-+ return GMIME_DIGEST_ALGO_MD2;
-+ else if (!g_ascii_strcasecmp(hash, "md5"))
-+ return GMIME_DIGEST_ALGO_MD5;
-+ else if (!g_ascii_strcasecmp(hash, "sha1"))
-+ return GMIME_DIGEST_ALGO_SHA1;
-+ else if (!g_ascii_strcasecmp(hash, "ripemd160"))
-+ return GMIME_DIGEST_ALGO_RIPEMD160;
-+ else if (!g_ascii_strcasecmp(hash, "tiger192"))
-+ return GMIME_DIGEST_ALGO_TIGER192;
-+ else if (!g_ascii_strcasecmp(hash, "haval-5-160"))
-+ return GMIME_DIGEST_ALGO_HAVAL5160;
-+
-+ return GMIME_DIGEST_ALGO_DEFAULT;
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
-
-@@ -230,7 +334,11 @@ g_mime_gpgme_hash_id(GMimeCipherContext * ctx, const char *hash)
- * Convert a hash algorithm number to a string
- */
- static const char *
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_gpgme_hash_name(GMimeCipherContext * context, GMimeCipherHash hash)
-+#else /* HAVE_GMIME_2_5_7 */
-+g_mime_gpgme_digest_name(GMimeCryptoContext * context, GMimeDigestAlgo hash)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- GMimeGpgmeContext *ctx = GMIME_GPGME_CONTEXT(context);
- char *p;
-@@ -239,6 +347,7 @@ g_mime_gpgme_hash_name(GMimeCipherContext * context, GMimeCipherHash hash)
- g_return_val_if_fail(ctx->gpgme_ctx, NULL);
-
- /* note: this is only a subset of the hash algorithms gpg(me) supports */
-+#ifndef HAVE_GMIME_2_5_7
- switch (hash) {
- case GMIME_CIPHER_HASH_MD2:
- p = "pgp-md2";
-@@ -258,6 +367,27 @@ g_mime_gpgme_hash_name(GMimeCipherContext * context, GMimeCipherHash hash)
- case GMIME_CIPHER_HASH_HAVAL5160:
- p = "pgp-haval-5-160";
- break;
-+#else /* HAVE_GMIME_2_5_7 */
-+ switch (hash) {
-+ case GMIME_DIGEST_ALGO_MD2:
-+ p = "pgp-md2";
-+ break;
-+ case GMIME_DIGEST_ALGO_MD5:
-+ p = "pgp-md5";
-+ break;
-+ case GMIME_DIGEST_ALGO_SHA1:
-+ p = "pgp-sha1";
-+ break;
-+ case GMIME_DIGEST_ALGO_RIPEMD160:
-+ p = "pgp-ripemd160";
-+ break;
-+ case GMIME_DIGEST_ALGO_TIGER192:
-+ p = "pgp-tiger192";
-+ break;
-+ case GMIME_DIGEST_ALGO_HAVAL5160:
-+ p = "pgp-haval-5-160";
-+ break;
-+#endif /* HAVE_GMIME_2_5_7 */
- default:
- if (!(p = ctx->micalg))
- return p;
-@@ -270,6 +400,29 @@ g_mime_gpgme_hash_name(GMimeCipherContext * context, GMimeCipherHash hash)
- return p;
- }
-
-+#ifdef HAVE_GMIME_2_5_7
-+static const char *
-+g_mime_gpgme_get_signature_protocol(GMimeCryptoContext * context)
-+{
-+ GMimeGpgmeContext *ctx = GMIME_GPGME_CONTEXT(context);
-+ return ctx->sign_protocol;
-+}
-+
-+static const char *
-+g_mime_gpgme_get_encryption_protocol(GMimeCryptoContext * context)
-+{
-+ GMimeGpgmeContext *ctx = GMIME_GPGME_CONTEXT(context);
-+ return ctx->encrypt_protocol;
-+}
-+
-+static const char *
-+g_mime_gpgme_get_key_exchange_protocol(GMimeCryptoContext * context)
-+{
-+ GMimeGpgmeContext *ctx = GMIME_GPGME_CONTEXT(context);
-+ return ctx->key_protocol;
-+}
-+
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /*
- * Wrapper to convert the passphrase returned from the gmime session to gpgme.
-@@ -279,7 +432,11 @@ g_mime_session_passphrase(void *HOOK, const char *UID_HINT,
- const char *PASSPHRASE_INFO, int PREV_WAS_BAD,
- int FD)
- {
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext *ctx = GMIME_CIPHER_CONTEXT(HOOK);
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContext *ctx = GMIME_CRYPTO_CONTEXT(HOOK);
-+#endif /* HAVE_GMIME_2_5_7 */
- #if defined(HAVE_GMIME_2_6)
- GMimeStream *stream;
- gboolean rc;
-@@ -366,9 +523,15 @@ cb_data_release(void *handle)
- * arg, but set the value in the context.
- */
- static int
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_gpgme_sign(GMimeCipherContext * context, const char *userid,
- GMimeCipherHash hash, GMimeStream * istream,
- GMimeStream * ostream, GError ** error)
-+#else /* HAVE_GMIME_2_5_7 */
-+g_mime_gpgme_sign(GMimeCryptoContext * context, const char *userid,
-+ GMimeDigestAlgo hash, GMimeStream * istream,
-+ GMimeStream * ostream, GError ** error)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- GMimeGpgmeContext *ctx = (GMimeGpgmeContext *) context;
- gpgme_sig_mode_t sig_mode;
-@@ -460,6 +623,7 @@ g_mime_gpgme_sign(GMimeCipherContext * context, const char *userid,
- }
-
-
-+#ifndef HAVE_GMIME_2_5_7
- /*
- * In standard mode, verify that sigstream contains a detached signature for
- * istream. In single-part mode (RFC 2440, RFC 2633 application/pkcs7-mime),
-@@ -471,13 +635,33 @@ static GMimeSignatureValidity *
- g_mime_gpgme_verify(GMimeCipherContext * context, GMimeCipherHash hash,
- GMimeStream * istream, GMimeStream * sigstream,
- GError ** error)
-+#else /* HAVE_GMIME_2_5_7 */
-+/*
-+ * In standard mode, verify that sigstream contains a detached signature for
-+ * istream. In single-part mode (RFC 2440, RFC 2633 application/pkcs7-mime),
-+ * istream contains clearsigned data, and sigstream will be filled with the
-+ * verified plaintext. The routine returns a GMimeSignatureList object.
-+ * More information is saved in the context's signature object.
-+ * On error error is set accordingly.
-+ */
-+static GMimeSignatureList *
-+g_mime_gpgme_verify(GMimeCryptoContext * context, GMimeDigestAlgo hash,
-+ GMimeStream * istream, GMimeStream * sigstream,
-+ GError ** error)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- GMimeGpgmeContext *ctx = (GMimeGpgmeContext *) context;
- gpgme_ctx_t gpgme_ctx;
- gpgme_protocol_t protocol;
- gpgme_error_t err;
- gpgme_data_t msg, sig;
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *validity;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeSignatureList *list;
-+ GMimeSignature *signature;
-+
-+#endif /* HAVE_GMIME_2_5_7 */
- struct gpgme_data_cbs cbs = {
- (gpgme_data_read_cb_t) g_mime_gpgme_stream_rd, /* read method */
- (gpgme_data_write_cb_t) g_mime_gpgme_stream_wr, /* write method */
-@@ -521,6 +705,7 @@ g_mime_gpgme_verify(GMimeCipherContext * context, GMimeCipherHash hash,
- ctx->sig_state =
- g_mime_gpgme_sigstat_new_from_gpgme_ctx(gpgme_ctx);
-
-+#ifndef HAVE_GMIME_2_5_7
- validity = g_mime_signature_validity_new();
- if (ctx->sig_state) {
- switch (ctx->sig_state->status)
-@@ -536,12 +721,44 @@ g_mime_gpgme_verify(GMimeCipherContext * context, GMimeCipherHash hash,
- }
- } else
- g_mime_signature_validity_set_status(validity, GMIME_SIGNATURE_STATUS_UNKNOWN);
-+#else /* HAVE_GMIME_2_5_7 */
-+ list = g_mime_signature_list_new();
-+ signature = g_mime_signature_new();
-+ g_mime_signature_list_add(list, signature);
-+
-+ if (ctx->sig_state) {
-+ switch (ctx->sig_state->status)
-+ {
-+ case GPG_ERR_NO_ERROR:
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_GOOD);
-+ break;
-+ case GPG_ERR_NOT_SIGNED:
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_ERROR);
-+ g_mime_signature_set_errors(signature,
-+ GMIME_SIGNATURE_ERROR_NONE);
-+ break;
-+ default:
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_BAD);
-+ }
-+ } else {
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_ERROR);
-+ g_mime_signature_set_errors(signature, GMIME_SIGNATURE_ERROR_NONE);
-+ }
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* release gmgme data buffers */
- gpgme_data_release(msg);
- gpgme_data_release(sig);
-
-+#ifndef HAVE_GMIME_2_5_7
- return validity;
-+#else /* HAVE_GMIME_2_5_7 */
-+ return list;
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
-
-@@ -549,10 +766,19 @@ g_mime_gpgme_verify(GMimeCipherContext * context, GMimeCipherHash hash,
- * Encrypt istream to ostream for recipients. If sign is set, sign by userid.
- */
- static int
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_gpgme_encrypt(GMimeCipherContext * context, gboolean sign,
- const char *userid, GPtrArray * recipients,
- GMimeStream * istream, GMimeStream * ostream,
- GError ** error)
-+#else /* HAVE_GMIME_2_5_7 */
-+g_mime_gpgme_encrypt(GMimeCryptoContext * context, gboolean sign,
-+ const char *userid,
-+ GMimeDigestAlgo digest,
-+ GPtrArray * recipients,
-+ GMimeStream * istream, GMimeStream * ostream,
-+ GError ** error)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- GMimeGpgmeContext *ctx = (GMimeGpgmeContext *) context;
- gpgme_ctx_t gpgme_ctx;
-@@ -653,9 +879,15 @@ g_mime_gpgme_encrypt(GMimeCipherContext * context, gboolean sign,
- * Decrypt istream to ostream. In RFC 2440 mode, also try to check an included
- * signature (if any).
- */
-+#ifndef HAVE_GMIME_2_5_7
- static GMimeSignatureValidity *
- g_mime_gpgme_decrypt(GMimeCipherContext * context, GMimeStream * istream,
- GMimeStream * ostream, GError ** error)
-+#else /* HAVE_GMIME_2_5_7 */
-+static GMimeDecryptResult *
-+g_mime_gpgme_decrypt(GMimeCryptoContext * context, GMimeStream * istream,
-+ GMimeStream * ostream, GError ** error)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- GMimeGpgmeContext *ctx = (GMimeGpgmeContext *) context;
- gpgme_ctx_t gpgme_ctx;
-@@ -668,7 +900,13 @@ g_mime_gpgme_decrypt(GMimeCipherContext * context, GMimeStream * istream,
- NULL, /* seek method */
- cb_data_release /* release method */
- };
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *validity;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeDecryptResult *result;
-+ GMimeSignatureList *list;
-+ GMimeSignature *signature;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* some paranoia checks */
- g_return_val_if_fail(ctx, NULL);
-@@ -716,6 +954,7 @@ g_mime_gpgme_decrypt(GMimeCipherContext * context, GMimeStream * istream,
- /* try to get information about the signature (if any) */
- ctx->sig_state = g_mime_gpgme_sigstat_new_from_gpgme_ctx(gpgme_ctx);
-
-+#ifndef HAVE_GMIME_2_5_7
- validity = g_mime_signature_validity_new();
- if (ctx->sig_state) {
- switch (ctx->sig_state->status)
-@@ -733,14 +972,57 @@ g_mime_gpgme_decrypt(GMimeCipherContext * context, GMimeStream * istream,
- g_mime_signature_validity_set_status(validity, GMIME_SIGNATURE_STATUS_UNKNOWN);
-
- return validity;
-+#else /* HAVE_GMIME_2_5_7 */
-+ list = g_mime_signature_list_new();
-+ signature = g_mime_signature_new();
-+ g_mime_signature_list_add(list, signature);
-+ result = g_mime_decrypt_result_new();
-+ g_mime_decrypt_result_set_signatures(result, list);
-+
-+ if (ctx->sig_state) {
-+ switch (ctx->sig_state->status)
-+ {
-+ case GPG_ERR_NO_ERROR:
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_GOOD);
-+ break;
-+ case GPG_ERR_NOT_SIGNED:
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_ERROR);
-+ g_mime_signature_set_errors(signature,
-+ GMIME_SIGNATURE_ERROR_NONE);
-+ break;
-+ default:
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_BAD);
-+ }
-+ } else {
-+ g_mime_signature_set_status(signature,
-+ GMIME_SIGNATURE_STATUS_ERROR);
-+ g_mime_signature_set_errors(signature, GMIME_SIGNATURE_ERROR_NONE);
-+ }
-+
-+ return result;
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
-
-+#ifndef HAVE_GMIME_2_5_7
- /*
- * Create a new gpgme cipher context with protocol. If anything fails, return
- * NULL and set error.
- */
-+#else /* HAVE_GMIME_2_5_7 */
-+/*
-+ * Create a new gpgme crypto context with protocol. If anything fails, return
-+ * NULL and set error.
-+ */
-+#endif /* HAVE_GMIME_2_5_7 */
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext *
-+#else /* HAVE_GMIME_2_5_7 */
-+GMimeCryptoContext *
-+#endif /* HAVE_GMIME_2_5_7 */
- #if defined(HAVE_GMIME_2_6)
- g_mime_gpgme_context_new(GMimePasswordRequestFunc request_passwd,
- gpgme_protocol_t protocol, GError ** error)
-@@ -749,7 +1031,11 @@ g_mime_gpgme_context_new(GMimeSession * session,
- gpgme_protocol_t protocol, GError ** error)
- #endif /* HAVE_GMIME_2_6 */
- {
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext *cipher;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContext *crypto;
-+#endif /* HAVE_GMIME_2_5_7 */
- GMimeGpgmeContext *ctx;
- gpgme_error_t err;
- gpgme_ctx_t gpgme_ctx;
-@@ -766,14 +1052,22 @@ g_mime_gpgme_context_new(GMimeSession * session,
- return NULL;
- }
-
-+#ifndef HAVE_GMIME_2_5_7
- /* create the cipher context */
-+#else /* HAVE_GMIME_2_5_7 */
-+ /* create the crypto context */
-+#endif /* HAVE_GMIME_2_5_7 */
- ctx = g_object_new(GMIME_TYPE_GPGME_CONTEXT, NULL, NULL);
- if (!ctx) {
- gpgme_release(gpgme_ctx);
- return NULL;
- } else
- ctx->gpgme_ctx = gpgme_ctx;
-+#ifndef HAVE_GMIME_2_5_7
- cipher = (GMimeCipherContext *) ctx;
-+#else /* HAVE_GMIME_2_5_7 */
-+ crypto = (GMimeCryptoContext *) ctx;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* check if the requested protocol is available */
- if (!g_mime_gpgme_context_check_protocol
-@@ -785,23 +1079,47 @@ g_mime_gpgme_context_new(GMimeSession * session,
-
- /* setup according to requested protocol */
- #if defined(HAVE_GMIME_2_6)
-+#ifndef HAVE_GMIME_2_5_7
- cipher->request_passwd = request_passwd;
-+#else /* HAVE_GMIME_2_5_7 */
-+ crypto->request_passwd = request_passwd;
-+#endif /* HAVE_GMIME_2_5_7 */
- #else /* HAVE_GMIME_2_6 */
-+#ifndef HAVE_GMIME_2_5_7
- cipher->session = session;
-+#else /* HAVE_GMIME_2_5_7 */
-+ crypto->session = session;
-+#endif /* HAVE_GMIME_2_5_7 */
- g_object_ref(session);
- #endif /* HAVE_GMIME_2_6 */
- gpgme_set_protocol(gpgme_ctx, protocol);
- if (protocol == GPGME_PROTOCOL_OpenPGP) {
-+#ifndef HAVE_GMIME_2_5_7
- cipher->sign_protocol = "application/pgp-signature";
- cipher->encrypt_protocol = "application/pgp-encrypted";
- cipher->key_protocol = NULL; /* FIXME */
-+#else /* HAVE_GMIME_2_5_7 */
-+ ctx->sign_protocol = "application/pgp-signature";
-+ ctx->encrypt_protocol = "application/pgp-encrypted";
-+ ctx->key_protocol = NULL; /* FIXME */
-+#endif /* HAVE_GMIME_2_5_7 */
- } else {
-+#ifndef HAVE_GMIME_2_5_7
- cipher->sign_protocol = "application/pkcs7-signature";
- cipher->encrypt_protocol = "application/pkcs7-mime";
- cipher->key_protocol = NULL; /* FIXME */
-+#else /* HAVE_GMIME_2_5_7 */
-+ ctx->sign_protocol = "application/pkcs7-signature";
-+ ctx->encrypt_protocol = "application/pkcs7-mime";
-+ ctx->key_protocol = NULL; /* FIXME */
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
-+#ifndef HAVE_GMIME_2_5_7
- return cipher;
-+#else /* HAVE_GMIME_2_5_7 */
-+ return crypto;
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
-
-diff --git a/libbalsa/gmime-gpgme-context.h b/libbalsa/gmime-gpgme-context.h
-index 585d927..19c5fae 100644
---- a/libbalsa/gmime-gpgme-context.h
-+++ b/libbalsa/gmime-gpgme-context.h
-@@ -63,7 +63,11 @@ typedef gboolean(*GMimeGpgmeKeyTrustCB) (const gchar * name,
- GMimeGpgmeContext * ctx);
-
- struct _GMimeGpgmeContext {
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext parent_object;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContext parent_object;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- gpgme_ctx_t gpgme_ctx; /* gpgme context */
- gboolean singlepart_mode; /* set context to single-part mode (RFC 2440, 2633) */
-@@ -73,11 +77,21 @@ struct _GMimeGpgmeContext {
- GMimeGpgmeKeySelectCB key_select_cb; /* key selection callback */
- GMimeGpgmeKeyTrustCB key_trust_cb; /* low trust key cb */
- gpgme_passphrase_cb_t passphrase_cb; /* passphrase callback */
-+#ifdef HAVE_GMIME_2_5_7
-+
-+ const gchar *sign_protocol;
-+ const gchar *encrypt_protocol;
-+ const gchar *key_protocol;
-+#endif /* HAVE_GMIME_2_5_7 */
- };
-
-
- struct _GMimeGpgmeContextClass {
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContextClass parent_class;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContextClass parent_class;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- gboolean has_proto_openpgp;
- gboolean has_proto_cms;
-@@ -86,10 +100,17 @@ struct _GMimeGpgmeContextClass {
-
- GType g_mime_gpgme_context_get_type(void);
- #if defined(HAVE_GMIME_2_6)
-+#ifndef HAVE_GMIME_2_5_7
- GMimeCipherContext *g_mime_gpgme_context_new(GMimePasswordRequestFunc
- request_passwd,
- gpgme_protocol_t protocol,
- GError ** error);
-+#else /* HAVE_GMIME_2_5_7 */
-+GMimeCryptoContext *g_mime_gpgme_context_new(GMimePasswordRequestFunc
-+ request_passwd,
-+ gpgme_protocol_t protocol,
-+ GError ** error);
-+#endif /* HAVE_GMIME_2_5_7 */
- #else /* HAVE_GMIME_2_6 */
- GMimeCipherContext *g_mime_gpgme_context_new(GMimeSession * session,
- gpgme_protocol_t protocol,
-diff --git a/libbalsa/gmime-part-rfc2440.c b/libbalsa/gmime-part-rfc2440.c
-index 795d2e1..e79c4cb 100644
---- a/libbalsa/gmime-part-rfc2440.c
-+++ b/libbalsa/gmime-part-rfc2440.c
-@@ -112,8 +112,13 @@ g_mime_part_rfc2440_sign_encrypt(GMimePart * part,
-
- g_return_val_if_fail(GMIME_IS_PART(part), -1);
- g_return_val_if_fail(GMIME_IS_GPGME_CONTEXT(ctx), -1);
-+#ifndef HAVE_GMIME_2_5_7
- g_return_val_if_fail(GMIME_CIPHER_CONTEXT(ctx)->sign_protocol != NULL,
- -1);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_return_val_if_fail(g_mime_crypto_context_get_signature_protocol
-+ (GMIME_CRYPTO_CONTEXT(ctx)) != NULL, -1);
-+#endif /* HAVE_GMIME_2_5_7 */
- g_return_val_if_fail(recipients != NULL || sign_userid != NULL, -1);
-
- /* get the raw content */
-@@ -131,14 +136,27 @@ g_mime_part_rfc2440_sign_encrypt(GMimePart * part,
- ctx->singlepart_mode = TRUE;
- if (recipients == NULL)
- result =
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_cipher_context_sign(GMIME_CIPHER_CONTEXT(ctx), sign_userid,
- GMIME_CIPHER_HASH_DEFAULT, stream,
- cipherstream, err);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_mime_crypto_context_sign(GMIME_CRYPTO_CONTEXT(ctx), sign_userid,
-+ GMIME_CIPHER_ALGO_DEFAULT, stream,
-+ cipherstream, err);
-+#endif /* HAVE_GMIME_2_5_7 */
- else
- result =
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_cipher_context_encrypt(GMIME_CIPHER_CONTEXT(ctx),
- sign_userid != NULL, sign_userid,
- recipients, stream, cipherstream, err);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_mime_crypto_context_encrypt(GMIME_CRYPTO_CONTEXT(ctx),
-+ sign_userid != NULL, sign_userid,
-+ GMIME_CIPHER_ALGO_DEFAULT,
-+ recipients, stream, cipherstream, err);
-+#endif /* HAVE_GMIME_2_5_7 */
- if (result == -1) {
- g_object_unref(cipherstream);
- return -1;
-@@ -202,18 +220,31 @@ g_mime_part_rfc2440_sign_encrypt(GMimePart * part,
- * set on err to provide more information. Upon success, the content
- * of part is replaced by the verified output of the crypto engine.
- */
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *
-+#else /* HAVE_GMIME_2_5_7 */
-+GMimeSignatureList *
-+#endif /* HAVE_GMIME_2_5_7 */
- g_mime_part_rfc2440_verify(GMimePart * part,
- GMimeGpgmeContext * ctx, GError ** err)
- {
- GMimeStream *stream, *plainstream;
- GMimeDataWrapper * wrapper;
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *valid;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeSignatureList *list;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- g_return_val_if_fail(GMIME_IS_PART(part), NULL);
- g_return_val_if_fail(GMIME_IS_GPGME_CONTEXT(ctx), NULL);
-+#ifndef HAVE_GMIME_2_5_7
- g_return_val_if_fail(GMIME_CIPHER_CONTEXT(ctx)->sign_protocol != NULL,
- NULL);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_return_val_if_fail(g_mime_crypto_context_get_signature_protocol
-+ (GMIME_CRYPTO_CONTEXT(ctx)) != NULL, NULL);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* get the raw content */
- wrapper = g_mime_part_get_content_object(GMIME_PART(part));
-@@ -227,13 +258,25 @@ g_mime_part_rfc2440_verify(GMimePart * part,
-
- /* verify the signature */
- ctx->singlepart_mode = TRUE;
-+#ifndef HAVE_GMIME_2_5_7
- valid =
- g_mime_cipher_context_verify(GMIME_CIPHER_CONTEXT(ctx),
- GMIME_CIPHER_HASH_DEFAULT, stream,
- plainstream, err);
-+#else /* HAVE_GMIME_2_5_7 */
-+ list =
-+ g_mime_crypto_context_verify(GMIME_CRYPTO_CONTEXT(ctx),
-+ GMIME_CIPHER_ALGO_DEFAULT, stream,
-+ plainstream, err);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* upon success, replace the signed content by the checked one */
-- if (valid) {
-+#ifndef HAVE_GMIME_2_5_7
-+ if (valid)
-+#else /* HAVE_GMIME_2_5_7 */
-+ if (list)
-+#endif /* HAVE_GMIME_2_5_7 */
-+ {
- GMimeDataWrapper *wrapper = g_mime_data_wrapper_new();
-
- g_mime_data_wrapper_set_stream(wrapper, plainstream);
-@@ -242,7 +285,11 @@ g_mime_part_rfc2440_verify(GMimePart * part,
- }
- g_object_unref(plainstream);
-
-+#ifndef HAVE_GMIME_2_5_7
- return valid;
-+#else /* HAVE_GMIME_2_5_7 */
-+ return list;
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
-
-@@ -255,19 +302,32 @@ g_mime_part_rfc2440_verify(GMimePart * part,
- * verified and the result is placed in ctx by the underlying gpgme
- * context.
- */
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *
-+#else /* HAVE_GMIME_2_5_7 */
-+GMimeDecryptResult *
-+#endif /* HAVE_GMIME_2_5_7 */
- g_mime_part_rfc2440_decrypt(GMimePart * part,
- GMimeGpgmeContext * ctx, GError ** err)
- {
- GMimeStream *stream, *plainstream;
- GMimeDataWrapper * wrapper;
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *result;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeDecryptResult *result;
-+#endif /* HAVE_GMIME_2_5_7 */
- gchar *headbuf = g_malloc0(1024);
-
- g_return_val_if_fail(GMIME_IS_PART(part), NULL);
- g_return_val_if_fail(GMIME_IS_GPGME_CONTEXT(ctx), NULL);
-+#ifndef HAVE_GMIME_2_5_7
- g_return_val_if_fail(GMIME_CIPHER_CONTEXT(ctx)->encrypt_protocol !=
- NULL, NULL);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_return_val_if_fail(g_mime_crypto_context_get_encryption_protocol
-+ (GMIME_CRYPTO_CONTEXT(ctx)) != NULL, NULL);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- /* get the raw content */
- wrapper = g_mime_part_get_content_object(part);
-@@ -284,8 +344,13 @@ g_mime_part_rfc2440_decrypt(GMimePart * part,
-
- /* decrypt and (if possible) verify the input */
- result =
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_cipher_context_decrypt(GMIME_CIPHER_CONTEXT(ctx), stream,
- plainstream, err);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_mime_crypto_context_decrypt(GMIME_CRYPTO_CONTEXT(ctx), stream,
-+ plainstream, err);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- if (result != NULL) {
- GMimeStream *filter_stream;
-diff --git a/libbalsa/gmime-part-rfc2440.h b/libbalsa/gmime-part-rfc2440.h
-index 48be5a4..cc1901a 100644
---- a/libbalsa/gmime-part-rfc2440.h
-+++ b/libbalsa/gmime-part-rfc2440.h
-@@ -53,12 +53,21 @@ int g_mime_part_rfc2440_sign_encrypt(GMimePart * part,
- GPtrArray * recipients,
- const char *sign_userid,
- GError ** err);
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *g_mime_part_rfc2440_verify(GMimePart * part,
- GMimeGpgmeContext * ctx,
- GError ** err);
- GMimeSignatureValidity *g_mime_part_rfc2440_decrypt(GMimePart * part,
- GMimeGpgmeContext *
- ctx, GError ** err);
-+#else /* HAVE_GMIME_2_5_7 */
-+GMimeSignatureList *g_mime_part_rfc2440_verify(GMimePart * part,
-+ GMimeGpgmeContext * ctx,
-+ GError ** err);
-+GMimeDecryptResult *g_mime_part_rfc2440_decrypt(GMimePart * part,
-+ GMimeGpgmeContext * ctx,
-+ GError ** err);
-+#endif /* HAVE_GMIME_2_5_7 */
-
- #ifdef __cplusplus
- }
-diff --git a/libbalsa/rfc3156.c b/libbalsa/rfc3156.c
-index a56e12c..df4a2e1 100644
---- a/libbalsa/rfc3156.c
-+++ b/libbalsa/rfc3156.c
-@@ -268,9 +268,15 @@ libbalsa_message_body_protection(LibBalsaMessageBody * body)
-
- #if defined(HAVE_GMIME_2_6)
- static gboolean
-+#ifndef HAVE_GMIME_2_5_7
- password_request_func(GMimeCipherContext * ctx, const char *user_id,
- const char *prompt_ctx, gboolean reprompt,
- GMimeStream * response, GError ** err)
-+#else /* HAVE_GMIME_2_5_7 */
-+password_request_func(GMimeCryptoContext * ctx, const char *user_id,
-+ const char *prompt_ctx, gboolean reprompt,
-+ GMimeStream * response, GError ** err)
-+#endif /* HAVE_GMIME_2_5_7 */
- {
- gint fd;
- gchar *name_used;
-@@ -366,9 +372,16 @@ libbalsa_sign_mime_object(GMimeObject ** content, const gchar * rfc822_for,
- return FALSE;
- }
-
-+#ifndef HAVE_GMIME_2_5_7
- if (g_mime_multipart_signed_sign
- (mps, *content, GMIME_CIPHER_CONTEXT(ctx), rfc822_for,
-- GMIME_CIPHER_HASH_DEFAULT, error) != 0) {
-+ GMIME_CIPHER_HASH_DEFAULT, error) != 0)
-+#else /* HAVE_GMIME_2_5_7 */
-+ if (g_mime_multipart_signed_sign
-+ (mps, *content, GMIME_CRYPTO_CONTEXT(ctx), rfc822_for,
-+ GMIME_DIGEST_ALGO_DEFAULT, error) != 0)
-+#endif /* HAVE_GMIME_2_5_7 */
-+ {
- g_object_unref(mps);
- g_object_unref(ctx);
- #if !defined(HAVE_GMIME_2_6)
-@@ -458,10 +471,18 @@ libbalsa_encrypt_mime_object(GMimeObject ** content, GList * rfc822_for,
-
- encrypted_obj = GMIME_OBJECT(mpe);
- result =
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_multipart_encrypted_encrypt(mpe, *content,
- GMIME_CIPHER_CONTEXT(ctx),
- FALSE, NULL,
- recipients, error);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_mime_multipart_encrypted_encrypt(mpe, *content,
-+ GMIME_CRYPTO_CONTEXT(ctx),
-+ FALSE, NULL,
-+ GMIME_DIGEST_ALGO_DEFAULT,
-+ recipients, error);
-+#endif /* HAVE_GMIME_2_5_7 */
- }
- #ifdef HAVE_SMIME
- else {
-@@ -471,9 +492,15 @@ libbalsa_encrypt_mime_object(GMimeObject ** content, GList * rfc822_for,
- encrypted_obj = GMIME_OBJECT(pkcs7);
- ctx->singlepart_mode = TRUE;
- result =
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_application_pkcs7_encrypt(pkcs7, *content,
- GMIME_CIPHER_CONTEXT(ctx),
- recipients, error);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_mime_application_pkcs7_encrypt(pkcs7, *content,
-+ GMIME_CRYPTO_CONTEXT(ctx),
-+ recipients, error);
-+#endif /* HAVE_GMIME_2_5_7 */
- }
- #endif
-
-@@ -565,8 +592,14 @@ libbalsa_body_check_signature(LibBalsaMessageBody * body,
- #if !defined(HAVE_GMIME_2_6)
- GMimeSession *session;
- #endif /* HAVE_GMIME_2_6 */
-- GMimeCipherContext *ctx;
-+#ifndef HAVE_GMIME_2_5_7
-+ GMimeCipherContext *g_mime_ctx;
- GMimeSignatureValidity *valid;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeCryptoContext *g_mime_ctx;
-+ GMimeSignatureList *valid;
-+#endif /* HAVE_GMIME_2_5_7 */
-+ GMimeGpgmeContext *ctx;
- GError *error = NULL;
-
- /* paranoia checks */
-@@ -592,12 +625,12 @@ libbalsa_body_check_signature(LibBalsaMessageBody * body,
- /* try to create GMimeGpgMEContext */
- #if !defined(HAVE_GMIME_2_6)
- session = g_object_new(g_mime_session_get_type(), NULL, NULL);
-- ctx = g_mime_gpgme_context_new(session, protocol, &error);
-+ g_mime_ctx = g_mime_gpgme_context_new(session, protocol, &error);
- #else /* HAVE_GMIME_2_6 */
-- ctx =
-+ g_mime_ctx =
- g_mime_gpgme_context_new(password_request_func, protocol, &error);
- #endif /* HAVE_GMIME_2_6 */
-- if (ctx == NULL) {
-+ if (g_mime_ctx == NULL) {
- if (error) {
- libbalsa_information(LIBBALSA_INFORMATION_ERROR, "%s: %s",
- _("creating a gpgme context failed"),
-@@ -613,6 +646,7 @@ libbalsa_body_check_signature(LibBalsaMessageBody * body,
- body->parts->next->sig_info->status = GPGME_SIG_STAT_ERROR;
- return FALSE;
- }
-+ ctx = GMIME_GPGME_CONTEXT(g_mime_ctx);
-
- /* S/MIME uses the protocol application/pkcs7-signature, but some ancient
- mailers, not yet knowing RFC 2633, use application/x-pkcs7-signature,
-@@ -622,14 +656,19 @@ libbalsa_body_check_signature(LibBalsaMessageBody * body,
- g_mime_object_get_content_type_parameter(GMIME_OBJECT (body->mime_part),
- "protocol");
- if (!g_ascii_strcasecmp(cms_protocol, "application/x-pkcs7-signature"))
-+#ifndef HAVE_GMIME_2_5_7
-+ g_mime_ctx->sign_protocol = cms_protocol;
-+#else /* HAVE_GMIME_2_5_7 */
- ctx->sign_protocol = cms_protocol;
-+#endif /* HAVE_GMIME_2_5_7 */
- }
-
- /* verify the signature */
-
- libbalsa_mailbox_lock_store(body->message->mailbox);
- valid = g_mime_multipart_signed_verify(GMIME_MULTIPART_SIGNED
-- (body->mime_part), ctx, &error);
-+ (body->mime_part), g_mime_ctx,
-+ &error);
- libbalsa_mailbox_unlock_store(body->message->mailbox);
-
- if (valid == NULL) {
-@@ -642,12 +681,16 @@ libbalsa_body_check_signature(LibBalsaMessageBody * body,
- libbalsa_information(LIBBALSA_INFORMATION_ERROR,
- _("signature verification failed"));
- }
-- if (GMIME_GPGME_CONTEXT(ctx)->sig_state) {
-- body->parts->next->sig_info = GMIME_GPGME_CONTEXT(ctx)->sig_state;
-+ if (ctx->sig_state) {
-+ body->parts->next->sig_info = ctx->sig_state;
- g_object_ref(G_OBJECT(body->parts->next->sig_info));
- }
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_signature_validity_free(valid);
-- g_object_unref(ctx);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_object_unref(valid);
-+#endif /* HAVE_GMIME_2_5_7 */
-+ g_object_unref(g_mime_ctx);
- #if !defined(HAVE_GMIME_2_6)
- g_object_unref(session);
- #endif /* HAVE_GMIME_2_6 */
-@@ -747,14 +790,26 @@ libbalsa_body_decrypt(LibBalsaMessageBody * body,
- libbalsa_mailbox_lock_store(body->message->mailbox);
- if (protocol == GPGME_PROTOCOL_OpenPGP)
- mime_obj =
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_multipart_encrypted_decrypt(GMIME_MULTIPART_ENCRYPTED(body->mime_part),
- GMIME_CIPHER_CONTEXT(ctx),
- &error);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_mime_multipart_encrypted_decrypt(GMIME_MULTIPART_ENCRYPTED(body->mime_part),
-+ GMIME_CRYPTO_CONTEXT(ctx),
-+ NULL,
-+ &error);
-+#endif /* HAVE_GMIME_2_5_7 */
- #ifdef HAVE_SMIME
- else if (smime_signed) {
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *valid;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeSignatureList *valid;
-+#endif /* HAVE_GMIME_2_5_7 */
-
- ctx->singlepart_mode = TRUE;
-+#ifndef HAVE_GMIME_2_5_7
- mime_obj =
- g_mime_application_pkcs7_verify(GMIME_PART(body->mime_part),
- &valid,
-@@ -766,6 +821,19 @@ libbalsa_body_decrypt(LibBalsaMessageBody * body,
- g_mime_application_pkcs7_decrypt(GMIME_PART(body->mime_part),
- GMIME_CIPHER_CONTEXT(ctx),
- &error);
-+#else /* HAVE_GMIME_2_5_7 */
-+ mime_obj =
-+ g_mime_application_pkcs7_verify(GMIME_PART(body->mime_part),
-+ &valid,
-+ GMIME_CRYPTO_CONTEXT(ctx),
-+ &error);
-+ g_object_unref(valid);
-+ } else
-+ mime_obj =
-+ g_mime_application_pkcs7_decrypt(GMIME_PART(body->mime_part),
-+ GMIME_CRYPTO_CONTEXT(ctx),
-+ &error);
-+#endif /* HAVE_GMIME_2_5_7 */
- #endif
- libbalsa_mailbox_unlock_store(body->message->mailbox);
-
-@@ -906,7 +974,11 @@ libbalsa_rfc2440_verify(GMimePart * part, GMimeGpgmeSigstat ** sig_info)
- GMimeSession *session;
- #endif /* HAVE_GMIME_2_6 */
- GMimeGpgmeContext *ctx;
-+#ifndef HAVE_GMIME_2_5_7
- GMimeSignatureValidity *valid;
-+#else /* HAVE_GMIME_2_5_7 */
-+ GMimeSignatureList *valid;
-+#endif /* HAVE_GMIME_2_5_7 */
- GError *error = NULL;
- gpgme_error_t retval;
-
-@@ -978,7 +1050,11 @@ libbalsa_rfc2440_verify(GMimePart * part, GMimeGpgmeSigstat ** sig_info)
- }
-
- /* clean up */
-+#ifndef HAVE_GMIME_2_5_7
- g_mime_signature_validity_free(valid);
-+#else /* HAVE_GMIME_2_5_7 */
-+ g_object_unref(valid);
-+#endif /* HAVE_GMIME_2_5_7 */
- retval = ctx->sig_state->status;
- g_object_unref(ctx);
- #if !defined(HAVE_GMIME_2_6)
---
-cgit v0.9.0.2