]> granicus.if.org Git - neomutt/commitdiff
Check S/MIME signing ID exists before attempting to use it.
authorBrendan Cully <brendan@kublai.com>
Thu, 26 Jun 2008 06:40:39 +0000 (23:40 -0700)
committerBrendan Cully <brendan@kublai.com>
Thu, 26 Jun 2008 06:40:39 +0000 (23:40 -0700)
Closes #3069. Also make (s)ign automatically ask for a key if no
default is defined.

ChangeLog
smime.c

index 16cd60a2aaae800f15cea39fa9b90185f99e2273..70fd25aacdf42fc86f9ac71ce30d5c2a464bcdfe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
-2008-06-25 22:43 -0700  Brendan Cully  <brendan@kublai.com>  (e2780a423d96)
+2008-06-25 23:13 -0700  Brendan Cully  <brendan@kublai.com>  (d2134eced31b)
+
+       * init.h: Make $move default to no instead of ask-no. Closes #2945.
+
+       * doc/manual.xml.head: Document difference between index and pager
+       search. Closes #2886.
 
        * commands.c, copy.c, crypt-gpgme.c, handler.c, mbox.c, pgp.c: Make
        mutt_copy_message distinguish between fatal and non-fatal errors.
diff --git a/smime.c b/smime.c
index 437b62fb8ba0a4e69eeb5cba7049c034203f5959..31a0ccab8455a0914002f50dfc053b663bdf21b8 100644 (file)
--- a/smime.c
+++ b/smime.c
@@ -1386,6 +1386,12 @@ BODY *smime_sign_message (BODY *a )
   pid_t thepid;
   char *intermediates = smime_get_field_from_db(NULL, SmimeDefaultKey, 1, 1);
 
+  if (!SmimeDefaultKey)
+  {
+    mutt_error _("Can't sign: No key specified. Use Sign As.");
+    return NULL;
+  }
+
   if (!intermediates)
   {
     mutt_message(_("Warning: Intermediate certificate not found."));
@@ -2023,12 +2029,17 @@ int smime_send_menu (HEADER *msg, int *redraw)
   case 2: /* (s)ign */
       
     if(!SmimeDefaultKey)
-       mutt_message _("Can't sign: No key specified. Use Sign As.");
-    else
     {
-      msg->security |= SIGN;
-      msg->security &= ~ENCRYPT;
+      *redraw = REDRAW_FULL;
+
+      if ((p = smime_ask_for_key (_("Sign as: "), NULL, 0)))
+        mutt_str_replace (&SmimeDefaultKey, p);
+      else
+        break;
     }
+
+    msg->security |= SIGN;
+    msg->security &= ~ENCRYPT;
     break;
 
   case 4: /* sign (a)s */