diff options
author | Andre Heinecke <[email protected]> | 2016-09-05 10:53:02 +0000 |
---|---|---|
committer | Andre Heinecke <[email protected]> | 2016-09-05 10:53:02 +0000 |
commit | 79439e76cc5b302222874a1f9e93665cb12801ac (patch) | |
tree | b7998459cd89adf858ee8725aefbd216d89fd26c /lang/cpp/src/key.cpp | |
parent | cpp: Add ostream operators for key and uid (diff) | |
download | gpgme-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.cpp | 22 |
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 |