cpp: Add support for gpgme_op_tofu_policy
authorAndre Heinecke <aheinecke@intevation.de>
Fri, 16 Sep 2016 14:54:07 +0000 (16:54 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Fri, 16 Sep 2016 14:58:39 +0000 (16:58 +0200)
* src/context.cpp, src/context.h (setTofuPolicy, setTofuPolicyStart):
New.

lang/cpp/src/context.cpp
lang/cpp/src/context.h

index 1e134a0..00f397b 100644 (file)
@@ -41,6 +41,7 @@
 #include "data_p.h"
 #include "context_p.h"
 #include "util.h"
+#include "tofuinfo.h"
 
 #include <gpgme.h>
 
@@ -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,
index f5e2b95..b1e4f5f 100644 (file)
@@ -214,6 +214,10 @@ public:
     GpgME::Error edit(const Key &key, std::unique_ptr<EditInteractor> function, Data &out);
     GpgME::Error startEditing(const Key &key, std::unique_ptr<EditInteractor> 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<EditInteractor> takeLastEditInteractor();