]> git.notmuchmail.org Git - notmuch/blobdiff - util/crypto.c
crypto: Make _notmuch_crypto_decrypt take a GMimeObject
[notmuch] / util / crypto.c
index 3845ade8ca50d8e4f5187f166fc91af35b72d63c..fbd5f011eae63fb570cf2a84a2b0c03e6493cd5f 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "crypto.h"
 #include <strings.h>
+#include "error_util.h"
 #define unused(x) x __attribute__ ((unused))
 
 #define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr[0]))
@@ -33,7 +34,7 @@ GMimeObject *
 _notmuch_crypto_decrypt (bool *attempted,
                         notmuch_decryption_policy_t decrypt,
                         notmuch_message_t *message,
-                        GMimeMultipartEncrypted *part,
+                        GMimeObject *part,
                         GMimeDecryptResult **decrypt_result,
                         GError **err)
 {
@@ -54,7 +55,7 @@ _notmuch_crypto_decrypt (bool *attempted,
            }
            if (attempted)
                *attempted = true;
-           ret = g_mime_multipart_encrypted_decrypt (part,
+           ret = g_mime_multipart_encrypted_decrypt (GMIME_MULTIPART_ENCRYPTED (part),
                                                      GMIME_DECRYPT_NONE,
                                                      notmuch_message_properties_value (list),
                                                      decrypt_result, err);
@@ -80,7 +81,7 @@ _notmuch_crypto_decrypt (bool *attempted,
     GMimeDecryptFlags flags = GMIME_DECRYPT_NONE;
     if (decrypt == NOTMUCH_DECRYPT_TRUE && decrypt_result)
        flags |= GMIME_DECRYPT_EXPORT_SESSION_KEY;
-    ret = g_mime_multipart_encrypted_decrypt (part, flags, NULL,
+    ret = g_mime_multipart_encrypted_decrypt (GMIME_MULTIPART_ENCRYPTED (part), flags, NULL,
                                              decrypt_result, err);
     return ret;
 }
@@ -135,19 +136,20 @@ _notmuch_message_crypto_potential_sig_list (_notmuch_message_crypto_t *msg_crypt
 }
 
 
-notmuch_status_t
+bool
 _notmuch_message_crypto_potential_payload (_notmuch_message_crypto_t *msg_crypto, GMimeObject *part, GMimeObject *parent, int childnum)
 {
     const char *protected_headers = NULL;
     const char *forwarded = NULL;
     const char *subject = NULL;
 
-    if (! msg_crypto || ! part)
-       return NOTMUCH_STATUS_NULL_POINTER;
+    if ((! msg_crypto) || (! part))
+       INTERNAL_ERROR ("_notmuch_message_crypto_potential_payload() got NULL for %s\n",
+                       msg_crypto? "part" : "msg_crypto");
 
     /* only fire on the first payload part encountered */
     if (msg_crypto->payload_encountered)
-       return NOTMUCH_STATUS_SUCCESS;
+       return false;
 
     /* the first child of multipart/encrypted that matches the
      * encryption protocol should be "control information" metadata,
@@ -159,7 +161,7 @@ _notmuch_message_crypto_potential_payload (_notmuch_message_crypto_t *msg_crypto
        if (ct && enc_type) {
            const char *part_type = g_mime_content_type_get_mime_type (ct);
            if (part_type && strcmp (part_type, enc_type) == 0)
-               return NOTMUCH_STATUS_SUCCESS;
+               return false;
        }
     }
 
@@ -169,7 +171,7 @@ _notmuch_message_crypto_potential_payload (_notmuch_message_crypto_t *msg_crypto
      * envelope: */
     if ((msg_crypto->decryption_status != NOTMUCH_MESSAGE_DECRYPTED_FULL) &&
        (msg_crypto->sig_list == NULL))
-       return NOTMUCH_STATUS_SUCCESS;
+       return false;
 
     /* Verify that this payload has headers that are intended to be
      * exported to the larger message: */
@@ -196,7 +198,7 @@ _notmuch_message_crypto_potential_payload (_notmuch_message_crypto_t *msg_crypto
        msg_crypto->payload_subject = talloc_strdup (msg_crypto, subject);
     }
 
-    return NOTMUCH_STATUS_SUCCESS;
+    return true;
 }