diff options
author | Ingo Klöcker <[email protected]> | 2024-08-05 15:14:01 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2024-08-06 10:43:28 +0000 |
commit | d804a7a4bc871f38f6cdc2cd63af3ef004580437 (patch) | |
tree | 0d2343771232ee2f761b19471837b1726bf4f341 /src/engine-gpg.c | |
parent | w32: Use UTF-8 for localized error descriptions for all threads (diff) | |
download | gpgme-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.c | 33 |
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 */ |