DYT/Tool/3rdParty_x64/include/dcmtk/dcmsign/sicert.h
2024-11-22 23:19:31 +08:00

145 lines
4.1 KiB
C++

/*
*
* Copyright (C) 1998-2011, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmsign
*
* Author: Norbert Loxen
*
* Purpose:
* classes: SiCertificate
*
*/
#ifndef SICERT_H
#define SICERT_H
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmsign/sitypes.h"
#ifdef WITH_OPENSSL
#include "dcmtk/ofstd/ofstring.h" /* for class OFString */
class DcmItem;
class SiAlgorithm;
struct x509_st;
typedef struct x509_st X509;
/** a class representing X.509 public key certificates.
*/
class DCMTK_DCMSIGN_EXPORT SiCertificate
{
public:
/// default constructor
SiCertificate();
///destructor
virtual ~SiCertificate();
/** loads an X.509 certificate from file.
* @param filename file name of X.509 certificate
* @param filetype file format: X509_FILETYPE_PEM or X509_FILETYPE_ASN1
* @return status code
*/
OFCondition loadCertificate(const char *filename, int filetype);
/** reads an X.509 certificate from an item of the Digital Signatures Sequence
* and checks the certificate type information in the item.
* @param item item of the DigitalSignatureSQ from which the certificate is read
* @return status code
*/
OFCondition read(DcmItem& item);
/** writes the current X.509 certificate into an item of the Digital Signatures Sequence
* and creates the certificate type information in the item.
* @param item item of the DigitalSignatureSQ to which the certificate is written
* @return dcmdata OFCondition status code
*/
OFCondition write(DcmItem& item);
/** returns the type of public key stored in this certificate
*/
E_KeyType getKeyType();
/** creates an SiAlgorithm object for the public key contained in this certificate.
* If no certificate loaded or operation fails, returns NULL.
* New SiAlgorithm object must be deleted by caller.
* @return pointer to new SiAlgorithm object
*/
SiAlgorithm *createAlgorithmForPublicKey();
/** returns the format version of the X.509 certificate.
* If no certificate is loaded, returns 0.
* @return X.509 certificate version
*/
long getX509Version();
/** returns the subject name (distinguished name) of the current certificate.
* If no certificate is loaded, returns an empty string.
* @param str subject name returned in this string.
*/
void getCertSubjectName(OFString& str);
/** returns the issuer name (distinguished name) of the current certificate.
* If no certificate is loaded, returns an empty string.
* @param str issuer name returned in this string.
*/
void getCertIssuerName(OFString& str);
/** returns the serial number of the X.509 certificate.
* If no certificate is loaded, returns -1.
* @return X.509 certificate serial number
*/
long getCertSerialNo();
/** returns the start of validity of the current certificate in human readable form.
* If no certificate is loaded, returns an empty string.
* @param str start of validity returned in this string.
*/
void getCertValidityNotBefore(OFString& str);
/** returns the end of validity of the current certificate in human readable form.
* If no certificate is loaded, returns an empty string.
* @param str end of validity returned in this string.
*/
void getCertValidityNotAfter(OFString& str);
/** returns the strength (number of bits) of the public key contained
* in the current certificate.
* If no certificate is loaded, returns 0.
* @return key strength in bits.
*/
long getCertKeyBits();
/** returns a pointer to the raw certificate structure or NULL if no
* certificate present. Should not be called by users of this library.
*/
X509 *getRawCertificate();
private:
/// private undefined copy constructor
SiCertificate(SiCertificate& arg);
/// private undefined copy assignment operator
SiCertificate& operator=(SiCertificate& arg);
/// OpenSSL X.509 structure
X509* x509;
};
#endif
#endif