GObjectClass *object_class = G_OBJECT_CLASS (klass);
GMimeFilterClass *filter_class = GMIME_FILTER_CLASS (klass);
- parent_class = (GMimeFilterClass *) g_type_class_ref (GMIME_TYPE_FILTER);
-
object_class->finalize = notmuch_filter_discard_non_term_finalize;
filter_class->copy = filter_copy;
*
* Returns: a new #NotmuchFilterDiscardNonTerm filter.
**/
+static GType type = 0;
+
+static const GTypeInfo info = {
+ .class_size = sizeof (NotmuchFilterDiscardNonTermClass),
+ .base_init = NULL,
+ .base_finalize = NULL,
+ .class_init = (GClassInitFunc) notmuch_filter_discard_non_term_class_init,
+ .class_finalize = NULL,
+ .class_data = NULL,
+ .instance_size = sizeof (NotmuchFilterDiscardNonTerm),
+ .n_preallocs = 0,
+ .instance_init = NULL,
+ .value_table = NULL,
+};
+
+void
+_notmuch_filter_init () {
+ type = g_type_register_static (GMIME_TYPE_FILTER, "NotmuchFilterDiscardNonTerm", &info,
+ (GTypeFlags) 0);
+ parent_class = (GMimeFilterClass *) g_type_class_ref (GMIME_TYPE_FILTER);
+}
+
static GMimeFilter *
notmuch_filter_discard_non_term_new (GMimeContentType *content_type)
{
- static GType type = 0;
NotmuchFilterDiscardNonTerm *filter;
- if (! type) {
- static const GTypeInfo info = {
- .class_size = sizeof (NotmuchFilterDiscardNonTermClass),
- .base_init = NULL,
- .base_finalize = NULL,
- .class_init = (GClassInitFunc) notmuch_filter_discard_non_term_class_init,
- .class_finalize = NULL,
- .class_data = NULL,
- .instance_size = sizeof (NotmuchFilterDiscardNonTerm),
- .n_preallocs = 0,
- .instance_init = NULL,
- .value_table = NULL,
- };
-
- type = g_type_register_static (GMIME_TYPE_FILTER, "NotmuchFilterDiscardNonTerm", &info, (GTypeFlags) 0);
- }
-
filter = (NotmuchFilterDiscardNonTerm *) g_object_new (type, NULL);
filter->content_type = content_type;
filter->state = 0;
static void
_index_encrypted_mime_part (notmuch_message_t *message, notmuch_indexopts_t *indexopts,
- GMimeMultipartEncrypted *part,
+ GMimeObject *part,
_notmuch_message_crypto_t *msg_crypto);
static void
g_mime_multipart_get_part (multipart, i));
if (i == GMIME_MULTIPART_ENCRYPTED_CONTENT) {
_index_encrypted_mime_part (message, indexopts,
- GMIME_MULTIPART_ENCRYPTED (part),
+ part,
msg_crypto);
} else {
if (i != GMIME_MULTIPART_ENCRYPTED_VERSION) {
msg_crypto->decryption_status == NOTMUCH_MESSAGE_DECRYPTED_FULL) {
toindex = _notmuch_repair_crypto_payload_skip_legacy_display (child);
if (toindex != child)
- notmuch_message_add_property (message, "index.repaired", "skip-protected-headers-legacy-display");
+ notmuch_message_add_property (message, "index.repaired",
+ "skip-protected-headers-legacy-display");
}
_index_mime_part (message, indexopts, toindex, msg_crypto);
}
mime_message = g_mime_message_part_get_message (GMIME_MESSAGE_PART (part));
- _index_mime_part (message, indexopts, g_mime_message_get_mime_part (mime_message), msg_crypto);
+ _index_mime_part (message, indexopts, g_mime_message_get_mime_part (mime_message),
+ msg_crypto);
goto DONE;
}
static void
_index_encrypted_mime_part (notmuch_message_t *message,
notmuch_indexopts_t *indexopts,
- GMimeMultipartEncrypted *encrypted_data,
+ GMimeObject *encrypted_data,
_notmuch_message_crypto_t *msg_crypto)
{
notmuch_status_t status;
bool attempted = false;
GMimeDecryptResult *decrypt_result = NULL;
bool get_sk = (notmuch_indexopts_get_decrypt_policy (indexopts) == NOTMUCH_DECRYPT_TRUE);
+
clear = _notmuch_crypto_decrypt (&attempted, notmuch_indexopts_get_decrypt_policy (indexopts),
message, encrypted_data, get_sk ? &decrypt_result : NULL, &err);
if (! attempted)
notmuch_status_to_string (status));
if (get_sk) {
status = notmuch_message_add_property (message, "session-key",
- g_mime_decrypt_result_get_session_key (decrypt_result));
+ g_mime_decrypt_result_get_session_key (
+ decrypt_result));
if (status)
_notmuch_database_log (notmuch, "failed to add session-key "
"property (%d)\n", status);
g_object_unref (decrypt_result);
}
GMimeObject *toindex = clear;
- if (_notmuch_message_crypto_potential_payload (msg_crypto, clear, GMIME_OBJECT (encrypted_data), GMIME_MULTIPART_ENCRYPTED_CONTENT) &&
+
+ if (_notmuch_message_crypto_potential_payload (msg_crypto, clear, encrypted_data,
+ GMIME_MULTIPART_ENCRYPTED_CONTENT) &&
msg_crypto->decryption_status == NOTMUCH_MESSAGE_DECRYPTED_FULL) {
toindex = _notmuch_repair_crypto_payload_skip_legacy_display (clear);
if (toindex != clear)
- notmuch_message_add_property (message, "index.repaired", "skip-protected-headers-legacy-display");
+ notmuch_message_add_property (message, "index.repaired",
+ "skip-protected-headers-legacy-display");
}
_index_mime_part (message, indexopts, toindex, msg_crypto);
g_object_unref (clear);
if (p7type == GMIME_SECURE_MIME_TYPE_SIGNED_DATA) {
sigs = g_mime_application_pkcs7_mime_verify (pkcs7, GMIME_VERIFY_NONE, &mimeobj, &err);
if (sigs == NULL) {
- _notmuch_database_log (notmuch, "Failed to verify PKCS#7 SignedData during indexing. (%d:%d) [%s]\n",
+ _notmuch_database_log (notmuch,
+ "Failed to verify PKCS#7 SignedData during indexing. (%d:%d) [%s]\n",
err->domain, err->code, err->message);
g_error_free (err);
goto DONE;
msg_crypto->decryption_status == NOTMUCH_MESSAGE_DECRYPTED_FULL) {
toindex = _notmuch_repair_crypto_payload_skip_legacy_display (mimeobj);
if (toindex != mimeobj)
- notmuch_message_add_property (message, "index.repaired", "skip-protected-headers-legacy-display");
+ notmuch_message_add_property (message, "index.repaired",
+ "skip-protected-headers-legacy-display");
}
_index_mime_part (message, indexopts, toindex, msg_crypto);
} else if (p7type == GMIME_SECURE_MIME_TYPE_ENVELOPED_DATA) {
_notmuch_message_add_term (message, "tag", "encrypted");
- if (notmuch_indexopts_get_decrypt_policy (indexopts) != NOTMUCH_DECRYPT_FALSE)
- _notmuch_database_log (notmuch, "Cannot decrypt PKCS#7 envelopedData (S/MIME encrypted messages)\n");
+ _index_encrypted_mime_part (message, indexopts,
+ part,
+ msg_crypto);
} else {
_notmuch_database_log (notmuch, "Cannot currently handle PKCS#7 smime-type '%s'\n",
g_mime_object_get_content_type_parameter (part, "smime-type"));
}
- DONE:
+ DONE:
if (mimeobj)
g_object_unref (mimeobj);
if (sigs)