X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=lib-crypt%2Fcrypt-mod-smime-gpgme.c;fp=lib-crypt%2Fcrypt-mod-smime-gpgme.c;h=31e882f396d5f96ed554d5c9a9fafa1b368ebfc1;hb=9c29247938d64f721db448824a1121ef47ad2869;hp=0000000000000000000000000000000000000000;hpb=ecfcc6df70230ba136c2fb3843700ecb749c41b7;p=apps%2Fmadmutt.git diff --git a/lib-crypt/crypt-mod-smime-gpgme.c b/lib-crypt/crypt-mod-smime-gpgme.c new file mode 100644 index 0000000..31e882f --- /dev/null +++ b/lib-crypt/crypt-mod-smime-gpgme.c @@ -0,0 +1,110 @@ +/* + * Copyright notice from original mutt: + * Copyright (C) 2004 g10 Code GmbH + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ + +/* + This is a crytpo module wrapping the gpgme based smime code. + */ + +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef CRYPT_BACKEND_GPGME + +#include +#include "crypt-gpgme.h" + +static void crypt_mod_smime_init (void) +{ + smime_gpgme_init (); +} + +static void crypt_mod_smime_void_passphrase (void) +{ + /* Handled by gpg-agent. */ +} + +static int crypt_mod_smime_valid_passphrase (void) +{ + /* Handled by gpg-agent. */ + return 1; +} + +static int crypt_mod_smime_decrypt_mime (FILE * a, FILE ** b, BODY * c, + BODY ** d) +{ + return smime_gpgme_decrypt_mime (a, b, c, d); +} + +static int crypt_mod_smime_application_handler (BODY * m, STATE * s) +{ + return smime_gpgme_application_handler (m, s); +} + +static char *crypt_mod_smime_findkeys (address_t * to, address_t * cc, + address_t * bcc) +{ + return smime_gpgme_findkeys (to, cc, bcc); +} + +static BODY *crypt_mod_smime_sign_message (BODY * a) +{ + return smime_gpgme_sign_message (a); +} + +static int crypt_mod_smime_verify_one (BODY * sigbdy, STATE * s, + const char *tempf) +{ + return smime_gpgme_verify_one (sigbdy, s, tempf); +} + +static int crypt_mod_smime_send_menu (HEADER * msg, int *redraw) +{ + return smime_gpgme_send_menu (msg, redraw); +} + +static BODY *crypt_mod_smime_build_smime_entity (BODY * a, char *certlist) +{ + return smime_gpgme_build_smime_entity (a, certlist); +} + +static int crypt_mod_smime_verify_sender (HEADER * h) +{ + return smime_gpgme_verify_sender (h); +} + +struct crypt_module_specs crypt_mod_smime_gpgme = { APPLICATION_SMIME, + { + crypt_mod_smime_init, + crypt_mod_smime_void_passphrase, + crypt_mod_smime_valid_passphrase, + crypt_mod_smime_decrypt_mime, + crypt_mod_smime_application_handler, + NULL, /* encrypted_handler */ + crypt_mod_smime_findkeys, + crypt_mod_smime_sign_message, + crypt_mod_smime_verify_one, + crypt_mod_smime_send_menu, + + NULL, /* pgp_encrypt_message */ + NULL, /* pgp_make_key_attachment */ + NULL, /* pgp_check_traditional */ + NULL, /* pgp_traditional_encryptsign */ + NULL, /* pgp_invoke_getkeys */ + NULL, /* pgp_invoke_import */ + NULL, /* pgp_extract_keys_from_attachment_list */ + + NULL, /* smime_getkeys */ + crypt_mod_smime_verify_sender, + crypt_mod_smime_build_smime_entity, + NULL, /* smime_invoke_import */ + } +}; + +#endif