aboutsummaryrefslogtreecommitdiffstats
path: root/lang/cpp/src/data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lang/cpp/src/data.cpp')
-rw-r--r--lang/cpp/src/data.cpp20
1 files changed, 20 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);