From 7c5a4974b71c30e824cbfcb3a0a70064e5ed5adb Mon Sep 17 00:00:00 2001 From: Andre Heinecke Date: Wed, 24 Aug 2016 13:59:37 +0200 Subject: [PATCH] Cpp: Add Key to signature * lang/cpp/src/verificationresult.cpp, lang/cpp/src/verificationresult.h (Signature::key): New. --- lang/cpp/src/verificationresult.cpp | 14 ++++++++++++++ lang/cpp/src/verificationresult.h | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/lang/cpp/src/verificationresult.cpp b/lang/cpp/src/verificationresult.cpp index c32c8964..c62625d1 100644 --- a/lang/cpp/src/verificationresult.cpp +++ b/lang/cpp/src/verificationresult.cpp @@ -24,6 +24,7 @@ #include #include "result_p.h" #include "util.h" +#include "key.h" #include @@ -64,6 +65,10 @@ public: # endif scopy->next = 0; sigs.push_back(scopy); + // copy keys + if (scopy->key) { + keys.push_back(Key(scopy->key, true)); + } // copy notations: nota.push_back(std::vector()); purls.push_back(0); @@ -107,6 +112,7 @@ public: std::vector sigs; std::vector< std::vector > nota; + std::vector keys; std::vector purls; std::string file_name; }; @@ -366,6 +372,14 @@ std::vector GpgME::Signature::notations() const return result; } +GpgME::Key GpgME::Signature::key() const +{ + if (isNull()) { + return Key(); + } + return d->keys[idx]; +} + class GpgME::Notation::Private { public: diff --git a/lang/cpp/src/verificationresult.h b/lang/cpp/src/verificationresult.h index 3394a474..93288af2 100644 --- a/lang/cpp/src/verificationresult.h +++ b/lang/cpp/src/verificationresult.h @@ -40,6 +40,7 @@ namespace GpgME class Error; class Signature; class Notation; +class Key; class GPGMEPP_EXPORT VerificationResult : public Result { @@ -157,6 +158,11 @@ public: GpgME::Notation notation(unsigned int index) const; std::vector notations() const; + /** Returns the key object associated with this signature. + * May be incomplete but will have at least the fingerprint + * set or the associated TOFU Information if applicable. */ + GpgME::Key key() const; + private: std::shared_ptr d; unsigned int idx;