cpp: Wrap create_key and create_subkey
authorAndre Heinecke <aheinecke@intevation.de>
Fri, 1 Dec 2017 12:21:34 +0000 (13:21 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Fri, 1 Dec 2017 12:21:34 +0000 (13:21 +0100)
* lang/cpp/src/context.cpp,
lang/cpp/src/context.h (Context::startCreateKey)
(Context::createKey, Context::createSubkey)
(Context::startCreateSubkey): New.

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

diff --git a/NEWS b/NEWS
index aee3f10..83c8f5f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,10 @@ Noteworthy changes in version 1.10.0 (unreleased)
  cpp: DecryptionResult::isDeVs         NEW.
  cpp: Signature::isDeVs                NEW.
  cpp: EngineInfo::Version::operator>   NEW.
+ cpp: Context::createKey               NEW.
+ cpp: Context::startCreateKey          NEW.
+ cpp: Context::createSubkey            NEW.
+ cpp: Context::startCreateSubkey       NEW.
  py: DecryptResult           EXTENDED: New boolean field 'is_de_vs'.
  py: Signature               EXTENDED: New boolean field 'is_de_vs'.
  py: GpgError                EXTENDED: Partial results in 'results'.
index 77962d8..135e4d5 100644 (file)
@@ -1404,6 +1404,38 @@ Error Context::setTofuPolicyStart(const Key &k, unsigned int policy)
                  k.impl(), to_tofu_policy_t(policy)));
 }
 
+Error Context::startCreateKey (const char *userid,
+                               const char *algo,
+                               unsigned long reserved,
+                               unsigned long expires,
+                               const Key &certkey,
+                               unsigned int flags)
+{
+    return Error(d->lasterr = gpgme_op_createkey_start(d->ctx,
+                 userid,
+                 algo,
+                 reserved,
+                 expires,
+                 certkey.impl(),
+                 flags));
+}
+
+Error Context::createKey (const char *userid,
+                          const char *algo,
+                          unsigned long reserved,
+                          unsigned long expires,
+                          const Key &certkey,
+                          unsigned int flags)
+{
+    return Error(d->lasterr = gpgme_op_createkey(d->ctx,
+                 userid,
+                 algo,
+                 reserved,
+                 expires,
+                 certkey.impl(),
+                 flags));
+}
+
 Error Context::addUid(const Key &k, const char *userid)
 {
     return Error(d->lasterr = gpgme_op_adduid(d->ctx,
@@ -1428,6 +1460,24 @@ Error Context::startRevUid(const Key &k, const char *userid)
                  k.impl(), userid, 0));
 }
 
+Error Context::createSubkey(const Key &k, const char *algo,
+                            unsigned long reserved,
+                            unsigned long expires,
+                            unsigned int flags)
+{
+    return Error(d->lasterr = gpgme_op_createsubkey(d->ctx,
+                 k.impl(), algo, reserved, expires, flags));
+}
+
+Error Context::startCreateSubkey(const Key &k, const char *algo,
+                                 unsigned long reserved,
+                                 unsigned long expires,
+                                 unsigned int flags)
+{
+    return Error(d->lasterr = gpgme_op_createsubkey_start(d->ctx,
+                 k.impl(), algo, reserved, expires, flags));
+}
+
 // Engine Spawn stuff
 Error Context::spawn(const char *file, const char *argv[],
                      Data &input, Data &output, Data &err,
index bec4e39..4cd5b30 100644 (file)
@@ -214,12 +214,38 @@ 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);
 
+
+    //
+    // Modern Interface actions. Require 2.1.x
+    //
+    Error startCreateKey (const char *userid,
+                          const char *algo,
+                          unsigned long reserved,
+                          unsigned long expires,
+                          const Key &certkey,
+                          unsigned int flags);
+    Error createKey (const char *userid,
+                     const char *algo,
+                     unsigned long reserved,
+                     unsigned long expires,
+                     const Key &certkey,
+                     unsigned int flags);
+
     Error addUid(const Key &key, const char *userid);
     Error startAddUid(const Key &key, const char *userid);
 
     Error revUid(const Key &key, const char *userid);
     Error startRevUid(const Key &key, const char *userid);
 
+    Error createSubkey(const Key &key, const char *algo,
+                       unsigned long reserved = 0,
+                       unsigned long expires = 0,
+                       unsigned int flags = 0);
+    Error startCreateSubkey(const Key &key, const char *algo,
+                            unsigned long reserved = 0,
+                            unsigned long expires = 0,
+                            unsigned int flags = 0);
+
     // using TofuInfo::Policy
     Error setTofuPolicy(const Key &k, unsigned int policy);
     Error setTofuPolicyStart(const Key &k, unsigned int policy);