]> granicus.if.org Git - neomutt/commitdiff
Handle DONTHANDLEPGPKEYS in handler instead of crypto modules.
authorBrendan Cully <brendan@kublai.com>
Tue, 1 Jul 2008 21:49:21 +0000 (14:49 -0700)
committerBrendan Cully <brendan@kublai.com>
Tue, 1 Jul 2008 21:49:21 +0000 (14:49 -0700)
This lets gpgme and classic pgp share a bit of logic, and unbreaks key
extraction at least for classic PGP.

ChangeLog
crypt-gpgme.c
handler.c
pgp.c

index 271860dc21ae1024400519f5a783df40d3d5529a..f37b82afc22a28dd01765fb45cbb3a3c3e8d8bed 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-07-01 13:32 -0700  Brendan Cully  <brendan@kublai.com>  (17525e17fa7b)
+
+       * copy.c: Bail out of copy if decryption is requested but the desired
+       engine is missing. This closes #2684, but handling of mixed crypto
+       in a single message needs more investigation.
+
+2008-07-01 01:10 -0700  rtc  <rtc@gmx.de>  (49fe0292b503)
+
+       * copy.c: When deleting attachments, always print newline
+       separating header from body. Closes #3085.
+
 2008-06-29 01:09 -0700  Brendan Cully  <brendan@kublai.com>  (677e7712d735)
 
        * crypt-gpgme.c: Improve gpgme SMIME uid display: align each line by
index 28766944b37b5cf36b603163553cefede952bef6..288217a82a19e3ef2949ae6ef948b4f80082ab08 100644 (file)
@@ -2044,12 +2044,11 @@ int pgp_gpgme_application_handler (BODY *m, STATE *s)
               clearsign = 1;
               needpass = 0;
             }
-          else if (!option (OPTDONTHANDLEPGPKEYS) &&
-                   !mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15))
-            {
-              needpass = 0;
-              pgp_keyblock =1;
-            } 
+          else if (!mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15))
+          {
+            needpass = 0;
+            pgp_keyblock = 1;
+          } 
           else
             {
               /* XXX - we may wish to recode here */
index d29feef2df310bbd7a5ce79319d9817178035483..ae0f14848c36590cc3763523c013caf6562ee781 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -1579,9 +1579,15 @@ int mutt_body_handler (BODY *b, STATE *s)
   }
   else if (WithCrypto && b->type == TYPEAPPLICATION)
   {
-    if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b))
+    if (option (OPTDONTHANDLEPGPKEYS)
+        && !ascii_strcasecmp("pgp-keys", b->subtype))
+    {
+      /* pass raw part through for key extraction */
+      plaintext = 1;
+    }
+    else if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b))
       handler = crypt_pgp_application_pgp_handler;
-    if ((WithCrypto & APPLICATION_SMIME) && mutt_is_application_smime(b))
+    else if ((WithCrypto & APPLICATION_SMIME) && mutt_is_application_smime(b))
       handler = crypt_smime_application_smime_handler;
   }
 
diff --git a/pgp.c b/pgp.c
index 15e38ea120646eca867507049a228c28fc4e795c..684c1b96ccd09005ce124d325ae4e495b74c7005 100644 (file)
--- a/pgp.c
+++ b/pgp.c
@@ -293,11 +293,10 @@ int pgp_application_pgp_handler (BODY *m, STATE *s)
        clearsign = 1;
         needpass = 0;
       }
-      else if (!option (OPTDONTHANDLEPGPKEYS) &&
-              mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15) == 0)
+      else if (!mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15))
       {
         needpass = 0;
-        pgp_keyblock =1;
+        pgp_keyblock = 1;
       } 
       else
       {