#include "gmime-extra.h"
-typedef GMimeCryptoContext notmuch_crypto_context_t;
-/* This is automatically included only since gmime 2.6.10 */
-#include <gmime/gmime-pkcs7-context.h>
-
#include "notmuch.h"
/* This is separate from notmuch-private.h because we're trying to
#include <ctype.h>
#include "talloc-extra.h"
+#include "crypto.h"
-#define unused(x) x __attribute__ ((unused))
+#define unused(x) x ## _unused __attribute__ ((unused))
#define STRINGIFY(s) STRINGIFY_(s)
#define STRINGIFY_(s) #s
const struct notmuch_show_params *params);
} notmuch_show_format_t;
-typedef struct _notmuch_crypto {
- bool verify;
- bool decrypt;
-#if (GMIME_MAJOR_VERSION < 3)
- notmuch_crypto_context_t* gpgctx;
- notmuch_crypto_context_t* pkcs7ctx;
- const char *gpgpath;
-#endif
-} _notmuch_crypto_t;
-
typedef struct notmuch_show_params {
bool entire_thread;
bool omit_excluded;
void
notmuch_exit_if_unsupported_format (void);
-#if (GMIME_MAJOR_VERSION <3)
-notmuch_crypto_context_t *
-_notmuch_crypto_get_context (_notmuch_crypto_t *crypto, const char *protocol);
-#endif
-
-int
-_notmuch_crypto_cleanup (_notmuch_crypto_t *crypto);
-
int
notmuch_count_command (notmuch_config_t *config, int argc, char *argv[]);
void
format_headers_sprinter (struct sprinter *sp, GMimeMessage *message,
- bool reply);
+ bool reply, const _notmuch_message_crypto_t *msg_crypto);
typedef enum {
NOTMUCH_SHOW_TEXT_PART_REPLY = 1 << 0,
notmuch_config_set_database_path (notmuch_config_t *config,
const char *database_path);
-#if (GMIME_MAJOR_VERSION < 3)
-const char *
-notmuch_config_get_crypto_gpg_path (notmuch_config_t *config);
-
-void
-notmuch_config_set_crypto_gpg_path (notmuch_config_t *config,
- const char *gpg_path);
-#endif
-
const char *
notmuch_config_get_user_name (notmuch_config_t *config);
/* Construct a new MIME node pointing to the root message part of
* message. If crypto->verify is true, signed child parts will be
- * verified. If crypto->decrypt is true, encrypted child parts will be
- * decrypted. If the crypto contexts (crypto->gpgctx or
- * crypto->pkcs7) are NULL, they will be lazily initialized.
+ * verified. If crypto->decrypt is NOTMUCH_DECRYPT_TRUE, encrypted
+ * child parts will be decrypted using either stored session keys or
+ * asymmetric crypto. If crypto->decrypt is NOTMUCH_DECRYPT_AUTO,
+ * only session keys will be tried. If the crypto contexts
+ * (crypto->gpgctx or crypto->pkcs7) are NULL, they will be lazily
+ * initialized.
*
* Return value:
*
mime_node_t *
mime_node_seek_dfs (mime_node_t *node, int n);
+const _notmuch_message_crypto_t*
+mime_node_get_message_crypto_status (mime_node_t *node);
+
typedef enum dump_formats {
DUMP_FORMAT_AUTO,
DUMP_FORMAT_BATCH_TAG,
const notmuch_query_t *query,
notmuch_status_t status);
+notmuch_status_t
+print_status_message (const char *loc,
+ const notmuch_message_t *message,
+ notmuch_status_t status);
+
notmuch_status_t
print_status_database (const char *loc,
const notmuch_database_t *database,
void notmuch_process_shared_options (const char* subcommand_name);
int notmuch_minimal_options (const char* subcommand_name,
int argc, char **argv);
+
+
+/* the state chosen by the user invoking one of the notmuch
+ * subcommands that does indexing */
+struct _notmuch_client_indexing_cli_choices {
+ int decrypt_policy;
+ bool decrypt_policy_set;
+ notmuch_indexopts_t * opts;
+};
+extern struct _notmuch_client_indexing_cli_choices indexing_cli_choices;
+extern const notmuch_opt_desc_t notmuch_shared_indexing_options [];
+notmuch_status_t
+notmuch_process_shared_indexing_options (notmuch_database_t *notmuch);
+
#endif