145 lines
4.1 KiB
C++
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
|