diff options
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r-- | src/engine-gpg.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c index 318c0e35..0768ea74 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -144,6 +144,7 @@ struct engine_gpg char request_origin[10]; char *auto_key_locate; char *trust_model; + char **known_notations; struct { unsigned int use_gpgtar : 1; @@ -577,6 +578,7 @@ gpg_release (void *engine) free (gpg->cmd.keyword); free (gpg->auto_key_locate); free (gpg->trust_model); + free (gpg->known_notations); gpgme_data_release (gpg->override_session_key); gpgme_data_release (gpg->diagnostics); @@ -763,6 +765,18 @@ gpg_set_engine_flags (void *engine, const gpgme_ctx_t ctx) ctx->trust_model, NULL); } + if (ctx->known_notations) + { + free (gpg->known_notations); + gpg->known_notations = _gpgme_strtokenize (ctx->known_notations, + " \t,", 1); + /* Fixme: We have no way to return an error. However in this + * case one would just get the usual verification error as if + * that option has not been used. I think this is acceptable + * for now. */ + } + + gpg->flags.no_symkey_cache = (ctx->no_symkey_cache && have_gpg_version (gpg, "2.2.7")); gpg->flags.offline = (ctx->offline && have_gpg_version (gpg, "2.1.23")); @@ -1892,6 +1906,24 @@ add_input_size_hint (engine_gpg_t gpg, gpgme_data_t data) } +/* Add the --known_notations option if requested. */ +static gpgme_error_t +add_known_notations (engine_gpg_t gpg) +{ + gpg_error_t err = 0; + int i; + const char *s; + + if (gpg->known_notations) + { + for (i=0; !err && (s=gpg->known_notations[i]); i++) + if (*s) + err = add_gpg_arg_with_value (gpg, "--known-notation=", s, 0); + } + return err; +} + + static gpgme_error_t gpg_decrypt (void *engine, gpgme_decrypt_flags_t flags, @@ -1929,6 +1961,9 @@ gpg_decrypt (void *engine, if (!err && gpg->flags.auto_key_import) err = add_gpg_arg (gpg, "--auto-key-import"); + if (!err) + err = add_known_notations (gpg); + if (!err && override_session_key && *override_session_key) { if (have_gpg_version (gpg, "2.1.16") && !gpg->flags.use_gpgtar) @@ -3927,6 +3962,9 @@ gpg_verify (void *engine, gpgme_verify_flags_t flags, gpgme_data_t sig, if (!err && ctx->auto_key_retrieve) err = add_gpg_arg (gpg, "--auto-key-retrieve"); + if (!err) + err = add_known_notations (gpg); + if (err) ; else if (gpg->flags.use_gpgtar) |