mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 21:54:10 +01:00
crypto: refactor context creation to facilitate further work
Let the context creation functions decide how to handle multiple calls and cache the crypto context. No functional changes.
This commit is contained in:
parent
a9fec12a08
commit
4419069472
1 changed files with 10 additions and 9 deletions
19
crypto.c
19
crypto.c
|
@ -22,14 +22,20 @@
|
||||||
|
|
||||||
/* Create a GPG context (GMime 2.6) */
|
/* Create a GPG context (GMime 2.6) */
|
||||||
static notmuch_crypto_context_t *
|
static notmuch_crypto_context_t *
|
||||||
create_gpg_context (const char *gpgpath)
|
create_gpg_context (notmuch_crypto_t *crypto)
|
||||||
{
|
{
|
||||||
notmuch_crypto_context_t *gpgctx;
|
notmuch_crypto_context_t *gpgctx;
|
||||||
|
|
||||||
|
if (crypto->gpgctx)
|
||||||
|
return crypto->gpgctx;
|
||||||
|
|
||||||
/* TODO: GMimePasswordRequestFunc */
|
/* TODO: GMimePasswordRequestFunc */
|
||||||
gpgctx = g_mime_gpg_context_new (NULL, gpgpath ? gpgpath : "gpg");
|
gpgctx = g_mime_gpg_context_new (NULL, crypto->gpgpath ? crypto->gpgpath : "gpg");
|
||||||
if (! gpgctx)
|
if (! gpgctx) {
|
||||||
|
fprintf (stderr, "Failed to construct gpg context.\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
crypto->gpgctx = gpgctx;
|
||||||
|
|
||||||
g_mime_gpg_context_set_use_agent ((GMimeGpgContext *) gpgctx, TRUE);
|
g_mime_gpg_context_set_use_agent ((GMimeGpgContext *) gpgctx, TRUE);
|
||||||
g_mime_gpg_context_set_always_trust ((GMimeGpgContext *) gpgctx, FALSE);
|
g_mime_gpg_context_set_always_trust ((GMimeGpgContext *) gpgctx, FALSE);
|
||||||
|
@ -57,12 +63,7 @@ notmuch_crypto_get_context (notmuch_crypto_t *crypto, const char *protocol)
|
||||||
*/
|
*/
|
||||||
if (strcasecmp (protocol, "application/pgp-signature") == 0 ||
|
if (strcasecmp (protocol, "application/pgp-signature") == 0 ||
|
||||||
strcasecmp (protocol, "application/pgp-encrypted") == 0) {
|
strcasecmp (protocol, "application/pgp-encrypted") == 0) {
|
||||||
if (! crypto->gpgctx) {
|
cryptoctx = create_gpg_context (crypto);
|
||||||
crypto->gpgctx = create_gpg_context (crypto->gpgpath);
|
|
||||||
if (! crypto->gpgctx)
|
|
||||||
fprintf (stderr, "Failed to construct gpg context.\n");
|
|
||||||
}
|
|
||||||
cryptoctx = crypto->gpgctx;
|
|
||||||
} else {
|
} else {
|
||||||
fprintf (stderr, "Unknown or unsupported cryptographic protocol.\n");
|
fprintf (stderr, "Unknown or unsupported cryptographic protocol.\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue