]> granicus.if.org Git - mutt/commitdiff
Introduce an oppenc_mode parameter
authorKevin McCarthy <kevin@8t8.us>
Mon, 30 Mar 2015 22:45:49 +0000 (15:45 -0700)
committerKevin McCarthy <kevin@8t8.us>
Mon, 30 Mar 2015 22:45:49 +0000 (15:45 -0700)
It's added to the parameter lists through the call stack down to the
find_keys calls.

No functionality is implemented yet.  This patch is separated just to
keep other patches more readable.

14 files changed:
crypt-gpgme.c
crypt-gpgme.h
crypt-mod-pgp-classic.c
crypt-mod-pgp-gpgme.c
crypt-mod-smime-classic.c
crypt-mod-smime-gpgme.c
crypt-mod.h
crypt.c
cryptglue.c
mutt_crypt.h
pgp.c
pgp.h
smime.c
smime.h

index 43ccd278a12c3829c044295727cb5503919e24ce..1aa96d4a3483543db84386271b0932d9baab7c63 100644 (file)
@@ -4305,8 +4305,10 @@ static crypt_key_t *crypt_ask_for_key (char *tag,
 }
 
 /* This routine attempts to find the keyids of the recipients of a
-   message.  It returns NULL if any of the keys can not be found.  */
-static char *find_keys (ADDRESS *adrlist, unsigned int app)
+   message.  It returns NULL if any of the keys can not be found.
+   If oppenc_mode is true, only keys that can be determined without
+   prompting will be used.  */
+static char *find_keys (ADDRESS *adrlist, unsigned int app, int oppenc_mode)
 {
   char *keyID, *keylist = NULL, *t;
   size_t keylist_size = 0;
@@ -4409,14 +4411,14 @@ static char *find_keys (ADDRESS *adrlist, unsigned int app)
   return (keylist);
 }
 
-char *pgp_gpgme_findkeys (ADDRESS *adrlist)
+char *pgp_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
-  return find_keys (adrlist, APPLICATION_PGP);
+  return find_keys (adrlist, APPLICATION_PGP, oppenc_mode);
 }
 
-char *smime_gpgme_findkeys (ADDRESS *adrlist)
+char *smime_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
-  return find_keys (adrlist, APPLICATION_SMIME);
+  return find_keys (adrlist, APPLICATION_SMIME, oppenc_mode);
 }
 
 #ifdef HAVE_GPGME_OP_EXPORT_KEYS
index 25867065caa42f7e0a47b8dd6b0e91edccbe2fb3..11ca6a60fe092c900b67b0ab7339d0e64a1320dd 100644 (file)
@@ -24,8 +24,8 @@
 void pgp_gpgme_init (void);
 void smime_gpgme_init (void);
 
-char *pgp_gpgme_findkeys (ADDRESS *adrlist);
-char *smime_gpgme_findkeys (ADDRESS *adrlist);
+char *pgp_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode);
+char *smime_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode);
 
 BODY *pgp_gpgme_encrypt_message (BODY *a, char *keylist, int sign);
 BODY *smime_gpgme_build_smime_entity (BODY *a, char *keylist);
index 1a221e5daab1c5e5e71e24b848603f56662b6708..2f69dcdc5f48c361bcbc22e327c146ab79f4b041 100644 (file)
@@ -46,9 +46,9 @@ static int crypt_mod_pgp_application_handler (BODY *m, STATE *s)
   return pgp_application_pgp_handler (m, s);
 }
 
-static char *crypt_mod_pgp_findkeys (ADDRESS *adrlist)
+static char *crypt_mod_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
-  return pgp_findKeys (adrlist);
+  return pgp_findKeys (adrlist, oppenc_mode);
 }
 
 static BODY *crypt_mod_pgp_sign_message (BODY *a)
index a2b799f5603c44ec22cf32c6be174bc1279b9e72..948585c45f11dd83da22fd2770a580f73c6a8b13 100644 (file)
@@ -70,9 +70,9 @@ static void crypt_mod_pgp_invoke_import (const char *fname)
   pgp_gpgme_invoke_import (fname);
 }
 
-static char *crypt_mod_pgp_findkeys (ADDRESS *adrlist)
+static char *crypt_mod_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
-  return pgp_gpgme_findkeys (adrlist);
+  return pgp_gpgme_findkeys (adrlist, oppenc_mode);
 }
 
 static BODY *crypt_mod_pgp_sign_message (BODY *a)
index c4ae79a24103c4cc898b411123ade15869ff5831..c09db9c719eda2db32318ead3af420d5f5eb3be2 100644 (file)
@@ -46,9 +46,9 @@ static int crypt_mod_smime_application_handler (BODY *m, STATE *s)
   return smime_application_smime_handler (m, s);
 }
 
-static char *crypt_mod_smime_findkeys (ADDRESS *adrlist)
+static char *crypt_mod_smime_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
-  return smime_findKeys (adrlist);
+  return smime_findKeys (adrlist, oppenc_mode);
 }
 
 static BODY *crypt_mod_smime_sign_message (BODY *a)
index c7ade57d0069119644178f83c2ebc971c32037a0..ec1b2ba652af3e6204659465e8d82899f2ee9137 100644 (file)
@@ -55,9 +55,9 @@ static int crypt_mod_smime_application_handler (BODY *m, STATE *s)
   return smime_gpgme_application_handler (m, s);
 }
 
-static char *crypt_mod_smime_findkeys (ADDRESS *adrlist)
+static char *crypt_mod_smime_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
-  return smime_gpgme_findkeys (adrlist);
+  return smime_gpgme_findkeys (adrlist, oppenc_mode);
 }
 
 static BODY *crypt_mod_smime_sign_message (BODY *a)
index 2489a6133239b192f650e49dd369847681dfbcb8..70910eee279cef0a186a698590cb3f85c4e1f7f6 100644 (file)
@@ -43,7 +43,7 @@ typedef int (*crypt_func_pgp_check_traditional_t) (FILE *fp, BODY *b,
 typedef BODY *(*crypt_func_pgp_traditional_encryptsign_t) (BODY *a, int flags,
                                                            char *keylist);
 typedef BODY *(*crypt_func_pgp_make_key_attachment_t) (char *tempf);
-typedef char *(*crypt_func_findkeys_t) (ADDRESS *adrlist);
+typedef char *(*crypt_func_findkeys_t) (ADDRESS *adrlist, int oppenc_mode);
 typedef BODY *(*crypt_func_sign_message_t) (BODY *a);
 typedef BODY *(*crypt_func_pgp_encrypt_message_t) (BODY *a, char *keylist,
                                                    int sign);
diff --git a/crypt.c b/crypt.c
index 30a972018e80aac0a69c59dbbd799cd5b295ca08..446352b0759fc6743f5e59985d3302fb44f580db 100644 (file)
--- a/crypt.c
+++ b/crypt.c
@@ -737,7 +737,7 @@ int crypt_get_keys (HEADER *msg, char **keylist)
      if ((WithCrypto & APPLICATION_PGP)
          && (msg->security & APPLICATION_PGP))
      {
-       if ((*keylist = crypt_pgp_findkeys (adrlist)) == NULL)
+       if ((*keylist = crypt_pgp_findkeys (adrlist, 0)) == NULL)
        {
            rfc822_free_address (&adrlist);
            return (-1);
@@ -747,7 +747,7 @@ int crypt_get_keys (HEADER *msg, char **keylist)
      if ((WithCrypto & APPLICATION_SMIME)
          && (msg->security & APPLICATION_SMIME))
      {
-       if ((*keylist = crypt_smime_findkeys (adrlist)) == NULL)
+       if ((*keylist = crypt_smime_findkeys (adrlist, 0)) == NULL)
        {
            rfc822_free_address (&adrlist);
            return (-1);
index fd1c296ecf7340d0da2b6cc2c3cf2059ecca2494..a54ea0769e92dde2f32cc46b1f6b5902274f0821 100644 (file)
@@ -199,11 +199,13 @@ BODY *crypt_pgp_make_key_attachment (char *tempf)
 }
 
 /* This routine attempts to find the keyids of the recipients of a
-   message.  It returns NULL if any of the keys can not be found.  */
-char *crypt_pgp_findkeys (ADDRESS *adrlist)
+   message.  It returns NULL if any of the keys can not be found.
+   If oppenc_mode is true, only keys that can be determined without
+   prompting will be used.  */
+char *crypt_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
   if (CRYPT_MOD_CALL_CHECK (PGP, findkeys))
-    return (CRYPT_MOD_CALL (PGP, findkeys)) (adrlist);
+    return (CRYPT_MOD_CALL (PGP, findkeys)) (adrlist, oppenc_mode);
 
   return NULL;
 }
@@ -333,11 +335,13 @@ int crypt_smime_verify_sender(HEADER *h)
 }
 
 /* This routine attempts to find the keyids of the recipients of a
-   message.  It returns NULL if any of the keys can not be found.  */
-char *crypt_smime_findkeys (ADDRESS *adrlist)
+   message.  It returns NULL if any of the keys can not be found.
+   If oppenc_mode is true, only keys that can be determined without
+   prompting will be used.  */
+char *crypt_smime_findkeys (ADDRESS *adrlist, int oppenc_mode)
 {
   if (CRYPT_MOD_CALL_CHECK (SMIME, findkeys))
-    return (CRYPT_MOD_CALL (SMIME, findkeys)) (adrlist);
+    return (CRYPT_MOD_CALL (SMIME, findkeys)) (adrlist, oppenc_mode);
 
   return NULL;
 }
index cdb43524341beb5203a1ef3055534b1c674271c6..8619c5c50e52d603b7dc8037ed318f05c3ccc048 100644 (file)
@@ -210,8 +210,10 @@ void crypt_pgp_free_key (pgp_key_t *kpp);
 BODY *crypt_pgp_make_key_attachment (char *tempf);
 
 /* This routine attempts to find the keyids of the recipients of a
-   message.  It returns NULL if any of the keys can not be found.  */
-char *crypt_pgp_findkeys (ADDRESS *adrlist);
+   message.  It returns NULL if any of the keys can not be found.
+   If oppenc_mode is true, only keys that can be determined without
+   prompting will be used.  */
+char *crypt_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode);
 
 /* Create a new body with a PGP signed message from A. */
 BODY *crypt_pgp_sign_message (BODY *a);
@@ -259,8 +261,10 @@ int crypt_smime_verify_sender(HEADER *h);
 char *crypt_smime_ask_for_key (char *prompt, char *mailbox, short public);
 
 /* This routine attempts to find the keyids of the recipients of a
-   message.  It returns NULL if any of the keys can not be found.  */
-char *crypt_smime_findkeys (ADDRESS *adrlist);
+   message.  It returns NULL if any of the keys can not be found.
+   If oppenc_mode is true, only keys that can be determined without
+   prompting will be used.  */
+char *crypt_smime_findkeys (ADDRESS *adrlist, int oppenc_mode);
 
 /* fixme: Needs documentation. */
 BODY *crypt_smime_sign_message (BODY *a);
diff --git a/pgp.c b/pgp.c
index b5c9d69c8b19f2c15e9d0482e2c40e4c3cf90005..7d041c8b5d9d8847a567b072a7bdd8cacd597a8d 100644 (file)
--- a/pgp.c
+++ b/pgp.c
@@ -1182,8 +1182,10 @@ static short is_numerical_keyid (const char *s)
 
 /* This routine attempts to find the keyids of the recipients of a message.
  * It returns NULL if any of the keys can not be found.
+ * If oppenc_mode is true, only keys that can be determined without
+ * prompting will be used.
  */
-char *pgp_findKeys (ADDRESS *adrlist)
+char *pgp_findKeys (ADDRESS *adrlist, int oppenc_mode)
 {
   char *keyID, *keylist = NULL;
   size_t keylist_size = 0;
diff --git a/pgp.h b/pgp.h
index 542d14f37bc61226f1561f3bf2d9931e377508ce..ab874045590a63231e1b577913b612e3d71f3cda 100644 (file)
--- a/pgp.h
+++ b/pgp.h
@@ -51,7 +51,7 @@ pgp_key_t pgp_get_candidates (pgp_ring_t, LIST *);
 pgp_key_t pgp_getkeybyaddr (ADDRESS *, short, pgp_ring_t);
 pgp_key_t pgp_getkeybystr (char *, short, pgp_ring_t);
 
-char *pgp_findKeys (ADDRESS *adrlist);
+char *pgp_findKeys (ADDRESS *adrlist, int oppenc_mode);
 
 void pgp_forget_passphrase (void);
 int pgp_application_pgp_handler (BODY *, STATE *);
diff --git a/smime.c b/smime.c
index 0d3416b12840b70802058f02e91fa6e6d5c7513b..00099459786ef7d92a235fc79affdf89451e6266 100644 (file)
--- a/smime.c
+++ b/smime.c
@@ -729,9 +729,11 @@ void smime_getkeys (ENVELOPE *env)
 
 /* This routine attempts to find the keyids of the recipients of a message.
  * It returns NULL if any of the keys can not be found.
+ * If oppenc_mode is true, only keys that can be determined without
+ * prompting will be used.
  */
 
-char *smime_findKeys (ADDRESS *adrlist)
+char *smime_findKeys (ADDRESS *adrlist, int oppenc_mode)
 {
   char *keyID, *keylist = NULL;
   size_t keylist_size = 0;
diff --git a/smime.h b/smime.h
index 4a91dc862ff510bb6cb024b1aa70859a85889f0f..ce8f0d0575532eed6bef9b80eac7d347b8b507a0 100644 (file)
--- a/smime.h
+++ b/smime.h
@@ -50,7 +50,7 @@ void  smime_getkeys (ENVELOPE *);
 
 char* smime_ask_for_key (char *, char *, short);
 
-char *smime_findKeys (ADDRESS *adrlist);
+char *smime_findKeys (ADDRESS *adrlist, int oppenc_mode);
 
 void  smime_invoke_import (char *, char *);