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 */ | 
