X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=mime-node.c;h=cd3db67dfedde9d370f8cf7d78bf6a2bcef4698c;hp=2a24e537c6a25fa4b79785f33062826666b63b88;hb=e9b870b6923afe767a7c9938be24f5390102031a;hpb=bc842bfff12998a9b1a30b880cf8c6612f727d45 diff --git a/mime-node.c b/mime-node.c index 2a24e537..cd3db67d 100644 --- a/mime-node.c +++ b/mime-node.c @@ -121,7 +121,7 @@ mime_node_open (const void *ctx, notmuch_message_t *message, goto DONE; } - mctx->mime_message = g_mime_parser_construct_message (mctx->parser); + mctx->mime_message = g_mime_parser_construct_message (mctx->parser, NULL); if (!mctx->mime_message) { fprintf (stderr, "Failed to parse %s\n", filename); status = NOTMUCH_STATUS_FILE_ERROR; @@ -149,7 +149,7 @@ DONE: return status; } -/* Signature list destructor (GMime 2.6) */ +/* Signature list destructor */ static int _signature_list_free (GMimeSignatureList **proxy) { @@ -157,7 +157,7 @@ _signature_list_free (GMimeSignatureList **proxy) return 0; } -/* Set up signature list destructor (GMime 2.6) */ +/* Set up signature list destructor */ static void set_signature_list_destructor (mime_node_t *node) { @@ -168,16 +168,15 @@ set_signature_list_destructor (mime_node_t *node) } } -/* Verify a signed mime node (GMime 2.6) */ +/* Verify a signed mime node */ static void -node_verify (mime_node_t *node, GMimeObject *part, - g_mime_3_unused(GMimeCryptoContext *cryptoctx)) +node_verify (mime_node_t *node, GMimeObject *part) { GError *err = NULL; node->verify_attempted = true; node->sig_list = g_mime_multipart_signed_verify - (GMIME_MULTIPART_SIGNED (part), cryptoctx, &err); + (GMIME_MULTIPART_SIGNED (part), GMIME_ENCRYPT_NONE, &err); if (node->sig_list) set_signature_list_destructor (node); @@ -189,10 +188,9 @@ node_verify (mime_node_t *node, GMimeObject *part, g_error_free (err); } -/* Decrypt and optionally verify an encrypted mime node (GMime 2.6) */ +/* Decrypt and optionally verify an encrypted mime node */ static void -node_decrypt_and_verify (mime_node_t *node, GMimeObject *part, - g_mime_3_unused(GMimeCryptoContext *cryptoctx)) +node_decrypt_and_verify (mime_node_t *node, GMimeObject *part) { GError *err = NULL; GMimeDecryptResult *decrypt_result = NULL; @@ -209,7 +207,7 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part, node->decrypted_child = _notmuch_crypto_decrypt (&node->decrypt_attempted, node->ctx->crypto->decrypt, message, - cryptoctx, encrypteddata, &decrypt_result, &err); + encrypteddata, &decrypt_result, &err); } if (! node->decrypted_child) { fprintf (stderr, "Failed to decrypt part: %s\n", @@ -218,17 +216,16 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part, } node->decrypt_success = true; - node->verify_attempted = true; if (decrypt_result) { /* This may be NULL if the part is not signed. */ node->sig_list = g_mime_decrypt_result_get_signatures (decrypt_result); if (node->sig_list) { + node->verify_attempted = true; g_object_ref (node->sig_list); set_signature_list_destructor (node); } -#if HAVE_GMIME_SESSION_KEYS if (node->ctx->crypto->decrypt == NOTMUCH_DECRYPT_TRUE && message) { notmuch_database_t *db = notmuch_message_get_database (message); const char *session_key = g_mime_decrypt_result_get_session_key (decrypt_result); @@ -238,7 +235,6 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part, notmuch_message_add_property (message, "session-key", session_key)); } -#endif g_object_unref (decrypt_result); } @@ -251,7 +247,6 @@ static mime_node_t * _mime_node_create (mime_node_t *parent, GMimeObject *part) { mime_node_t *node = talloc_zero (parent, mime_node_t); - GMimeCryptoContext *cryptoctx = NULL; /* Set basic node properties */ node->part = part; @@ -284,22 +279,6 @@ _mime_node_create (mime_node_t *parent, GMimeObject *part) return NULL; } -#if (GMIME_MAJOR_VERSION < 3) - if ((GMIME_IS_MULTIPART_ENCRYPTED (part) && (node->ctx->crypto->decrypt != NOTMUCH_DECRYPT_FALSE)) - || (GMIME_IS_MULTIPART_SIGNED (part) && node->ctx->crypto->verify)) { - GMimeContentType *content_type = g_mime_object_get_content_type (part); - const char *protocol = g_mime_content_type_get_parameter (content_type, "protocol"); - notmuch_status_t status; - status = _notmuch_crypto_get_gmime_ctx_for_protocol (node->ctx->crypto, - protocol, &cryptoctx); - if (status) /* this is a warning, not an error */ - fprintf (stderr, "Warning: %s (%s).\n", notmuch_status_to_string (status), - protocol ? protocol : "NULL"); - if (!cryptoctx) - return node; - } -#endif - /* Handle PGP/MIME parts */ if (GMIME_IS_MULTIPART_ENCRYPTED (part) && (node->ctx->crypto->decrypt != NOTMUCH_DECRYPT_FALSE)) { if (node->nchildren != 2) { @@ -308,7 +287,7 @@ _mime_node_create (mime_node_t *parent, GMimeObject *part) "message (must be exactly 2)\n", node->nchildren); } else { - node_decrypt_and_verify (node, part, cryptoctx); + node_decrypt_and_verify (node, part); } } else if (GMIME_IS_MULTIPART_SIGNED (part) && node->ctx->crypto->verify) { if (node->nchildren != 2) { @@ -317,7 +296,7 @@ _mime_node_create (mime_node_t *parent, GMimeObject *part) "(must be exactly 2)\n", node->nchildren); } else { - node_verify (node, part, cryptoctx); + node_verify (node, part); } }