aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lang/cpp/src/verificationresult.cpp14
-rw-r--r--lang/cpp/src/verificationresult.h6
2 files changed, 20 insertions, 0 deletions
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 <notation.h>
#include "result_p.h"
#include "util.h"
+#include "key.h"
#include <gpgme.h>
@@ -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<Nota>());
purls.push_back(0);
@@ -107,6 +112,7 @@ public:
std::vector<gpgme_signature_t> sigs;
std::vector< std::vector<Nota> > nota;
+ std::vector<GpgME::Key> keys;
std::vector<char *> purls;
std::string file_name;
};
@@ -366,6 +372,14 @@ std::vector<GpgME::Notation> 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<GpgME::Notation> 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<VerificationResult::Private> d;
unsigned int idx;