]> granicus.if.org Git - neomutt/commitdiff
Add PgpEncryptSelf option
authorGuillaume Brogi <gui-gui@netcourrier.com>
Fri, 26 Aug 2016 09:59:07 +0000 (11:59 +0200)
committerRichard Russon <rich@flatcap.org>
Thu, 1 Sep 2016 19:00:22 +0000 (20:00 +0100)
crypt.c
init.h
mutt.h

diff --git a/crypt.c b/crypt.c
index 5aa8266b26efe564010e63da6ca77f8f3f559546..5086c6ecd51ba071ddf70b92ec723ce87c30fd03 100644 (file)
--- a/crypt.c
+++ b/crypt.c
@@ -243,7 +243,7 @@ int mutt_protect (HEADER *msg, char *keylist)
 
       tmp_pbody = crypt_smime_build_smime_entity (tmp_smime_pbody, new_keylist);
       if (new_keylist != keylist)
-        FREE(&new_keylist);
+        FREE (&new_keylist);
 
       if (!tmp_pbody)
       {
@@ -265,10 +265,22 @@ int mutt_protect (HEADER *msg, char *keylist)
     if ((WithCrypto & APPLICATION_PGP)
         && (msg->security & APPLICATION_PGP))
     {
-      if (!(pbody = crypt_pgp_encrypt_message (tmp_pgp_pbody, keylist,
-                                               flags & SIGN)))
+      char *new_keylist = keylist;
+
+      if (PgpSignAs && query_quadoption (OPT_PGPENCRYPTSELF, _("Encrypt message to PGP Default Key also?")) == MUTT_YES)
       {
+        /* +1 for SPACE, +1 for NULL */
+        int size = mutt_strlen (keylist) + mutt_strlen (PgpSignAs) + 2;
+        new_keylist = safe_malloc (size);
+        snprintf (new_keylist, size, "%s %s", keylist, PgpSignAs);
+      }
 
+      pbody = crypt_pgp_encrypt_message (tmp_pgp_pbody, new_keylist,
+                                               flags & SIGN);
+      if (new_keylist != keylist)
+       FREE(&new_keylist);
+      if (!pbody)
+      {
        /* did we perform a retainable signature? */
        if (flags != msg->security)
        {
diff --git a/init.h b/init.h
index dff4dd04b209fb4c08dc083029f0714f08d66924..6141dd98c8536099e595da005af506e7f21a8de4 100644 (file)
--- a/init.h
+++ b/init.h
@@ -583,6 +583,12 @@ struct option_t MuttVars[] = {
   ** to find out whether an encrypted message is also signed.
   ** (Crypto only)
   */
+  { "pgp_encrypt_self",                DT_QUAD,         R_NONE, OPT_PGPENCRYPTSELF, MUTT_NO },
+  /*
+  ** .pp
+  ** Encrypt the message to $$pgp_sign_as too.
+  ** (PGP only)
+  */
   { "crypt_timestamp", DT_BOOL, R_NONE, OPTCRYPTTIMESTAMP, 1 },
   /*
   ** .pp
diff --git a/mutt.h b/mutt.h
index e7ecdffdddbad3685d1c862c502d524b77277b36..5814901e8984e88f80757f0ffc0aa201c7e1aac1 100644 (file)
--- a/mutt.h
+++ b/mutt.h
@@ -301,6 +301,7 @@ enum
   OPT_MOVE,
   OPT_PGPMIMEAUTO,     /* ask to revert to PGP/MIME when inline fails */
   OPT_SMIMEENCRYPTSELF,
+  OPT_PGPENCRYPTSELF,
 #ifdef USE_POP
   OPT_POPDELETE,
   OPT_POPRECONNECT,