From 4d384d7bfef044094695271576ca233625bb520a Mon Sep 17 00:00:00 2001 From: Andre Heinecke Date: Fri, 16 Sep 2016 16:54:07 +0200 Subject: [PATCH] cpp: Add support for gpgme_op_tofu_policy * src/context.cpp, src/context.h (setTofuPolicy, setTofuPolicyStart): New. --- lang/cpp/src/context.cpp | 31 +++++++++++++++++++++++++++++++ lang/cpp/src/context.h | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index 1e134a02..00f397b4 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -41,6 +41,7 @@ #include "data_p.h" #include "context_p.h" #include "util.h" +#include "tofuinfo.h" #include @@ -1329,6 +1330,36 @@ Error Context::setPinentryMode(PinentryMode which) return Error(d->lasterr = gpgme_set_pinentry_mode(d->ctx, mode)); } +static gpgme_tofu_policy_t to_tofu_policy_t(unsigned int policy) +{ + switch (policy) { + case TofuInfo::PolicyNone: + return GPGME_TOFU_POLICY_NONE; + case TofuInfo::PolicyAuto: + return GPGME_TOFU_POLICY_AUTO; + case TofuInfo::PolicyGood: + return GPGME_TOFU_POLICY_GOOD; + case TofuInfo::PolicyBad: + return GPGME_TOFU_POLICY_BAD; + case TofuInfo::PolicyAsk: + return GPGME_TOFU_POLICY_ASK; + case TofuInfo::PolicyUnknown: + return GPGME_TOFU_POLICY_UNKNOWN; + } +} + +Error Context::setTofuPolicy(const Key &k, unsigned int policy) +{ + return Error(d->lasterr = gpgme_op_tofu_policy(d->ctx, + k.impl(), to_tofu_policy_t(policy))); +} + +Error Context::setTofuPolicyStart(const Key &k, unsigned int policy) +{ + return Error(d->lasterr = gpgme_op_tofu_policy_start(d->ctx, + k.impl(), to_tofu_policy_t(policy))); +} + // Engine Spawn stuff Error Context::spawn(const char *file, const char *argv[], Data &input, Data &output, Data &err, diff --git a/lang/cpp/src/context.h b/lang/cpp/src/context.h index f5e2b958..b1e4f5ff 100644 --- a/lang/cpp/src/context.h +++ b/lang/cpp/src/context.h @@ -214,6 +214,10 @@ public: GpgME::Error edit(const Key &key, std::unique_ptr function, Data &out); GpgME::Error startEditing(const Key &key, std::unique_ptr function, Data &out); + // using TofuInfo::Policy + Error setTofuPolicy(const Key &k, unsigned int policy); + Error setTofuPolicyStart(const Key &k, unsigned int policy); + EditInteractor *lastEditInteractor() const; std::unique_ptr takeLastEditInteractor();