always use compressed mode.
[apps/madmutt.git] / smime.c
diff --git a/smime.c b/smime.c
index 0498122..e9f64f1 100644 (file)
--- a/smime.c
+++ b/smime.c
 #include <lib-lib/macros.h>
 #include <lib-lib/file.h>
 
+#include <lib-mime/mime.h>
+
 #include "mutt.h"
 #include "enter.h"
 #include "handler.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
-#include "smime.h"
-#include "mime.h"
 #include "copy.h"
 
 #include "lib/debug.h"
@@ -49,8 +49,6 @@
 # include <sys/resource.h>
 #endif
 
-#ifdef CRYPT_BACKEND_CLASSIC_SMIME
-
 #include "mutt_crypt.h"
 
 struct smime_command_context {
@@ -83,10 +81,19 @@ static char SmimeIntermediateToUse[_POSIX_PATH_MAX];
 
 
 /*
- *     Queries and passphrase handling.
+ * Create a format string to be used with scanf.
+ * To use it, write, for instance, MUTT_FORMAT(HUGE_STRING).
+ * 
+ * See K&R 2nd ed, p. 231 for an explanation.
  */
+#define _MUTT_FORMAT_2(a,b)    "%" a  b
+#define _MUTT_FORMAT_1(a, b)   _MUTT_FORMAT_2(#a, b)
+#define MUTT_FORMAT(a)         _MUTT_FORMAT_1(a, "s")
 
 
+/*
+ *     Queries and passphrase handling.
+ */
 
 
 /* these are copies from pgp.c */
@@ -148,7 +155,7 @@ static const char *_mutt_fmt_smime_command (char *dest,
         char buf1[LONG_STRING], buf2[LONG_STRING];
         struct stat sb;
 
-        strfcpy (path, NONULL (SmimeCALocation), sizeof (path));
+        m_strcpy(path, sizeof(path), NONULL(SmimeCALocation));
         mutt_expand_path (path, sizeof (path));
         mutt_quote_filename (buf1, sizeof (buf1), path);
 
@@ -405,13 +412,13 @@ char *smime_ask_for_key (char *prompt, char *mailbox, short public)
         continue;
 
       /* Check if query matches this certificate */
-      if (!str_isstr (fields[0], qry) && !str_isstr (fields[2], qry))
+      if (!m_stristr(fields[0], qry) && !m_stristr(fields[2], qry))
         continue;
 
       Table[cur].hash = hash;
       Table[cur].suffix = hash_suffix;
-      strncpy (Table[cur].email, fields[0], sizeof (Table[cur].email));
-      strncpy (Table[cur].nick, fields[2], sizeof (Table[cur].nick));
+      m_strcpy(Table[cur].email, sizeof(Table[cur].email), fields[0]);
+      m_strcpy(Table[cur].nick,  sizeof(Table[cur].nick),  fields[2]);
       Table[cur].trust = *fields[4];
       Table[cur].public = public;
 
@@ -513,7 +520,7 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public,
     }
 
     while (fgets (buf, sizeof (buf) - 1, fp) != NULL)
-      if (mailbox && !(str_ncasecmp (mailbox, buf, addr_len))) {
+      if (mailbox && !(m_strncasecmp(mailbox, buf, addr_len))) {
         numFields = sscanf (buf,
                             MUTT_FORMAT (STRING) " " MUTT_FORMAT (STRING) " "
                             MUTT_FORMAT (STRING) " " MUTT_FORMAT (STRING) " "
@@ -553,7 +560,7 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public,
             continue;
           }
           else if (choice == M_YES) {
-            strfcpy (key, fields[1], sizeof (key));
+            m_strcpy(key, sizeof(key), fields[1]);
             ask = 0;
             break;
           }
@@ -561,7 +568,7 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public,
         else {
           if (public)
             key_trust_level = *fields[4];
-          strfcpy (key, fields[1], sizeof (key));
+          m_strcpy(key, sizeof(key), fields[1]);
         }
         found = 1;
       }
@@ -575,15 +582,15 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public,
 
         /* query = label: return certificate. */
         if (numFields >= 3 &&
-            !(str_ncasecmp (query, fields[2], query_len))) {
+            !(m_strncasecmp(query, fields[2], query_len))) {
           ask = 0;
-          strfcpy (key, fields[1], sizeof (key));
+          m_strcpy(key, sizeof(key), fields[1]);
         }
         /* query = certificate: return intermediate certificate. */
         else if (numFields >= 4 &&
-                 !(str_ncasecmp (query, fields[1], query_len))) {
+                 !(m_strncasecmp(query, fields[1], query_len))) {
           ask = 0;
-          strfcpy (key, fields[3], sizeof (key));
+          m_strcpy(key, sizeof(key), fields[3]);
         }
       }
 
@@ -650,7 +657,7 @@ void _smime_getkeys (char *mailbox)
   if (k) {
     /* the key used last time. */
     if (*SmimeKeyToUse &&
-        !str_casecmp (k, SmimeKeyToUse + m_strlen(SmimeKeys) + 1)) {
+        !m_strcasecmp(k, SmimeKeyToUse + m_strlen(SmimeKeys) + 1)) {
       p_delete(&k);
       return;
     }
@@ -663,7 +670,7 @@ void _smime_getkeys (char *mailbox)
     snprintf (SmimeCertToUse, sizeof (SmimeCertToUse), "%s/%s",
               NONULL (SmimeCertificates), k);
 
-    if (str_casecmp (k, SmimeDefaultKey))
+    if (m_strcasecmp(k, SmimeDefaultKey))
       smime_void_passphrase ();
 
     p_delete(&k);
@@ -671,7 +678,7 @@ void _smime_getkeys (char *mailbox)
   }
 
   if (*SmimeKeyToUse) {
-    if (!str_casecmp (SmimeDefaultKey,
+    if (!m_strcasecmp(SmimeDefaultKey,
                           SmimeKeyToUse + m_strlen(SmimeKeys) + 1))
       return;
 
@@ -687,7 +694,7 @@ void _smime_getkeys (char *mailbox)
 
 void smime_getkeys (ENVELOPE * env)
 {
-  ADDRESS *t;
+  address_t *t;
   int found = 0;
 
   if (option (OPTSDEFAULTDECRYPTKEY) && SmimeDefaultKey && *SmimeDefaultKey) {
@@ -712,7 +719,7 @@ void smime_getkeys (ENVELOPE * env)
     }
   if (!found && (t = mutt_default_from ())) {
     _smime_getkeys (t->mailbox);
-    rfc822_free_address (&t);
+    address_delete (&t);
   }
 }
 
@@ -720,14 +727,14 @@ void smime_getkeys (ENVELOPE * env)
  * It returns NULL if any of the keys can not be found.
  */
 
-char *smime_findKeys (ADDRESS * to, ADDRESS * cc, ADDRESS * bcc)
+char *smime_findKeys (address_t * to, address_t * cc, address_t * bcc)
 {
   char *keyID, *keylist = NULL;
   size_t keylist_size = 0;
   size_t keylist_used = 0;
-  ADDRESS *tmp = NULL, *addr = NULL;
-  ADDRESS **last = &tmp;
-  ADDRESS *p, *q;
+  address_t *tmp = NULL, *addr = NULL;
+  address_t **last = &tmp;
+  address_t *p, *q;
   int i;
 
   const char *fqdn = mutt_fqdn (1);
@@ -747,7 +754,7 @@ char *smime_findKeys (ADDRESS * to, ADDRESS * cc, ADDRESS * bcc)
       abort ();
     }
 
-    *last = rfc822_cpy_adr (p);
+    *last = address_list_dup (p);
     while (*last)
       last = &((*last)->next);
   }
@@ -769,8 +776,8 @@ char *smime_findKeys (ADDRESS * to, ADDRESS * cc, ADDRESS * bcc)
     if (!keyID) {
       mutt_message (_("No (valid) certificate found for %s."), q->mailbox);
       p_delete(&keylist);
-      rfc822_free_address (&tmp);
-      rfc822_free_address (&addr);
+      address_delete (&tmp);
+      address_delete (&addr);
       return NULL;
     }
 
@@ -779,10 +786,10 @@ char *smime_findKeys (ADDRESS * to, ADDRESS * cc, ADDRESS * bcc)
     sprintf (keylist + keylist_used, "%s\n", keyID);    /* __SPRINTF_CHECKED__ */
     keylist_used = m_strlen(keylist);
 
-    rfc822_free_address (&addr);
+    address_delete (&addr);
 
   }
-  rfc822_free_address (&tmp);
+  address_delete (&tmp);
   return (keylist);
 }
 
@@ -835,7 +842,7 @@ static int smime_handle_cert_email (char *certificate, char *mailbox,
 
   while ((fgets (email, sizeof (email), fpout))) {
     *(email + m_strlen(email) - 1) = '\0';
-    if (str_ncasecmp (email, mailbox, m_strlen(mailbox)) == 0)
+    if (m_strncasecmp(email, mailbox, m_strlen(mailbox)) == 0)
       ret = 1;
 
     ret = ret < 0 ? 0 : ret;
@@ -1565,7 +1572,7 @@ int smime_verify_one (BODY * sigbdy, STATE * s, const char *tempfile)
       rewind (smimeerr);
 
       line = mutt_read_line (line, &linelen, smimeerr, &lineno);
-      if (linelen && !str_casecmp (line, "verification successful"))
+      if (linelen && !m_strcasecmp(line, "verification successful"))
         badsig = 0;
 
       p_delete(&line);
@@ -1779,7 +1786,7 @@ static BODY *smime_handle_entity (BODY * m, STATE * s, FILE * outFile)
     rewind (smimeerr);
 
     line = mutt_read_line (line, &linelen, smimeerr, &lineno);
-    if (linelen && !str_casecmp (line, "verification successful"))
+    if (linelen && !m_strcasecmp(line, "verification successful"))
       m->goodsig = 1;
     p_delete(&line);
   }
@@ -1871,12 +1878,8 @@ int smime_send_menu (HEADER * msg, int *redraw)
 {
   char *p;
 
-  if (!(WithCrypto & APPLICATION_SMIME))
-    return msg->security;
-
   switch (mutt_multi_choice
-          (_
-           ("S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? "),
+          (_("S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? "),
            _("eswabfc"))) {
   case 1:                      /* (e)ncrypt */
     msg->security |= ENCRYPT;
@@ -1897,10 +1900,10 @@ int smime_send_menu (HEADER * msg, int *redraw)
             switch (choice = mutt_multi_choice (_("1: DES, 2: Triple-DES "),
                                                 _("dt"))) {
               case 1:
-                str_replace (&SmimeCryptAlg, "des");
+                m_strreplace(&SmimeCryptAlg, "des");
                 break;
               case 2:
-                str_replace (&SmimeCryptAlg, "des3");
+                m_strreplace(&SmimeCryptAlg, "des3");
                 break;
             }
             break;
@@ -1909,13 +1912,13 @@ int smime_send_menu (HEADER * msg, int *redraw)
             switch (choice = mutt_multi_choice (_("1: RC2-40, 2: RC2-64, 3: RC2-128 "),
                                                 _("468"))) {
               case 1:
-                str_replace (&SmimeCryptAlg, "rc2-40");
+                m_strreplace(&SmimeCryptAlg, "rc2-40");
                 break;
               case 2:
-                str_replace (&SmimeCryptAlg, "rc2-64");
+                m_strreplace(&SmimeCryptAlg, "rc2-64");
                 break;
               case 3:
-                str_replace (&SmimeCryptAlg, "rc2-128");
+                m_strreplace(&SmimeCryptAlg, "rc2-128");
                 break;
             }
             break;
@@ -1924,13 +1927,13 @@ int smime_send_menu (HEADER * msg, int *redraw)
             switch (choice = mutt_multi_choice (_("1: AES128, 2: AES192, 3: AES256 "),
                                                 _("895"))) {
               case 1:
-                str_replace (&SmimeCryptAlg, "aes128");
+                m_strreplace(&SmimeCryptAlg, "aes128");
                 break;
               case 2:
-                str_replace (&SmimeCryptAlg, "aes192");
+                m_strreplace(&SmimeCryptAlg, "aes192");
                 break;
               case 3:
-                str_replace (&SmimeCryptAlg, "aes256");
+                m_strreplace(&SmimeCryptAlg, "aes256");
                 break;
             }
             break;
@@ -1960,7 +1963,7 @@ int smime_send_menu (HEADER * msg, int *redraw)
   case 4:                      /* sign (a)s */
 
     if ((p = smime_ask_for_key (_("Sign as: "), NULL, 0))) {
-      str_replace (&SmimeDefaultKey, p);
+      m_strreplace(&SmimeDefaultKey, p);
 
       msg->security |= SIGN;
 
@@ -1992,6 +1995,3 @@ int smime_send_menu (HEADER * msg, int *redraw)
 
   return (msg->security);
 }
-
-
-#endif /* CRYPT_BACKEND_CLASSIC_SMIME */