aboutsummaryrefslogtreecommitdiffstats
path: root/lang/cpp/src/key.cpp
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 /lang/cpp/src/key.cpp
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 'lang/cpp/src/key.cpp')
-rw-r--r--lang/cpp/src/key.cpp22
1 files changed, 22 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