aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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
{