aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.c
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2021-06-22 14:23:26 +0000
committerIngo Klöcker <[email protected]>2021-06-22 14:35:03 +0000
commit34d9defc42bacfaf2bb1ce70b2c3f0fdf0a106c3 (patch)
treeb643534e981ba4326e0a451ecaa8e08f1d51cfe7 /src/engine-gpg.c
parentUpdate NEWS. (diff)
downloadgpgme-34d9defc42bacfaf2bb1ce70b2c3f0fdf0a106c3.tar.gz
gpgme-34d9defc42bacfaf2bb1ce70b2c3f0fdf0a106c3.zip
core: Allow specifying an expiration date for key signatures
* src/context.h (struct gpgme_context): Add 'cert_expire'. * src/engine-gpg.c (append_args_from_cert_expire): New. (gpg_edit): Set option according to the new flag. * src/gpgme.c (gpgme_release): Free 'cert_expire'. (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "cert-expire". * tests/gpg/Makefile.am (c_tests): Add new test. (gpg.conf): Write "allow-weak-key-signatures" to gpg.conf. * tests/gpg/t-edit-sign.c: New. -- The new context flag "cert-expire" allows setting the expiration date for key signatures created with gpgme_op_interact. GnuPG-bug-id: 5336, 5505
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r--src/engine-gpg.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 969abab6..b51ea173 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -1961,6 +1961,27 @@ append_args_from_sig_notations (engine_gpg_t gpg, gpgme_ctx_t ctx /* FIXME */,
static gpgme_error_t
+append_args_from_cert_expire (engine_gpg_t gpg, gpgme_ctx_t ctx)
+{
+ gpgme_error_t err;
+
+ if (ctx->cert_expire)
+ {
+ /* Override ask-cert-expire set in the configuration, so that the specified
+ * default is actually used. */
+ err = add_arg (gpg, "--no-ask-cert-expire");
+ if (!err)
+ err = add_arg (gpg, "--default-cert-expire");
+ if (!err)
+ err = add_arg (gpg, ctx->cert_expire);
+ }
+ else
+ err = 0;
+ return err;
+}
+
+
+static gpgme_error_t
gpg_edit (void *engine, int type, gpgme_key_t key, gpgme_data_t out,
gpgme_ctx_t ctx /* FIXME */)
{
@@ -1976,6 +1997,8 @@ gpg_edit (void *engine, int type, gpgme_key_t key, gpgme_data_t out,
if (!err)
err = append_args_from_sig_notations (gpg, ctx, NOTATION_FLAG_CERT);
if (!err)
+ err = append_args_from_cert_expire (gpg, ctx);
+ if (!err)
err = add_arg (gpg, type == 0 ? "--edit-key" : "--card-edit");
if (!err)
err = add_data (gpg, out, 1, 1);