blob: 5728da56bb0b4a5ac25246c19178823a5d05552c [file] [log] [blame]
//========================================================================
//
// SignatureInfo.h
//
// This file is licensed under the GPLv2 or later
//
// Copyright 2015 André Guerreiro <aguerreiro1985@gmail.com>
// Copyright 2015 André Esser <bepandre@hotmail.com>
// Copyright 2015, 2017, 2018 Albert Astals Cid <aacid@kde.org>
// Copyright 2017 Hans-Ulrich Jüttner <huj@froreich-bioscientia.de>
// Copyright 2018 Chinmoy Ranjan Pradhan <chinmoyrp65@protonmail.com>
// Copyright 2018 Oliver Sander <oliver.sander@tu-dresden.de>
//
//========================================================================
#ifndef SIGNATUREINFO_H
#define SIGNATUREINFO_H
#include <memory>
#include <time.h>
enum SignatureValidationStatus
{
SIGNATURE_VALID,
SIGNATURE_INVALID,
SIGNATURE_DIGEST_MISMATCH,
SIGNATURE_DECODING_ERROR,
SIGNATURE_GENERIC_ERROR,
SIGNATURE_NOT_FOUND,
SIGNATURE_NOT_VERIFIED
};
enum CertificateValidationStatus
{
CERTIFICATE_TRUSTED,
CERTIFICATE_UNTRUSTED_ISSUER,
CERTIFICATE_UNKNOWN_ISSUER,
CERTIFICATE_REVOKED,
CERTIFICATE_EXPIRED,
CERTIFICATE_GENERIC_ERROR,
CERTIFICATE_NOT_VERIFIED
};
class X509CertificateInfo;
class SignatureInfo {
public:
SignatureInfo();
SignatureInfo(SignatureValidationStatus, CertificateValidationStatus);
~SignatureInfo();
/* GETTERS */
SignatureValidationStatus getSignatureValStatus();
CertificateValidationStatus getCertificateValStatus();
const char *getSignerName();
const char *getSubjectDN();
const char *getLocation() const;
const char *getReason() const;
int getHashAlgorithm(); // Returns a NSS3 HASH_HashType or -1 if compiled without NSS3
time_t getSigningTime();
bool isSubfilterSupported() { return sig_subfilter_supported; }
const X509CertificateInfo *getCertificateInfo() const;
/* SETTERS */
void setSignatureValStatus(enum SignatureValidationStatus );
void setCertificateValStatus(enum CertificateValidationStatus );
void setSignerName(char *);
void setSubjectDN(const char *);
void setLocation(const char *);
void setReason(const char *);
void setHashAlgorithm(int);
void setSigningTime(time_t);
void setSubFilterSupport(bool isSupported) { sig_subfilter_supported = isSupported; }
void setCertificateInfo(std::unique_ptr<X509CertificateInfo>);
private:
SignatureInfo(const SignatureInfo &);
SignatureInfo& operator=(const SignatureInfo &);
SignatureValidationStatus sig_status;
CertificateValidationStatus cert_status;
std::unique_ptr<X509CertificateInfo> cert_info;
char *signer_name;
char *subject_dn;
char *location;
char *reason;
int hash_type;
time_t signing_time;
bool sig_subfilter_supported;
};
#endif