NeoMutt  2018-07-16 +2481-68dcde
Teaching an old dog new tricks
DOXYGEN
cryptglue.c File Reference

Wrapper around crypto functions. More...

#include "config.h"
#include <stdbool.h>
#include <stdio.h>
#include "mutt/mutt.h"
#include "crypt_mod.h"
#include "curs_lib.h"
#include "globals.h"
#include "ncrypt.h"
#include "options.h"
#include "autocrypt/autocrypt.h"
+ Include dependency graph for cryptglue.c:

Go to the source code of this file.

Macros

#define CRYPT_MOD_CALL_CHECK(identifier, func)
 
#define CRYPT_MOD_CALL(identifier, func)   (*(crypto_module_lookup(APPLICATION_##identifier))->func)
 

Functions

void crypt_init (void)
 Initialise the crypto backends. More...
 
void crypt_invoke_message (SecurityFlags type)
 Display an informative message. More...
 
bool crypt_has_module_backend (SecurityFlags type)
 Is there a crypto backend for a given type? More...
 
void crypt_pgp_void_passphrase (void)
 Wrapper for CryptModuleSpecs::void_passphrase() More...
 
bool crypt_pgp_valid_passphrase (void)
 Wrapper for CryptModuleSpecs::valid_passphrase() More...
 
int crypt_pgp_decrypt_mime (FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur)
 Wrapper for CryptModuleSpecs::decrypt_mime() More...
 
int crypt_pgp_application_handler (struct Body *m, struct State *s)
 Wrapper for CryptModuleSpecs::application_handler() More...
 
int crypt_pgp_encrypted_handler (struct Body *a, struct State *s)
 Wrapper for CryptModuleSpecs::encrypted_handler() More...
 
void crypt_pgp_invoke_getkeys (struct Address *addr)
 Wrapper for CryptModuleSpecs::pgp_invoke_getkeys() More...
 
int crypt_pgp_check_traditional (FILE *fp, struct Body *b, bool just_one)
 Wrapper for CryptModuleSpecs::pgp_check_traditional() More...
 
struct Bodycrypt_pgp_traditional_encryptsign (struct Body *a, int flags, char *keylist)
 Wrapper for CryptModuleSpecs::pgp_traditional_encryptsign() More...
 
struct Bodycrypt_pgp_make_key_attachment (void)
 Wrapper for CryptModuleSpecs::pgp_make_key_attachment() More...
 
char * crypt_pgp_find_keys (struct AddressList *addrlist, bool oppenc_mode)
 Wrapper for CryptModuleSpecs::find_keys() More...
 
struct Bodycrypt_pgp_sign_message (struct Body *a)
 Wrapper for CryptModuleSpecs::sign_message() More...
 
struct Bodycrypt_pgp_encrypt_message (struct Email *e, struct Body *a, char *keylist, int sign)
 Wrapper for CryptModuleSpecs::pgp_encrypt_message() More...
 
void crypt_pgp_invoke_import (const char *fname)
 Wrapper for CryptModuleSpecs::pgp_invoke_import() More...
 
int crypt_pgp_verify_one (struct Body *sigbdy, struct State *s, const char *tempf)
 Wrapper for CryptModuleSpecs::verify_one() More...
 
int crypt_pgp_send_menu (struct Email *e)
 Wrapper for CryptModuleSpecs::send_menu() More...
 
void crypt_pgp_extract_key_from_attachment (FILE *fp, struct Body *top)
 Wrapper for CryptModuleSpecs::pgp_extract_key_from_attachment() More...
 
void crypt_pgp_set_sender (const char *sender)
 Wrapper for CryptModuleSpecs::set_sender() More...
 
void crypt_smime_void_passphrase (void)
 Wrapper for CryptModuleSpecs::void_passphrase() More...
 
bool crypt_smime_valid_passphrase (void)
 Wrapper for CryptModuleSpecs::valid_passphrase() More...
 
int crypt_smime_decrypt_mime (FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur)
 Wrapper for CryptModuleSpecs::decrypt_mime() More...
 
int crypt_smime_application_handler (struct Body *m, struct State *s)
 Wrapper for CryptModuleSpecs::application_handler() More...
 
void crypt_smime_encrypted_handler (struct Body *a, struct State *s)
 Wrapper for CryptModuleSpecs::encrypted_handler() More...
 
void crypt_smime_getkeys (struct Envelope *env)
 Wrapper for CryptModuleSpecs::smime_getkeys() More...
 
int crypt_smime_verify_sender (struct Mailbox *m, struct Email *e)
 Wrapper for CryptModuleSpecs::smime_verify_sender() More...
 
char * crypt_smime_find_keys (struct AddressList *addrlist, bool oppenc_mode)
 Wrapper for CryptModuleSpecs::find_keys() More...
 
struct Bodycrypt_smime_sign_message (struct Body *a)
 Wrapper for CryptModuleSpecs::sign_message() More...
 
struct Bodycrypt_smime_build_smime_entity (struct Body *a, char *certlist)
 Wrapper for CryptModuleSpecs::smime_build_smime_entity() More...
 
void crypt_smime_invoke_import (char *infile, char *mailbox)
 Wrapper for CryptModuleSpecs::smime_invoke_import() More...
 
int crypt_smime_verify_one (struct Body *sigbdy, struct State *s, const char *tempf)
 Wrapper for CryptModuleSpecs::verify_one() More...
 
int crypt_smime_send_menu (struct Email *e)
 Wrapper for CryptModuleSpecs::send_menu() More...
 
void crypt_smime_set_sender (const char *sender)
 Wrapper for CryptModuleSpecs::set_sender() More...
 

Variables

bool C_CryptUseGpgme
 Config: Use GPGME crypto backend. More...
 
struct CryptModuleSpecs CryptModPgpClassic
 CLI PGP - Implements CryptModuleSpecs. More...
 
struct CryptModuleSpecs CryptModSmimeClassic
 CLI SMIME - Implements CryptModuleSpecs. More...
 

Detailed Description

Wrapper around crypto functions.

Authors
  • Werner Koch
  • g10 Code GmbH
  • Pietro Cerutti

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file cryptglue.c.

Macro Definition Documentation

◆ CRYPT_MOD_CALL_CHECK

#define CRYPT_MOD_CALL_CHECK (   identifier,
  func 
)
Value:
(crypto_module_lookup(APPLICATION_##identifier) && \
(crypto_module_lookup(APPLICATION_##identifier))->func)
struct CryptModuleSpecs * crypto_module_lookup(int identifier)
Lookup a crypto module by name.
Definition: crypt_mod.c:65

Definition at line 78 of file cryptglue.c.

◆ CRYPT_MOD_CALL

#define CRYPT_MOD_CALL (   identifier,
  func 
)    (*(crypto_module_lookup(APPLICATION_##identifier))->func)

Definition at line 84 of file cryptglue.c.

Function Documentation

◆ crypt_init()

void crypt_init ( void  )

Initialise the crypto backends.

This calls CryptModuleSpecs::init()

Definition at line 92 of file cryptglue.c.

93 {
94 #ifdef CRYPT_BACKEND_CLASSIC_PGP
95  if (
96 #ifdef CRYPT_BACKEND_GPGME
98 #else
99  1
100 #endif
101  )
103 #endif
104 
105 #ifdef CRYPT_BACKEND_CLASSIC_SMIME
106  if (
107 #ifdef CRYPT_BACKEND_GPGME
108  (!C_CryptUseGpgme)
109 #else
110  1
111 #endif
112  )
114 #endif
115 
116  if (C_CryptUseGpgme)
117  {
118 #ifdef CRYPT_BACKEND_GPGME
121 #else
122  mutt_message(_("\"crypt_use_gpgme\" set"
123  " but not built with GPGME support"));
124  if (mutt_any_key_to_continue(NULL) == -1)
125  mutt_exit(1);
126 #endif
127  }
128 
129 #if defined(CRYPT_BACKEND_CLASSIC_PGP) || \
130  defined(CRYPT_BACKEND_CLASSIC_SMIME) || defined(CRYPT_BACKEND_GPGME)
131  if (CRYPT_MOD_CALL_CHECK(PGP, init))
132  CRYPT_MOD_CALL(PGP, init)();
133 
134  if (CRYPT_MOD_CALL_CHECK(SMIME, init))
135  CRYPT_MOD_CALL(SMIME, init)();
136 #endif
137 }
struct CryptModuleSpecs CryptModPgpGpgme
GPGME PGP - Implements CryptModuleSpecs.
#define mutt_message(...)
Definition: logging.h:83
bool C_CryptUseGpgme
Config: Use GPGME crypto backend.
Definition: cryptglue.c:56
#define _(a)
Definition: message.h:28
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
void crypto_module_register(struct CryptModuleSpecs *specs)
Register a new crypto module.
Definition: crypt_mod.c:51
struct CryptModuleSpecs CryptModSmimeClassic
CLI SMIME - Implements CryptModuleSpecs.
struct CryptModuleSpecs CryptModPgpClassic
CLI PGP - Implements CryptModuleSpecs.
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
void mutt_exit(int code)
Leave NeoMutt NOW.
Definition: main.c:210
int mutt_any_key_to_continue(const char *s)
Prompt the user to &#39;press any key&#39; and wait.
Definition: curs_lib.c:532
struct CryptModuleSpecs CryptModSmimeGpgme
GPGME SMIME - Implements CryptModuleSpecs.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_invoke_message()

void crypt_invoke_message ( SecurityFlags  type)

Display an informative message.

Parameters
typeCrypto type, see SecurityFlags

Show a message that a backend will be invoked.

Definition at line 145 of file cryptglue.c.

146 {
147  if (((WithCrypto & APPLICATION_PGP) != 0) && (type & APPLICATION_PGP))
148  mutt_message(_("Invoking PGP..."));
149  else if (((WithCrypto & APPLICATION_SMIME) != 0) && (type & APPLICATION_SMIME))
150  mutt_message(_("Invoking S/MIME..."));
151 }
#define mutt_message(...)
Definition: logging.h:83
#define _(a)
Definition: message.h:28
#define APPLICATION_PGP
Use PGP to encrypt/sign.
Definition: ncrypt.h:134
#define WithCrypto
Definition: ncrypt.h:160
#define APPLICATION_SMIME
Use SMIME to encrypt/sign.
Definition: ncrypt.h:135
+ Here is the caller graph for this function:

◆ crypt_has_module_backend()

bool crypt_has_module_backend ( SecurityFlags  type)

Is there a crypto backend for a given type?

Parameters
typeCrypto type, see SecurityFlags
Return values
trueBackend is present
falseBackend is not present

Definition at line 159 of file cryptglue.c.

160 {
161  if (((WithCrypto & APPLICATION_PGP) != 0) && (type & APPLICATION_PGP) &&
162  crypto_module_lookup(APPLICATION_PGP))
163  {
164  return true;
165  }
166 
167  if (((WithCrypto & APPLICATION_SMIME) != 0) && (type & APPLICATION_SMIME) &&
168  crypto_module_lookup(APPLICATION_SMIME))
169  {
170  return true;
171  }
172 
173  return false;
174 }
struct CryptModuleSpecs * crypto_module_lookup(int identifier)
Lookup a crypto module by name.
Definition: crypt_mod.c:65
#define APPLICATION_PGP
Use PGP to encrypt/sign.
Definition: ncrypt.h:134
#define WithCrypto
Definition: ncrypt.h:160
#define APPLICATION_SMIME
Use SMIME to encrypt/sign.
Definition: ncrypt.h:135
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_pgp_void_passphrase()

void crypt_pgp_void_passphrase ( void  )

Wrapper for CryptModuleSpecs::void_passphrase()

Definition at line 179 of file cryptglue.c.

180 {
181  if (CRYPT_MOD_CALL_CHECK(PGP, void_passphrase))
182  CRYPT_MOD_CALL(PGP, void_passphrase)();
183 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_valid_passphrase()

bool crypt_pgp_valid_passphrase ( void  )

Wrapper for CryptModuleSpecs::valid_passphrase()

Definition at line 188 of file cryptglue.c.

189 {
190  if (CRYPT_MOD_CALL_CHECK(PGP, valid_passphrase))
191  return CRYPT_MOD_CALL(PGP, valid_passphrase)();
192 
193  return false;
194 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_decrypt_mime()

int crypt_pgp_decrypt_mime ( FILE *  fp_in,
FILE **  fp_out,
struct Body b,
struct Body **  cur 
)

Wrapper for CryptModuleSpecs::decrypt_mime()

Definition at line 199 of file cryptglue.c.

200 {
201 #ifdef USE_AUTOCRYPT
202  if (C_Autocrypt)
203  {
204  OptAutocryptGpgme = true;
205  int result = pgp_gpgme_decrypt_mime(fp_in, fp_out, b, cur);
206  OptAutocryptGpgme = false;
207  if (result == 0)
208  {
209  b->is_autocrypt = true;
210  return result;
211  }
212  }
213 #endif
214 
215  if (CRYPT_MOD_CALL_CHECK(PGP, decrypt_mime))
216  return CRYPT_MOD_CALL(PGP, decrypt_mime)(fp_in, fp_out, b, cur);
217 
218  return -1;
219 }
WHERE bool C_Autocrypt
Config: Enables the Autocrypt feature.
Definition: globals.h:205
bool is_autocrypt
Flag autocrypt-decrypted messages for replying.
Definition: body.h:85
WHERE bool OptAutocryptGpgme
(pseudo) use Autocrypt context inside ncrypt/crypt_gpgme.c
Definition: options.h:32
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
int pgp_gpgme_decrypt_mime(FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur)
Implements CryptModuleSpecs::decrypt_mime()
Definition: crypt_gpgme.c:2351
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_pgp_application_handler()

int crypt_pgp_application_handler ( struct Body m,
struct State s 
)

Wrapper for CryptModuleSpecs::application_handler()

Implements handler_t

Definition at line 226 of file cryptglue.c.

227 {
228  if (CRYPT_MOD_CALL_CHECK(PGP, application_handler))
229  return CRYPT_MOD_CALL(PGP, application_handler)(m, s);
230 
231  return -1;
232 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_encrypted_handler()

int crypt_pgp_encrypted_handler ( struct Body a,
struct State s 
)

Wrapper for CryptModuleSpecs::encrypted_handler()

Implements handler_t

Definition at line 239 of file cryptglue.c.

240 {
241 #ifdef USE_AUTOCRYPT
242  if (C_Autocrypt)
243  {
244  OptAutocryptGpgme = true;
245  int result = pgp_gpgme_encrypted_handler(a, s);
246  OptAutocryptGpgme = false;
247  if (result == 0)
248  {
249  a->is_autocrypt = true;
250  return result;
251  }
252  }
253 #endif
254 
255  if (CRYPT_MOD_CALL_CHECK(PGP, encrypted_handler))
256  return CRYPT_MOD_CALL(PGP, encrypted_handler)(a, s);
257 
258  return -1;
259 }
WHERE bool C_Autocrypt
Config: Enables the Autocrypt feature.
Definition: globals.h:205
bool is_autocrypt
Flag autocrypt-decrypted messages for replying.
Definition: body.h:85
WHERE bool OptAutocryptGpgme
(pseudo) use Autocrypt context inside ncrypt/crypt_gpgme.c
Definition: options.h:32
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
int pgp_gpgme_encrypted_handler(struct Body *a, struct State *s)
Implements CryptModuleSpecs::encrypted_handler()
Definition: crypt_gpgme.c:3197
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_pgp_invoke_getkeys()

void crypt_pgp_invoke_getkeys ( struct Address addr)

Wrapper for CryptModuleSpecs::pgp_invoke_getkeys()

Definition at line 264 of file cryptglue.c.

265 {
266  if (CRYPT_MOD_CALL_CHECK(PGP, pgp_invoke_getkeys))
267  CRYPT_MOD_CALL(PGP, pgp_invoke_getkeys)(addr);
268 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_check_traditional()

int crypt_pgp_check_traditional ( FILE *  fp,
struct Body b,
bool  just_one 
)

Wrapper for CryptModuleSpecs::pgp_check_traditional()

Definition at line 273 of file cryptglue.c.

274 {
275  if (CRYPT_MOD_CALL_CHECK(PGP, pgp_check_traditional))
276  return CRYPT_MOD_CALL(PGP, pgp_check_traditional)(fp, b, just_one);
277 
278  return 0;
279 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_traditional_encryptsign()

struct Body* crypt_pgp_traditional_encryptsign ( struct Body a,
int  flags,
char *  keylist 
)

Wrapper for CryptModuleSpecs::pgp_traditional_encryptsign()

Definition at line 284 of file cryptglue.c.

285 {
286  if (CRYPT_MOD_CALL_CHECK(PGP, pgp_traditional_encryptsign))
287  return CRYPT_MOD_CALL(PGP, pgp_traditional_encryptsign)(a, flags, keylist);
288 
289  return NULL;
290 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_make_key_attachment()

struct Body* crypt_pgp_make_key_attachment ( void  )

Wrapper for CryptModuleSpecs::pgp_make_key_attachment()

Definition at line 295 of file cryptglue.c.

296 {
297  if (CRYPT_MOD_CALL_CHECK(PGP, pgp_make_key_attachment))
298  return CRYPT_MOD_CALL(PGP, pgp_make_key_attachment)();
299 
300  return NULL;
301 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_find_keys()

char* crypt_pgp_find_keys ( struct AddressList *  addrlist,
bool  oppenc_mode 
)

Wrapper for CryptModuleSpecs::find_keys()

Definition at line 306 of file cryptglue.c.

307 {
309  return CRYPT_MOD_CALL(PGP, find_keys)(addrlist, oppenc_mode);
310 
311  return NULL;
312 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
static char * find_keys(struct AddressList *addrlist, unsigned int app, bool oppenc_mode)
Find keys of the recipients of the message.
Definition: crypt_gpgme.c:5169
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_pgp_sign_message()

struct Body* crypt_pgp_sign_message ( struct Body a)

Wrapper for CryptModuleSpecs::sign_message()

Definition at line 317 of file cryptglue.c.

318 {
320  return CRYPT_MOD_CALL(PGP, sign_message)(a);
321 
322  return NULL;
323 }
static struct Body * sign_message(struct Body *a, bool use_smime)
Sign a message.
Definition: crypt_gpgme.c:1398
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_pgp_encrypt_message()

struct Body* crypt_pgp_encrypt_message ( struct Email e,
struct Body a,
char *  keylist,
int  sign 
)

Wrapper for CryptModuleSpecs::pgp_encrypt_message()

Definition at line 328 of file cryptglue.c.

329 {
330 #ifdef USE_AUTOCRYPT
331  if (e->security & SEC_AUTOCRYPT)
332  {
334  return NULL;
335 
336  OptAutocryptGpgme = true;
337  struct Body *result = pgp_gpgme_encrypt_message(a, keylist, sign);
338  OptAutocryptGpgme = false;
339 
340  return result;
341  }
342 #endif
343 
344  if (CRYPT_MOD_CALL_CHECK(PGP, pgp_encrypt_message))
345  return CRYPT_MOD_CALL(PGP, pgp_encrypt_message)(a, keylist, sign);
346 
347  return NULL;
348 }
#define SEC_AUTOCRYPT
Message will be, or was Autocrypt encrypt+signed.
Definition: ncrypt.h:131
WHERE bool OptAutocryptGpgme
(pseudo) use Autocrypt context inside ncrypt/crypt_gpgme.c
Definition: options.h:32
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
The body of an email.
Definition: body.h:34
int mutt_autocrypt_set_sign_as_default_key(struct Email *e)
Set the Autocrypt default key for signing.
Definition: autocrypt.c:675
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
SecurityFlags security
bit 0-10: flags, bit 11,12: application, bit 13: traditional pgp See: ncrypt/ncrypt.h pgplib.h, smime.h
Definition: email.h:41
struct Body * pgp_gpgme_encrypt_message(struct Body *a, char *keylist, bool sign)
Implements CryptModuleSpecs::pgp_encrypt_message()
Definition: crypt_gpgme.c:1535
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_pgp_invoke_import()

void crypt_pgp_invoke_import ( const char *  fname)

Wrapper for CryptModuleSpecs::pgp_invoke_import()

Definition at line 353 of file cryptglue.c.

354 {
355  if (CRYPT_MOD_CALL_CHECK(PGP, pgp_invoke_import))
356  CRYPT_MOD_CALL(PGP, pgp_invoke_import)(fname);
357 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_verify_one()

int crypt_pgp_verify_one ( struct Body sigbdy,
struct State s,
const char *  tempf 
)

Wrapper for CryptModuleSpecs::verify_one()

Definition at line 362 of file cryptglue.c.

363 {
365  return CRYPT_MOD_CALL(PGP, verify_one)(sigbdy, s, tempf);
366 
367  return -1;
368 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
static int verify_one(struct Body *sigbdy, struct State *s, const char *tempfile, bool is_smime)
Do the actual verification step.
Definition: crypt_gpgme.c:2040
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_pgp_send_menu()

int crypt_pgp_send_menu ( struct Email e)

Wrapper for CryptModuleSpecs::send_menu()

Definition at line 373 of file cryptglue.c.

374 {
375  if (CRYPT_MOD_CALL_CHECK(PGP, send_menu))
376  return CRYPT_MOD_CALL(PGP, send_menu)(e);
377 
378  return 0;
379 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_extract_key_from_attachment()

void crypt_pgp_extract_key_from_attachment ( FILE *  fp,
struct Body top 
)

Wrapper for CryptModuleSpecs::pgp_extract_key_from_attachment()

Definition at line 384 of file cryptglue.c.

385 {
386  if (CRYPT_MOD_CALL_CHECK(PGP, pgp_extract_key_from_attachment))
387  CRYPT_MOD_CALL(PGP, pgp_extract_key_from_attachment)(fp, top);
388 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_pgp_set_sender()

void crypt_pgp_set_sender ( const char *  sender)

Wrapper for CryptModuleSpecs::set_sender()

Definition at line 393 of file cryptglue.c.

394 {
395  if (CRYPT_MOD_CALL_CHECK(PGP, set_sender))
396  CRYPT_MOD_CALL(PGP, set_sender)(sender);
397 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_void_passphrase()

void crypt_smime_void_passphrase ( void  )

Wrapper for CryptModuleSpecs::void_passphrase()

Definition at line 402 of file cryptglue.c.

403 {
404  if (CRYPT_MOD_CALL_CHECK(SMIME, void_passphrase))
405  CRYPT_MOD_CALL(SMIME, void_passphrase)();
406 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_valid_passphrase()

bool crypt_smime_valid_passphrase ( void  )

Wrapper for CryptModuleSpecs::valid_passphrase()

Definition at line 411 of file cryptglue.c.

412 {
413  if (CRYPT_MOD_CALL_CHECK(SMIME, valid_passphrase))
414  return CRYPT_MOD_CALL(SMIME, valid_passphrase)();
415 
416  return false;
417 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_decrypt_mime()

int crypt_smime_decrypt_mime ( FILE *  fp_in,
FILE **  fp_out,
struct Body b,
struct Body **  cur 
)

Wrapper for CryptModuleSpecs::decrypt_mime()

Definition at line 422 of file cryptglue.c.

423 {
424  if (CRYPT_MOD_CALL_CHECK(SMIME, decrypt_mime))
425  return CRYPT_MOD_CALL(SMIME, decrypt_mime)(fp_in, fp_out, b, cur);
426 
427  return -1;
428 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_application_handler()

int crypt_smime_application_handler ( struct Body m,
struct State s 
)

Wrapper for CryptModuleSpecs::application_handler()

Implements handler_t

Definition at line 435 of file cryptglue.c.

436 {
437  if (CRYPT_MOD_CALL_CHECK(SMIME, application_handler))
438  return CRYPT_MOD_CALL(SMIME, application_handler)(m, s);
439 
440  return -1;
441 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_encrypted_handler()

void crypt_smime_encrypted_handler ( struct Body a,
struct State s 
)

Wrapper for CryptModuleSpecs::encrypted_handler()

Definition at line 446 of file cryptglue.c.

447 {
448  if (CRYPT_MOD_CALL_CHECK(SMIME, encrypted_handler))
449  CRYPT_MOD_CALL(SMIME, encrypted_handler)(a, s);
450 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78

◆ crypt_smime_getkeys()

void crypt_smime_getkeys ( struct Envelope env)

Wrapper for CryptModuleSpecs::smime_getkeys()

Definition at line 455 of file cryptglue.c.

456 {
457  if (CRYPT_MOD_CALL_CHECK(SMIME, smime_getkeys))
458  CRYPT_MOD_CALL(SMIME, smime_getkeys)(env);
459 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_verify_sender()

int crypt_smime_verify_sender ( struct Mailbox m,
struct Email e 
)

Wrapper for CryptModuleSpecs::smime_verify_sender()

Definition at line 464 of file cryptglue.c.

465 {
466  if (CRYPT_MOD_CALL_CHECK(SMIME, smime_verify_sender))
467  return CRYPT_MOD_CALL(SMIME, smime_verify_sender)(m, e);
468 
469  return 1;
470 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_find_keys()

char* crypt_smime_find_keys ( struct AddressList *  addrlist,
bool  oppenc_mode 
)

Wrapper for CryptModuleSpecs::find_keys()

Definition at line 475 of file cryptglue.c.

476 {
477  if (CRYPT_MOD_CALL_CHECK(SMIME, find_keys))
478  return CRYPT_MOD_CALL(SMIME, find_keys)(addrlist, oppenc_mode);
479 
480  return NULL;
481 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
static char * find_keys(struct AddressList *addrlist, unsigned int app, bool oppenc_mode)
Find keys of the recipients of the message.
Definition: crypt_gpgme.c:5169
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_smime_sign_message()

struct Body* crypt_smime_sign_message ( struct Body a)

Wrapper for CryptModuleSpecs::sign_message()

Definition at line 486 of file cryptglue.c.

487 {
489  return CRYPT_MOD_CALL(SMIME, sign_message)(a);
490 
491  return NULL;
492 }
static struct Body * sign_message(struct Body *a, bool use_smime)
Sign a message.
Definition: crypt_gpgme.c:1398
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_smime_build_smime_entity()

struct Body* crypt_smime_build_smime_entity ( struct Body a,
char *  certlist 
)

Wrapper for CryptModuleSpecs::smime_build_smime_entity()

Definition at line 497 of file cryptglue.c.

498 {
499  if (CRYPT_MOD_CALL_CHECK(SMIME, smime_build_smime_entity))
500  return CRYPT_MOD_CALL(SMIME, smime_build_smime_entity)(a, certlist);
501 
502  return NULL;
503 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_invoke_import()

void crypt_smime_invoke_import ( char *  infile,
char *  mailbox 
)

Wrapper for CryptModuleSpecs::smime_invoke_import()

Definition at line 508 of file cryptglue.c.

509 {
510  if (CRYPT_MOD_CALL_CHECK(SMIME, smime_invoke_import))
511  CRYPT_MOD_CALL(SMIME, smime_invoke_import)(infile, mailbox);
512 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_verify_one()

int crypt_smime_verify_one ( struct Body sigbdy,
struct State s,
const char *  tempf 
)

Wrapper for CryptModuleSpecs::verify_one()

Definition at line 517 of file cryptglue.c.

518 {
519  if (CRYPT_MOD_CALL_CHECK(SMIME, verify_one))
520  return CRYPT_MOD_CALL(SMIME, verify_one)(sigbdy, s, tempf);
521 
522  return -1;
523 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
static int verify_one(struct Body *sigbdy, struct State *s, const char *tempfile, bool is_smime)
Do the actual verification step.
Definition: crypt_gpgme.c:2040
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crypt_smime_send_menu()

int crypt_smime_send_menu ( struct Email e)

Wrapper for CryptModuleSpecs::send_menu()

Definition at line 528 of file cryptglue.c.

529 {
530  if (CRYPT_MOD_CALL_CHECK(SMIME, send_menu))
531  return CRYPT_MOD_CALL(SMIME, send_menu)(e);
532 
533  return 0;
534 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

◆ crypt_smime_set_sender()

void crypt_smime_set_sender ( const char *  sender)

Wrapper for CryptModuleSpecs::set_sender()

Definition at line 539 of file cryptglue.c.

540 {
541  if (CRYPT_MOD_CALL_CHECK(SMIME, set_sender))
542  CRYPT_MOD_CALL(SMIME, set_sender)(sender);
543 }
#define CRYPT_MOD_CALL(identifier, func)
Definition: cryptglue.c:84
#define CRYPT_MOD_CALL_CHECK(identifier, func)
Definition: cryptglue.c:78
+ Here is the caller graph for this function:

Variable Documentation

◆ C_CryptUseGpgme

bool C_CryptUseGpgme

Config: Use GPGME crypto backend.

Definition at line 56 of file cryptglue.c.

◆ CryptModPgpClassic

struct CryptModuleSpecs CryptModPgpClassic

CLI PGP - Implements CryptModuleSpecs.

Definition at line 43 of file crypt_mod_pgp_classic.c.

◆ CryptModSmimeClassic

struct CryptModuleSpecs CryptModSmimeClassic

CLI SMIME - Implements CryptModuleSpecs.

Definition at line 41 of file crypt_mod_smime_classic.c.