aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2016-09-05 10:53:02 +0000
committerAndre Heinecke <[email protected]>2016-09-05 10:53:02 +0000
commit79439e76cc5b302222874a1f9e93665cb12801ac (patch)
treeb7998459cd89adf858ee8725aefbd216d89fd26c
parentcpp: Add ostream operators for key and uid (diff)
downloadgpgme-79439e76cc5b302222874a1f9e93665cb12801ac.tar.gz
gpgme-79439e76cc5b302222874a1f9e93665cb12801ac.zip
cpp: Add convenience update function to a key
* lang/cpp/src/key.cpp (Key::update): New. * lang/cpp/src/key.h: Update accordingly. -- This function helps if you have an incomplete key or want to make sure all info in a key is complete (e.g. validity / tofuinfo)
Diffstat (limited to '')
-rw-r--r--lang/cpp/src/key.cpp22
-rw-r--r--lang/cpp/src/key.h6
2 files changed, 28 insertions, 0 deletions
diff --git a/lang/cpp/src/key.cpp b/lang/cpp/src/key.cpp
index 204eeca2..cfa1ba31 100644
--- a/lang/cpp/src/key.cpp
+++ b/lang/cpp/src/key.cpp
@@ -24,6 +24,7 @@
#include "util.h"
#include "tofuinfo.h"
+#include "context.h"
#include <gpgme.h>
@@ -322,6 +323,27 @@ const Key &Key::mergeWith(const Key &other)
return *this;
}
+void Key::update()
+{
+ auto ctx = Context::createForProtocol(protocol());
+ if (!ctx) {
+ return;
+ }
+ ctx->setKeyListMode(KeyListMode::Local |
+ KeyListMode::Signatures |
+ KeyListMode::SignatureNotations |
+ KeyListMode::Validate |
+ KeyListMode::WithTofu);
+ Error err;
+ auto newKey = ctx->key(primaryFingerprint(), err, hasSecret());
+ delete ctx;
+ if (err) {
+ return;
+ }
+ swap(newKey);
+ return;
+}
+
//
//
// class Subkey
diff --git a/lang/cpp/src/key.h b/lang/cpp/src/key.h
index 85b16dfc..f193093c 100644
--- a/lang/cpp/src/key.h
+++ b/lang/cpp/src/key.h
@@ -146,6 +146,12 @@ public:
unsigned int keyListMode() const;
+ /*! Update information about this key.
+ * Starts a keylisting for this key with validity
+ * and tofu information gathering. Blocks for
+ * how long the keylisting takes.*/
+ void update();
+
private:
gpgme_key_t impl() const
{