aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.c
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2024-08-05 15:14:01 +0000
committerIngo Klöcker <[email protected]>2024-08-06 10:43:28 +0000
commitd804a7a4bc871f38f6cdc2cd63af3ef004580437 (patch)
tree0d2343771232ee2f761b19471837b1726bf4f341 /src/engine-gpg.c
parentw32: Use UTF-8 for localized error descriptions for all threads (diff)
downloadgpgme-d804a7a4bc871f38f6cdc2cd63af3ef004580437.tar.gz
gpgme-d804a7a4bc871f38f6cdc2cd63af3ef004580437.zip
core: New function gpgme_op_setownertrust
* src/Makefile.am (main_sources): Add new file. * src/context.h (ctx_op_data_id_t): Add OPDATA_SETOWNERTRUST. * src/engine.c, src/engine.h (_gpgme_engine_op_setownertrust): New. * src/engine-backend.h (engine_ops): Add 'setownertrust' and adjust all engine initializers. * src/engine-gpg.c (gpg_setownertrust): New. (_gpgme_engine_ops_gpg): Set setownertrust to gpg_setownertrust. * src/gpgme.h.in (gpgme_op_setownertrust_start, gpgme_op_setownertrust): New. * src/gpgme.def, src/libgpgme.vers: Add new functions. * src/setownertrust.c: New. * doc/gpgme.texi: Document new functions. * tests/Makefile.am (noinst_PROGRAMS): Add new test program. * tests/run-setownertrust.c: New. * tests/gpg/Makefile.am (c_tests): Add new file. (LDADD): Add @GPG_ERROR_LIBS@. * tests/gpg/t-setownertrust.c: New. * tests/gpg/t-support.h (have_gpg_version): New. -- This extends GPGME to support the --quick-set-ownertrust command added by GnuPG 2.4.6. This allows changing the owner trust of keys and enabling/disabling keys without using the editinteractor interface. GnuPG-bug-id: 7239
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r--src/engine-gpg.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 376dad0a..b099f566 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -4017,6 +4017,38 @@ gpg_setexpire (void *engine, gpgme_key_t key, unsigned long expires,
}
+static gpgme_error_t
+gpg_setownertrust (void *engine, gpgme_key_t key, const char *value)
+{
+ engine_gpg_t gpg = engine;
+ gpgme_error_t err;
+
+ if (!have_gpg_version (gpg, "2.4.6"))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
+ if (!key || !key->fpr)
+ return gpg_error (GPG_ERR_INV_VALUE);
+ if (!value || !*value)
+ return gpg_error (GPG_ERR_INV_VALUE);
+
+ err = add_arg (gpg, "--quick-set-ownertrust");
+
+ if (!err)
+ err = add_arg (gpg, "--");
+
+ if (!err)
+ err = add_arg (gpg, key->fpr);
+
+ if (!err)
+ err = add_arg (gpg, value);
+
+ if (!err)
+ err = start (gpg);
+
+ return err;
+}
+
+
struct engine_ops _gpgme_engine_ops_gpg =
{
@@ -4056,6 +4088,7 @@ struct engine_ops _gpgme_engine_ops_gpg =
gpg_verify,
gpg_getauditlog,
gpg_setexpire,
+ gpg_setownertrust,
NULL, /* opassuan_transact */
NULL, /* conf_load */
NULL, /* conf_save */