From d5f612e9685d18313d445799a19ff83e013f1b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Tue, 6 Aug 2024 15:32:20 +0200 Subject: cpp: Add support for setting owner trust and for disabling keys * lang/cpp/src/context.cpp, lang/cpp/src/context.h (class Context): Add member functions setOwnerTrust, startSetOwnerTrust, setKeyEnabled, startSetKeyEnabled. * lang/cpp/src/context.cpp (owner_trust_to_string): New. -- GnuPG-bug-id: 7239 --- lang/cpp/src/context.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'lang/cpp/src/context.cpp') diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index 8150d08b..7a0fb23f 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -1767,6 +1767,51 @@ Error Context::startSetExpire(const Key &k, unsigned long expires, k.impl(), expires, subfprs.c_str(), 0)); } +static const char *owner_trust_to_string(Key::OwnerTrust trust) +{ + static const char *const owner_trust_strings[] = { + "undefined", // --quick-set-ownertrust wants "undefined" for Unknown + "undefined", // Undefined is never used for key->owner_trust + "never", + "marginal", + "full", + "ultimate", + }; + + if (Key::OwnerTrust::Unknown <= trust && trust <= Key::OwnerTrust::Ultimate) { + return owner_trust_strings[trust]; + } + return nullptr; +} + +Error Context::setOwnerTrust(const Key &key, Key::OwnerTrust trust) +{ + d->lasterr = gpgme_op_setownertrust(d->ctx, key.impl(), + owner_trust_to_string(trust)); + return Error(d->lasterr); +} + +Error Context::startSetOwnerTrust(const Key &key, Key::OwnerTrust trust) +{ + d->lasterr = gpgme_op_setownertrust_start(d->ctx, key.impl(), + owner_trust_to_string(trust)); + return Error(d->lasterr); +} + +Error Context::setKeyEnabled(const Key &key, bool enabled) +{ + d->lasterr = gpgme_op_setownertrust(d->ctx, key.impl(), + enabled ? "enable" : "disable"); + return Error(d->lasterr); +} + +Error Context::startSetKeyEnabled(const Key &key, bool enabled) +{ + d->lasterr = gpgme_op_setownertrust_start(d->ctx, key.impl(), + enabled ? "enable" : "disable"); + return Error(d->lasterr); +} + static std::string getLFSeparatedListOfUserIds(const std::vector &userIds) { if (userIds.empty()) { -- cgit v1.2.3