aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r--src/engine-gpg.c38
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)