+
+/* Verify a signed mime node (GMime 2.6) */
+static void
+node_verify (mime_node_t *node, GMimeObject *part,
+ g_mime_3_unused(GMimeCryptoContext *cryptoctx))
+{
+ GError *err = NULL;
+
+ node->verify_attempted = true;
+ node->sig_list = g_mime_multipart_signed_verify
+ (GMIME_MULTIPART_SIGNED (part), cryptoctx, &err);
+
+ if (node->sig_list)
+ set_signature_list_destructor (node);
+ else
+ fprintf (stderr, "Failed to verify signed part: %s\n",
+ err ? err->message : "no error explanation given");
+
+ if (err)
+ g_error_free (err);
+}
+
+/* Decrypt and optionally verify an encrypted mime node (GMime 2.6) */
+static void
+node_decrypt_and_verify (mime_node_t *node, GMimeObject *part,
+ g_mime_3_unused(GMimeCryptoContext *cryptoctx))
+{
+ GError *err = NULL;
+ GMimeDecryptResult *decrypt_result = NULL;
+ GMimeMultipartEncrypted *encrypteddata = GMIME_MULTIPART_ENCRYPTED (part);
+
+ node->decrypt_attempted = true;
+ node->decrypted_child = g_mime_multipart_encrypted_decrypt
+#if (GMIME_MAJOR_VERSION < 3)
+ (encrypteddata, cryptoctx, &decrypt_result, &err);
+#else
+ (encrypteddata, GMIME_DECRYPT_NONE, NULL, &decrypt_result, &err);