static struct crypt_cache *id_defaults = NULL;
static gpgme_key_t signature_key = NULL;
+/* Initialization. */
+void crypt_init(void)
+{
+ /* Make sure that gpg-agent is running. */
+ if (!getenv ("GPG_AGENT_INFO")) {
+ mutt_error ("\nUsing GPGME backend, although no gpg-agent is running");
+ if (mutt_any_key_to_continue (NULL) == -1)
+ mutt_exit (1);
+ }
+}
+
+/* Show a message that a backend will be invoked. */
+void crypt_invoke_message (int type)
+{
+ if (type & APPLICATION_PGP) {
+ mutt_message _("Invoking PGP...");
+ }
+ else if (type & APPLICATION_SMIME) {
+ mutt_message _("Invoking S/MIME...");
+ }
+}
+
/*
* General helper functions.
*/
state_attach_puts (p, s);
}
-/*
- * Implementation of `sign_message'.
- */
+/* Implementation of `sign_message'. */
/* Sign the MESSAGE in body A either using OpenPGP or S/MIME when
USE_SMIME is passed as true. Returns the new body or NULL on
}
-BODY *pgp_gpgme_sign_message (BODY * a)
+BODY *crypt_pgp_sign_message (BODY * a)
{
return sign_message (a, 0);
}
-BODY *smime_gpgme_sign_message (BODY * a)
+BODY *crypt_smime_sign_message (BODY * a)
{
return sign_message (a, 1);
}
/* Encrypt the mail body A to all keys given as space separated keyids
or fingerprints in KEYLIST and return the encrypted body. */
-BODY *pgp_gpgme_encrypt_message (BODY * a, char *keylist, int sign)
+BODY *crypt_pgp_encrypt_message (BODY * a, char *keylist, int sign)
{
char *outfile = NULL;
BODY *t;
}
-/*
- * Implementation of `verify_one'.
- */
+/* Implementation of `verify_one'. */
/* Display the common attributes of the signature summary SUM.
Return 1 if there is is a severe warning.
return badsig ? 1 : anywarn ? 2 : 0;
}
-int pgp_gpgme_verify_one (BODY * sigbdy, STATE * s, const char *tempfile)
+int crypt_pgp_verify_one (BODY * sigbdy, STATE * s, const char *tempfile)
{
return verify_one (sigbdy, s, tempfile, 0);
}
-int smime_gpgme_verify_one (BODY * sigbdy, STATE * s, const char *tempfile)
+int crypt_smime_verify_one (BODY * sigbdy, STATE * s, const char *tempfile)
{
return verify_one (sigbdy, s, tempfile, 1);
}
/* Decrypt a PGP/MIME message in FPIN and B and return a new body and
the stream in CUR and FPOUT. Returns 0 on success. */
-int pgp_gpgme_decrypt_mime (FILE * fpin, FILE ** fpout, BODY * b, BODY ** cur)
+int crypt_pgp_decrypt_mime (FILE * fpin, FILE ** fpout, BODY * b, BODY ** cur)
{
char tempfile[_POSIX_PATH_MAX];
STATE s;
/* Decrypt a S/MIME message in FPIN and B and return a new body and
the stream in CUR and FPOUT. Returns 0 on success. */
-int smime_gpgme_decrypt_mime (FILE * fpin, FILE ** fpout, BODY * b,
+int crypt_smime_decrypt_mime (FILE * fpin, FILE ** fpout, BODY * b,
BODY ** cur)
{
char tempfile[_POSIX_PATH_MAX];
return 1;
}
-int pgp_gpgme_check_traditional (FILE * fp, BODY * b, int tagged_only)
+int crypt_pgp_check_traditional (FILE * fp, BODY * b, int tagged_only)
{
int rv = 0;
int r;
for (; b; b = b->next) {
if (is_multipart (b))
- rv = (pgp_gpgme_check_traditional (fp, b->parts, tagged_only) || rv);
+ rv = (crypt_pgp_check_traditional (fp, b->parts, tagged_only) || rv);
else if (b->type == TYPETEXT) {
if ((r = mutt_is_application_pgp (b)))
rv = (rv || r);
}
-/*
- * Implementation of `application_handler'.
- */
+/* Implementation of `application_handler'. */
/*
Copy a clearsigned message, and strip the signature and PGP's
/* Support for classic_application/pgp */
-int pgp_gpgme_application_handler (BODY * m, STATE * s)
+int crypt_pgp_application_pgp_handler (BODY * m, STATE * s)
{
int needpass = -1, pgp_keyblock = 0;
int clearsign = 0;
}
/* Support for application/smime */
-int smime_gpgme_application_handler (BODY * a, STATE * s)
+int crypt_smime_application_smime_handler (BODY * a, STATE * s)
{
char tempfile[_POSIX_PATH_MAX];
FILE *fpout;
mutt_do_pager (cmd, tempfile, 0, NULL);
}
-/*
- * Implementation of `findkeys'.
- */
-
+/* Implementation of `findkeys'. */
/* Convert string_list_t into a pattern string suitable to be passed to GPGME.
We need to convert spaces in an item into a '+' and '%' into
return (keylist);
}
-char *pgp_gpgme_findkeys (address_t * to, address_t * cc, address_t * bcc)
+char *crypt_pgp_findkeys (address_t * to, address_t * cc, address_t * bcc)
{
return find_keys (to, cc, bcc, APPLICATION_PGP);
}
-char *smime_gpgme_findkeys (address_t * to, address_t * cc, address_t * bcc)
+char *crypt_smime_findkeys (address_t * to, address_t * cc, address_t * bcc)
{
return find_keys (to, cc, bcc, APPLICATION_SMIME);
}
-/*
- * Implementation of `init'.
- */
-
-/* Initialization. */
-static void init_gpgme (void)
-{
- /* Make sure that gpg-agent is running. */
- if (!getenv ("GPG_AGENT_INFO")) {
- mutt_error ("\nUsing GPGME backend, although no gpg-agent is running");
- if (mutt_any_key_to_continue (NULL) == -1)
- mutt_exit (1);
- }
-}
-
-void pgp_gpgme_init (void)
-{
- init_gpgme ();
-}
-
-void smime_gpgme_init (void)
-{
-}
-
static int gpgme_send_menu (HEADER * msg, int *redraw, int is_smime)
{
crypt_key_t *p;
return (msg->security);
}
-int pgp_gpgme_send_menu (HEADER * msg, int *redraw)
+int crypt_pgp_send_menu(HEADER * msg, int *redraw)
{
- return gpgme_send_menu (msg, redraw, 0);
+ return gpgme_send_menu(msg, redraw, 0);
}
-int smime_gpgme_send_menu (HEADER * msg, int *redraw)
+int crypt_smime_send_menu(HEADER * msg, int *redraw)
{
return gpgme_send_menu (msg, redraw, 1);
}
-static int verify_sender (HEADER * h, gpgme_protocol_t protocol __attribute__((unused)))
+int crypt_smime_verify_sender (HEADER * h)
{
address_t *sender = NULL;
unsigned int ret = 1;
return ret;
}
-int smime_gpgme_verify_sender (HEADER * h)
+static void invoke_import(const char *fname, int smime)
{
- return verify_sender (h, GPGME_PROTOCOL_CMS);
-}
-
-void pgp_gpgme_invoke_import(const char *fname)
-{
- gpgme_ctx_t ctx = create_gpgme_context(0);
+ gpgme_ctx_t ctx = create_gpgme_context(smime);
gpgme_data_t data;
gpgme_error_t err;
return;
}
+void crypt_pgp_invoke_import(const char *fname)
+{
+ invoke_import(fname, 0);
+}
+
+void crypt_smime_invoke_import(const char *fname)
+{
+ invoke_import(fname, 1);
+}
+
static void pgp_extract_keys_from_attachment (FILE * fp, BODY * top)
{
STATE s;
mutt_body_handler (top, &s);
m_fclose(&tempfp);
- pgp_gpgme_invoke_import(tempfname);
+ crypt_pgp_invoke_import(tempfname);
mutt_unlink (tempfname);
}
-void pgp_gpgme_from_attachment_list (FILE * fp, int tag, BODY * top)
+void crypt_pgp_extract_keys_from_attachment_list(FILE * fp, int tag, BODY * top)
{
mutt_endwin (NULL);
set_option (OPTDONTHANDLEPGPKEYS);