]> granicus.if.org Git - neomutt/commitdiff
Fix GPGME S/MIME micalg generation, broken in [e6f958b093b6].
authorAndreas Jobs <unknown>
Sun, 18 May 2008 02:31:18 +0000 (19:31 -0700)
committerAndreas Jobs <unknown>
Sun, 18 May 2008 02:31:18 +0000 (19:31 -0700)
Closes #2994.

ChangeLog
crypt-gpgme.c

index 788b03d4ef5c3ef9c33e0eecad39e7ef56e8d9dd..9890a56717bde610506e25248d2531ea242b00d0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-17 18:34 -0700  Brendan Cully  <brendan@kublai.com>  (f9545d5ec15f)
+
+       * doc/Muttrc.head: Add 'mime_lookup application/octet-stream' to the
+       distributed Muttrc. Closes #2984.
+
+       * .hgignore, Makefile.am, configure.ac, hcachever.sh.in,
+       md5.c: Build local md5 tool for hcachever.sh. Closes #3025.
+
 2008-05-17 12:39 -0700  Brendan Cully  <brendan@kublai.com>  (692b7c063bf1)
 
        * .hgsigs: mutt-1.5.18 signed
index 3809daab4086e6656cf430d7d0f19ea6287c8b8c..ae5d87b982a361c48072a91557d16e3e239e46b0 100644 (file)
@@ -756,7 +756,7 @@ static char *encrypt_gpgme_object (gpgme_data_t plaintext, gpgme_key_t *rset,
    which must have been allocated by the caller with size BUFLEN.
    Returns 0 on success or -1 in case of an error.  The return string
    is truncted to BUFLEN - 1. */
-static int get_micalg (gpgme_ctx_t ctx, char *buf, size_t buflen)
+static int get_micalg (gpgme_ctx_t ctx, int use_smime, char *buf, size_t buflen)
 {
   gpgme_sign_result_t result = NULL;
   const char *algorithm_name = NULL;
@@ -771,9 +771,16 @@ static int get_micalg (gpgme_ctx_t ctx, char *buf, size_t buflen)
     algorithm_name = gpgme_hash_algo_name (result->signatures->hash_algo);
     if (algorithm_name)
     {
-      /* convert GPGME raw hash name to RFC 3156 format */
-      snprintf (buf, buflen, "pgp-%s", algorithm_name);
-      ascii_strlower (buf + 4);
+      if (use_smime)
+      {
+        /* convert GPGME raw hash name to RFC 2633 format */
+        snprintf (buf, buflen, "%s", algorithm_name);
+        ascii_strlower (buf);
+      } else {
+        /* convert GPGME raw hash name to RFC 3156 format */
+        snprintf (buf, buflen, "pgp-%s", algorithm_name);
+        ascii_strlower (buf + 4);
+      }
     }
   }
 
@@ -873,10 +880,10 @@ static BODY *sign_message (BODY *a, int use_smime)
                       &t->parameter);
   /* Get the micalg from gpgme.  Old gpgme versions don't support this
      for S/MIME so we assume sha-1 in this case. */
-  if (!get_micalg (ctx, buf, sizeof buf))
+  if (!get_micalg (ctx, use_smime, buf, sizeof buf))
     mutt_set_parameter ("micalg", buf, &t->parameter);
   else if (use_smime)
-    mutt_set_parameter ("micalg", "pgp-sha1", &t->parameter);
+    mutt_set_parameter ("micalg", "sha1", &t->parameter);
   gpgme_release (ctx);
 
   t->parts = a;