DYT/Tool/3rdParty_x64/include/dcmtk/dcmpstat/dvsighdl.h

226 lines
7.5 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* Copyright (C) 2001-2012, 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: dcmpstat
*
* Author: Marco Eichelberg
*
* Purpose:
* classes: DVSignatureHandler
*
*/
#ifndef DVSIGHDL_H
#define DVSIGHDL_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/dcmpstat/dvpstyp.h"
#include "dcmtk/dcmpstat/dpdefine.h"
#include "dcmtk/ofstd/ofstream.h"
#include "dcmtk/ofstd/ofstring.h"
#include "dcmtk/dcmsign/sicertvf.h"
#include "dcmtk/dcmdata/dcerror.h"
class DcmAttributeTag;
class DcmItem;
class DcmStack;
class DVConfiguration;
class DcmAttributeTag;
class DcmTagKey;
/** handler for all digital signature related functions in dcmpstat
*/
class DCMTK_DCMPSTAT_EXPORT DVSignatureHandler
{
public:
/** constructor
* @param cfg system configuration
*/
DVSignatureHandler(DVConfiguration& cfg);
/// destructor
virtual ~DVSignatureHandler();
/** returns a string containing a complete HTML page with the
* signature validation results for the last object of the
* given type. Never returns NULL.
* @param objtype object type
* @return pointer to string with HTML page
*/
const char *getCurrentSignatureValidationHTML(DVPSObjectType objtype) const;
/** returns a string containing a complete HTML page with the
* signature validation overview. Never returns NULL.
* @return pointer to string with HTML page
*/
const char *getCurrentSignatureValidationOverview() const;
/** updates the digital signature information for the given object type.
* If compiled without WITH_OPENSSL, always reports that no signatures
* were found in the object.
* @param dataset dataset to be checked for digital signatures
* @param objtype object type of dataset
* @param onRead true if the dataset is just being read, false if it is being written
*/
void updateDigitalSignatureInformation(DcmItem& dataset, DVPSObjectType objtype, OFBool onRead);
/** disables the digital signature information for the given object type.
* @param objtype object type
*/
void disableDigitalSignatureInformation(DVPSObjectType objtype);
/** returns the status flag for the current object of given type.
* @param objtype object type
* @return digital signature status for object
*/
DVPSSignatureStatus getCurrentSignatureStatus(DVPSObjectType objtype) const;
/** returns number of correct signatures for given object type.
* @param objtype object type
* @return number of digital signatures
*/
unsigned long getNumberOfCorrectSignatures(DVPSObjectType objtype) const;
/** returns number of untrustworthy signatures for given object type.
* @param objtype object type
* @return number of digital signatures
*/
unsigned long getNumberOfUntrustworthySignatures(DVPSObjectType objtype) const;
/** returns number of corrupt signatures for given object type.
* @param objtype object type
* @return number of digital signatures
*/
unsigned long getNumberOfCorruptSignatures(DVPSObjectType objtype) const;
/** returns the combined status flag for the current image and presentation state.
* @return digital signature status for image and presentation state
*/
DVPSSignatureStatus getCombinedImagePStateSignatureStatus() const;
/** disables internal settings for image and presentation state.
* Called when a new SR object is loaded and the current
* image/presentation state are hidden consequently.
*/
void disableImageAndPState();
/** checks whether any attribute mentioned in the tag list is affected
* by digital signatures. Returns true if either any of the attributes
* is signed by a digital signature on the dataset level, or if any
* of the attributes is a sequence that contains one or more signatures
* in its items. Otherwise returns false.
* If compiled without WITH_OPENSSL, always returns false.
* @param item item or dataset to be tested
* @param tagList list of attributes (tags) to be looked up inside the dataset
* @return true if any of the given attributes is affected by a digital signature,
* false otherwise.
*/
OFBool attributesSigned(DcmItem& item, DcmAttributeTag& tagList) const;
/** adds one or more new digital signatures to the given dataset.
* If compiled without WITH_OPENSSL, always returns EC_IllegalCall.
* @param mainDataset reference to main dataset in which signature(s) are to be added
* @param itemStack stack of items within the main dataset that are to be signed
* separately. If main dataset is to be signed, it must be included in this stack.
* @param attributesNotToSignInMainDataset list of attribute tags that should be
* omitted from the signature on the main dataset level
* @param usedID user ID in configuration file, must not be NULL
* @param passwd passwd password for private key, may be NULL
* @return EC_Normal if successful, an error code otherwise.
*/
OFCondition createSignature(
DcmItem& mainDataset,
const DcmStack& itemStack,
DcmAttributeTag& attributesNotToSignInMainDataset,
const char *userID,
const char *passwd);
private:
/// private undefined copy constructor
DVSignatureHandler(const DVSignatureHandler& copy);
/// private undefined assignment operator
DVSignatureHandler& operator=(const DVSignatureHandler&);
/* print the location stack into the given stream.
* It is assumed that the stack top is a DigitalSignatureSequence which is not printed
* and that the stack bottom is the main dataset, which is also not printed.
* @param stack search stack, as returned by DcmSignature::findFirstSignatureItem() etc.
* @param os output stream
*/
static void printSignatureItemPosition(DcmStack& stack, STD_NAMESPACE ostream& os);
/** replaces the current HTML page for the given object type by the new string.
* @param objtype object type
* @param str string, must not be NULL
*/
void replaceString(DVPSObjectType objtype, const char *str);
/** updates the overview HTML page.
*/
void updateSignatureValidationOverview();
/// current SR html page
OFString htmlSR;
/// current image html page
OFString htmlImage;
/// current presentation state html page
OFString htmlPState;
/// current overview
OFString htmlOverview;
/// number of correct signatures in current SR
unsigned long correctSignaturesSR;
/// number of corrupt signatures in current SR
unsigned long corruptSignaturesSR;
/// number of untrustworthy signatures in current SR
unsigned long untrustSignaturesSR;
/// number of correct signatures in current Image
unsigned long correctSignaturesImage;
/// number of corrupt signatures in current Image
unsigned long corruptSignaturesImage;
/// number of untrustworthy signatures in current Image
unsigned long untrustSignaturesImage;
/// number of correct signatures in current PState
unsigned long correctSignaturesPState;
/// number of corrupt signatures in current PState
unsigned long corruptSignaturesPState;
/// number of untrustworthy signatures in current PState
unsigned long untrustSignaturesPState;
#ifdef WITH_OPENSSL
/// the certificate verifier, available only if compiled with OpenSSL support
SiCertificateVerifier certVerifier;
#endif
/// reference to object maintaining the system configuration
DVConfiguration& config;
};
#endif