+#ifdef GMIME_ATLEAST_26
+
+/* Create a GPG context (GMime 2.6) */
+static notmuch_crypto_context_t *
+create_gpg_context (void)
+{
+ notmuch_crypto_context_t *gpgctx;
+
+ /* TODO: GMimePasswordRequestFunc */
+ gpgctx = g_mime_gpg_context_new (NULL, "gpg");
+ if (! gpgctx)
+ return NULL;
+
+ g_mime_gpg_context_set_use_agent ((GMimeGpgContext *) gpgctx, TRUE);
+ g_mime_gpg_context_set_always_trust ((GMimeGpgContext *) gpgctx, FALSE);
+
+ return gpgctx;
+}
+
+#else /* GMIME_ATLEAST_26 */
+
+/* Create a GPG context (GMime 2.4) */
+static notmuch_crypto_context_t *
+create_gpg_context (void)
+{
+ GMimeSession *session;
+ notmuch_crypto_context_t *gpgctx;
+
+ session = g_object_new (g_mime_session_get_type (), NULL);
+ gpgctx = g_mime_gpg_context_new (session, "gpg");
+ g_object_unref (session);
+
+ if (! gpgctx)
+ return NULL;
+
+ g_mime_gpg_context_set_always_trust ((GMimeGpgContext *) gpgctx, FALSE);
+
+ return gpgctx;
+}
+
+#endif /* GMIME_ATLEAST_26 */
+