diff options
Diffstat (limited to 'lang/cpp')
| -rw-r--r-- | lang/cpp/src/data.cpp | 20 | ||||
| -rw-r--r-- | lang/cpp/src/data.h | 14 | 
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);  | 
