aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2016-04-12 14:05:31 +0000
committerAndre Heinecke <[email protected]>2016-04-12 14:05:31 +0000
commitd949d711dc1d944a9d627d39a89af74943a5a8c1 (patch)
treeed4d43ae992d7e1a45c28b2435e9f2330ab9c639
parentFix configuration without Qt language (diff)
downloadgpgme-d949d711dc1d944a9d627d39a89af74943a5a8c1.tar.gz
gpgme-d949d711dc1d944a9d627d39a89af74943a5a8c1.zip
Cpp: Add support for gpgme_data_identify
* lang/cpp/src/data.cpp (Data::type): New. * lang/cpp/src/data.h (Data::Type): New enum mapping.
-rw-r--r--lang/cpp/src/data.cpp20
-rw-r--r--lang/cpp/src/data.h14
2 files changed, 34 insertions, 0 deletions
diff --git a/lang/cpp/src/data.cpp b/lang/cpp/src/data.cpp
index b07406cf..bf9a629f 100644
--- a/lang/cpp/src/data.cpp
+++ b/lang/cpp/src/data.cpp
@@ -162,6 +162,26 @@ GpgME::Error GpgME::Data::setEncoding(Encoding enc)
return Error(gpgme_data_set_encoding(d->data, ge));
}
+GpgME::Data::Type GpgME::Data::type() const
+{
+ if (isNull()) {
+ return Invalid;
+ }
+ switch (gpgme_data_identify(d->data, 0)) {
+ case GPGME_DATA_TYPE_INVALID: return Invalid;
+ case GPGME_DATA_TYPE_UNKNOWN: return Unknown;
+ case GPGME_DATA_TYPE_PGP_SIGNED: return PGPSigned;
+ case GPGME_DATA_TYPE_PGP_OTHER: return PGPOther;
+ case GPGME_DATA_TYPE_PGP_KEY: return PGPKey;
+ case GPGME_DATA_TYPE_CMS_SIGNED: return CMSSigned;
+ case GPGME_DATA_TYPE_CMS_ENCRYPTED: return CMSEncrypted;
+ case GPGME_DATA_TYPE_CMS_OTHER: return CMSOther;
+ case GPGME_DATA_TYPE_X509_CERT: return X509Cert;
+ case GPGME_DATA_TYPE_PKCS12: return PKCS12;
+ }
+ return Invalid;
+}
+
char *GpgME::Data::fileName() const
{
return gpgme_data_get_file_name(d->data);
diff --git a/lang/cpp/src/data.h b/lang/cpp/src/data.h
index 97e42029..efb1e790 100644
--- a/lang/cpp/src/data.h
+++ b/lang/cpp/src/data.h
@@ -82,6 +82,20 @@ public:
Encoding encoding() const;
Error setEncoding(Encoding encoding);
+ enum Type {
+ Invalid,
+ Unknown,
+ PGPSigned,
+ PGPOther,
+ PGPKey,
+ CMSSigned,
+ CMSEncrypted,
+ CMSOther,
+ X509Cert,
+ PKCS12
+ };
+ Type type() const;
+
char *fileName() const;
Error setFileName(const char *name);