diff options
Diffstat (limited to '')
| -rw-r--r-- | lang/cpp/src/context.cpp | 45 | ||||
| -rw-r--r-- | lang/cpp/src/context.h | 22 | 
2 files changed, 67 insertions, 0 deletions
| 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<UserID> &userIds)  {      if (userIds.empty()) { diff --git a/lang/cpp/src/context.h b/lang/cpp/src/context.h index c4f968f4..e2c73b64 100644 --- a/lang/cpp/src/context.h +++ b/lang/cpp/src/context.h @@ -319,6 +319,28 @@ public:                           const std::vector<Subkey> &subkeys = std::vector<Subkey>(),                           const SetExpireFlags flags = SetExpireDefault); +    /** +     * Sets the owner trust of the key \a key to the value \a trust. +     * Requires gpg 2.4.6. +     */ +    Error setOwnerTrust(const Key &key, Key::OwnerTrust trust); +    /** +     * Starts the operation to set the owner trust of the key \a key to the value \a trust. +     * Requires gpg 2.4.6. +     */ +    Error startSetOwnerTrust(const Key &key, Key::OwnerTrust trust); + +    /** +     * Enables or disables the key \a key. +     * Requires gpg 2.4.6. +     */ +    Error setKeyEnabled(const Key &key, bool enabled); +    /** +     * Starts the operation to enable or disable the key \a key. +     * Requires gpg 2.4.6. +     */ +    Error startSetKeyEnabled(const Key &key, bool enabled); +      Error revokeSignature(const Key &key, const Key &signingKey,                            const std::vector<UserID> &userIds = std::vector<UserID>());      Error startRevokeSignature(const Key &key, const Key &signingKey, | 
