[gmime] Check gpgme_add_signers() for errors
- From: Jeffrey Stedfast <fejj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gmime] Check gpgme_add_signers() for errors
- Date: Wed, 8 Mar 2017 13:34:30 +0000 (UTC)
commit 29f9f8862b951b5bd310b327a0f078e93a6c6154
Author: Jeffrey Stedfast <fejj gnome org>
Date: Sun Feb 26 08:20:17 2017 -0500
Check gpgme_add_signers() for errors
gmime/gmime-gpg-context.c | 14 ++++++++++----
gmime/gmime-pkcs7-context.c | 14 +++++++++-----
2 files changed, 19 insertions(+), 9 deletions(-)
---
diff --git a/gmime/gmime-gpg-context.c b/gmime/gmime-gpg-context.c
index d12bd97..b6e5718 100644
--- a/gmime/gmime-gpg-context.c
+++ b/gmime/gmime-gpg-context.c
@@ -430,15 +430,19 @@ static gboolean
gpg_add_signer (GMimeGpgContext *gpg, const char *signer, GError **err)
{
gpgme_key_t key = NULL;
+ gpgme_error_t error;
if (!(key = gpg_get_key_by_name (gpg, signer, TRUE, err)))
return FALSE;
- /* set the key (the previous operation guaranteed that it exists, no need
- * 2 check return values...) */
- gpgme_signers_add (gpg->ctx, key);
+ error = gpgme_signers_add (gpg->ctx, key);
gpgme_key_unref (key);
+ if (error != GPG_ERR_NO_ERROR) {
+ g_set_error (err, GMIME_GPGME_ERROR, error, _("Failed to add signer \"%s\": %s"), signer,
gpgme_strerror (error));
+ return FALSE;
+ }
+
return TRUE;
}
#endif /* ENABLE_CRYPTO */
@@ -448,7 +452,7 @@ gpg_sign (GMimeCryptoContext *context, gboolean detach, const char *userid, GMim
GMimeStream *istream, GMimeStream *ostream, GError **err)
{
#ifdef ENABLE_CRYPTO
- gpgme_sig_mode_t mode = detach ? GPGME_SIG_MODE_DETACH : GPGME_SIG_MODE_NORMAL;
+ gpgme_sig_mode_t mode = detach ? GPGME_SIG_MODE_DETACH : GPGME_SIG_MODE_CLEAR;
GMimeGpgContext *gpg = (GMimeGpgContext *) context;
gpgme_sign_result_t result;
gpgme_data_t input, output;
@@ -470,6 +474,8 @@ gpg_sign (GMimeCryptoContext *context, gboolean detach, const char *userid, GMim
return -1;
}
+ gpgme_set_textmode (gpg->ctx, !detach);
+
/* sign the input stream */
if ((error = gpgme_op_sign (gpg->ctx, input, output, mode)) != GPG_ERR_NO_ERROR) {
g_set_error (err, GMIME_GPGME_ERROR, error, _("Signing failed: %s"), gpgme_strerror (error));
diff --git a/gmime/gmime-pkcs7-context.c b/gmime/gmime-pkcs7-context.c
index f918ed4..6b45d98 100644
--- a/gmime/gmime-pkcs7-context.c
+++ b/gmime/gmime-pkcs7-context.c
@@ -426,15 +426,19 @@ static gboolean
pkcs7_add_signer (GMimePkcs7Context *pkcs7, const char *signer, GError **err)
{
gpgme_key_t key = NULL;
+ gpgme_error_t error;
if (!(key = pkcs7_get_key_by_name (pkcs7, signer, TRUE, err)))
return FALSE;
- /* set the key (the previous operation guaranteed that it exists, no need
- * 2 check return values...) */
- gpgme_signers_add (pkcs7->ctx, key);
+ error = gpgme_signers_add (pkcs7->ctx, key);
gpgme_key_unref (key);
+ if (error != GPG_ERR_NO_ERROR) {
+ g_set_error (err, GMIME_GPGME_ERROR, error, _("Failed to add signer \"%s\": %s"), signer,
gpgme_strerror (error));
+ return FALSE;
+ }
+
return TRUE;
}
#endif /* ENABLE_CRYPTO */
@@ -453,8 +457,6 @@ pkcs7_sign (GMimeCryptoContext *context, gboolean detach, const char *userid, GM
if (!pkcs7_add_signer (pkcs7, userid, err))
return -1;
- gpgme_set_armor (pkcs7->ctx, FALSE);
-
if ((error = gpgme_data_new_from_cbs (&input, &pkcs7_stream_funcs, istream)) != GPG_ERR_NO_ERROR) {
g_set_error (err, GMIME_GPGME_ERROR, error, _("Could not open input stream: %s"),
gpgme_strerror (error));
return -1;
@@ -921,6 +923,8 @@ g_mime_pkcs7_context_new (void)
pkcs7 = g_object_newv (GMIME_TYPE_PKCS7_CONTEXT, 0, NULL);
gpgme_set_passphrase_cb (ctx, pkcs7_passphrase_cb, pkcs7);
gpgme_set_protocol (ctx, GPGME_PROTOCOL_CMS);
+ gpgme_set_textmode (ctx, FALSE);
+ gpgme_set_armor (ctx, FALSE);
pkcs7->ctx = ctx;
return (GMimeCryptoContext *) pkcs7;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]