46 #ifndef CRYPT_BACKEND_GPGME 63 #ifdef CRYPT_BACKEND_CLASSIC_PGP 67 #ifdef CRYPT_BACKEND_CLASSIC_SMIME 71 #ifdef CRYPT_BACKEND_GPGME 79 #define CRYPT_MOD_CALL_CHECK(identifier, func) \ 80 (crypto_module_lookup(APPLICATION_##identifier) && \ 81 (crypto_module_lookup(APPLICATION_##identifier))->func) 85 #define CRYPT_MOD_CALL(identifier, func) \ 86 (*(crypto_module_lookup(APPLICATION_##identifier))->func) 95 #ifdef CRYPT_BACKEND_CLASSIC_PGP 97 #ifdef CRYPT_BACKEND_GPGME
106 #ifdef CRYPT_BACKEND_CLASSIC_SMIME 108 #ifdef CRYPT_BACKEND_GPGME
117 #ifdef CRYPT_BACKEND_GPGME 125 #if defined(CRYPT_BACKEND_CLASSIC_PGP) || \ 126 defined(CRYPT_BACKEND_CLASSIC_SMIME) || defined(CRYPT_BACKEND_GPGME) 295 return CRYPT_MOD_CALL(PGP, pgp_traditional_encryptsign)(a, flags, keylist);
337 int sign,
const struct AddressList *from)
354 return CRYPT_MOD_CALL(PGP, pgp_encrypt_message)(a, keylist, sign, from);
434 return CRYPT_MOD_CALL(SMIME, decrypt_mime)(fp_in, fp_out, b, cur);
500 return CRYPT_MOD_CALL(SMIME, smime_build_smime_entity)(a, certlist);
Convenience wrapper for the gui headers.
The envelope/body of an email.
int(* encrypted_handler)(struct Body *m, struct State *s)
Manage a PGP or S/MIME encrypted MIME part.
char * crypt_smime_find_keys(struct AddressList *addrlist, bool oppenc_mode)
Wrapper for CryptModuleSpecs::find_keys()
void crypt_cleanup(void)
Clean up backend.
Wrapper for PGP/SMIME calls to GPGME.
Structs that make up an email.
Autocrypt end-to-end encryption.
int crypt_pgp_application_handler(struct Body *m, struct State *s)
Wrapper for CryptModuleSpecs::application_handler()
#define mutt_message(...)
bool C_Autocrypt
Config: Enables the Autocrypt feature.
Wrapper around crypto functions.
void crypt_pgp_void_passphrase(void)
Wrapper for CryptModuleSpecs::void_passphrase()
bool crypt_smime_valid_passphrase(void)
Wrapper for CryptModuleSpecs::valid_passphrase()
int(* application_handler)(struct Body *m, struct State *s)
Manage the MIME type "application/pgp" or "application/smime".
void(* void_passphrase)(void)
Forget the cached passphrase.
int(* pgp_check_traditional)(FILE *fp, struct Body *b, bool just_one)
Look for inline (non-MIME) PGP content.
void crypt_pgp_set_sender(const char *sender)
Wrapper for CryptModuleSpecs::set_sender()
bool is_autocrypt
Flag autocrypt-decrypted messages for replying.
WHERE bool OptAutocryptGpgme
(pseudo) use Autocrypt context inside ncrypt/crypt_gpgme.c
#define CRYPT_MOD_CALL(identifier, func)
#define SEC_AUTOCRYPT
(Autocrypt) Message will be, or was Autocrypt encrypt+signed
uint16_t SecurityFlags
Flags, e.g. SEC_ENCRYPT.
bool C_CryptUseGpgme
Config: Use GPGME crypto backend.
static char * find_keys(struct AddressList *addrlist, unsigned int app, bool oppenc_mode)
Find keys of the recipients of the message.
int crypt_smime_verify_sender(struct Mailbox *m, struct Email *e)
Wrapper for CryptModuleSpecs::smime_verify_sender()
void crypto_module_register(struct CryptModuleSpecs *specs)
Register a new crypto module.
Shared constants/structs that are private to libconn.
int crypt_smime_application_handler(struct Body *m, struct State *s)
Wrapper for CryptModuleSpecs::application_handler()
struct Body * pgp_gpgme_encrypt_message(struct Body *a, char *keylist, bool sign, const struct AddressList *from)
Implements CryptModuleSpecs::pgp_encrypt_message()
struct CryptModuleSpecs CryptModSmimeClassic
CLI SMIME - Implements CryptModuleSpecs.
void crypt_smime_set_sender(const char *sender)
Wrapper for CryptModuleSpecs::set_sender()
struct Body * crypt_smime_sign_message(struct Body *a, const struct AddressList *from)
Wrapper for CryptModuleSpecs::sign_message()
int pgp_gpgme_decrypt_mime(FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur)
Implements CryptModuleSpecs::decrypt_mime()
struct CryptModuleSpecs CryptModPgpClassic
CLI PGP - Implements CryptModuleSpecs.
int crypt_smime_send_menu(struct Email *e)
Wrapper for CryptModuleSpecs::send_menu()
int pgp_gpgme_encrypted_handler(struct Body *a, struct State *s)
Implements CryptModuleSpecs::encrypted_handler()
int crypt_pgp_encrypted_handler(struct Body *a, struct State *s)
Wrapper for CryptModuleSpecs::encrypted_handler()
int(* decrypt_mime)(FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur)
Decrypt an encrypted MIME part.
void crypt_smime_void_passphrase(void)
Wrapper for CryptModuleSpecs::void_passphrase()
void crypt_pgp_extract_key_from_attachment(FILE *fp, struct Body *top)
Wrapper for CryptModuleSpecs::pgp_extract_key_from_attachment()
struct CryptModuleSpecs CryptModPgpGpgme
GPGME PGP - Implements CryptModuleSpecs.
int mutt_autocrypt_set_sign_as_default_key(struct Email *e)
Set the Autocrypt default key for signing.
struct Body * crypt_pgp_encrypt_message(struct Email *e, struct Body *a, char *keylist, int sign, const struct AddressList *from)
Wrapper for CryptModuleSpecs::pgp_encrypt_message()
void crypt_invoke_message(SecurityFlags type)
Display an informative message.
#define CRYPT_MOD_CALL_CHECK(identifier, func)
#define APPLICATION_SMIME
Use SMIME to encrypt/sign.
#define APPLICATION_PGP
Use PGP to encrypt/sign.
void crypt_pgp_invoke_import(const char *fname)
Wrapper for CryptModuleSpecs::pgp_invoke_import()
void crypt_smime_getkeys(struct Envelope *env)
Wrapper for CryptModuleSpecs::smime_getkeys()
void(* cleanup)(void)
Clean up the crypt module.
void crypt_pgp_invoke_getkeys(struct Address *addr)
Wrapper for CryptModuleSpecs::pgp_invoke_getkeys()
int crypt_pgp_send_menu(struct Email *e)
Wrapper for CryptModuleSpecs::send_menu()
struct Body * crypt_pgp_traditional_encryptsign(struct Body *a, int flags, char *keylist)
Wrapper for CryptModuleSpecs::pgp_traditional_encryptsign()
API for encryption/signing of emails.
int crypt_smime_decrypt_mime(FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur)
Wrapper for CryptModuleSpecs::decrypt_mime()
void crypt_init(void)
Initialise the crypto backends.
SecurityFlags security
bit 0-10: flags, bit 11,12: application, bit 13: traditional pgp See: ncrypt/lib.h pgplib...
bool(* valid_passphrase)(void)
Ensure we have a valid passphrase.
struct CryptModuleSpecs * crypto_module_lookup(int identifier)
Lookup a crypto module by name.
static int verify_one(struct Body *sigbdy, struct State *s, const char *tempfile, bool is_smime)
Do the actual verification step.
bool crypt_has_module_backend(SecurityFlags type)
Is there a crypto backend for a given type?
int crypt_pgp_check_traditional(FILE *fp, struct Body *b, bool just_one)
Wrapper for CryptModuleSpecs::pgp_check_traditional()
struct Body * crypt_smime_build_smime_entity(struct Body *a, char *certlist)
Wrapper for CryptModuleSpecs::smime_build_smime_entity()
struct Body * crypt_pgp_make_key_attachment(void)
Wrapper for CryptModuleSpecs::pgp_make_key_attachment()
char * crypt_pgp_find_keys(struct AddressList *addrlist, bool oppenc_mode)
Wrapper for CryptModuleSpecs::find_keys()
void crypt_smime_invoke_import(const char *infile, const char *mailbox)
Wrapper for CryptModuleSpecs::smime_invoke_import()
int crypt_pgp_decrypt_mime(FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur)
Wrapper for CryptModuleSpecs::decrypt_mime()
static struct Body * sign_message(struct Body *a, const struct AddressList *from, bool use_smime)
Sign a message.
struct Body * crypt_pgp_sign_message(struct Body *a, const struct AddressList *from)
Wrapper for CryptModuleSpecs::sign_message()
int crypt_smime_verify_one(struct Body *sigbdy, struct State *s, const char *tempf)
Wrapper for CryptModuleSpecs::verify_one()
Keep track when processing files.
struct CryptModuleSpecs CryptModSmimeGpgme
GPGME SMIME - Implements CryptModuleSpecs.
Handling of global boolean variables.
Convenience wrapper for the library headers.
void(* pgp_invoke_getkeys)(struct Address *addr)
Run a command to download a PGP key.
void(* init)(void)
Initialise the crypto module.
bool crypt_pgp_valid_passphrase(void)
Wrapper for CryptModuleSpecs::valid_passphrase()
int crypt_pgp_verify_one(struct Body *sigbdy, struct State *s, const char *tempf)
Wrapper for CryptModuleSpecs::verify_one()