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 | |
| 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')
| -rw-r--r-- | lang/cpp/src/key.cpp | 22 | ||||
| -rw-r--r-- | lang/cpp/src/key.h | 6 | 
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      { | 
