dcmsign/include/dcmtk/dcmsign/dcsignat.h

00001 /*
00002  *
00003  *  Copyright (C) 1998-2010, OFFIS e.V.
00004  *  All rights reserved.  See COPYRIGHT file for details.
00005  *
00006  *  This software and supporting documentation were developed by
00007  *
00008  *    OFFIS e.V.
00009  *    R&D Division Health
00010  *    Escherweg 2
00011  *    D-26121 Oldenburg, Germany
00012  *
00013  *
00014  *  Module: dcmsign
00015  *
00016  *  Author: Marco Eichelberg
00017  *
00018  *  Purpose:
00019  *    classes: DcmSignature
00020  *
00021  *  Last Update:      $Author: joergr $
00022  *  Update Date:      $Date: 2010-10-14 13:17:24 $
00023  *  CVS/RCS Revision: $Revision: 1.4 $
00024  *  Status:           $State: Exp $
00025  *
00026  *  CVS/RCS Log at end of file
00027  *
00028  */
00029 
00030 #ifndef DCMSIGN_H
00031 #define DCMSIGN_H
00032 
00033 #include "dcmtk/config/osconfig.h"
00034 #include "dcmtk/dcmsign/sitypes.h"
00035 
00036 #ifdef WITH_OPENSSL
00037 
00038 #include "dcmtk/dcmdata/dcxfer.h"  /* for E_TransferSyntax */
00039 
00040 #define INCLUDE_CSTDIO
00041 #include "dcmtk/ofstd/ofstdinc.h"
00042 
00043 class DcmItem;
00044 class DcmStack;
00045 class DcmSequenceOfItems;
00046 class DcmAttributeTag;
00047 class SiPrivateKey;
00048 class SiCertificate;
00049 class SiSecurityProfile;
00050 class SiMAC;
00051 class SiTimeStamp;
00052 
00060 class DcmSignature
00061 {
00062 public:
00067   static void initializeLibrary();
00068 
00070   DcmSignature();
00071  
00073   virtual ~DcmSignature();
00074 
00081   void attach(DcmItem *dataset);  
00082   
00085   void detach();
00086 
00104   OFCondition createSignature(
00105     SiPrivateKey& key, 
00106     SiCertificate& cert, 
00107     SiMAC& mac,
00108     SiSecurityProfile& profile, 
00109     E_TransferSyntax xfer=EXS_LittleEndianExplicit,
00110     const DcmAttributeTag *tagList=NULL,
00111     SiTimeStamp *timeStamp=NULL);
00112 
00116   unsigned long numberOfSignatures();
00117 
00122   OFCondition removeSignature(unsigned long i);
00123 
00128   OFCondition selectSignature(unsigned long i);
00129   
00135   OFCondition verifyCurrent();
00136 
00142   OFCondition getCurrentMacID(Uint16& macID);
00143 
00151   OFCondition getCurrentMacXferSyntaxName(OFString& str);
00152 
00158   OFCondition getCurrentMacName(OFString& str);
00159 
00165   OFCondition getCurrentSignatureUID(OFString& str);
00166 
00172   OFCondition getCurrentSignatureDateTime(OFString& str);
00173 
00182   OFCondition getCurrentDataElementsSigned(DcmAttributeTag& desig);
00183 
00189   SiCertificate *getCurrentCertificate();
00190   
00195   void setDumpFile(FILE *f);
00196 
00204   static DcmItem *findFirstSignatureItem(DcmItem& item, DcmStack& stack);
00205 
00213   static DcmItem *findNextSignatureItem(DcmItem& item, DcmStack& stack);
00214 
00215 private:
00216 
00218   DcmSignature(DcmSignature& arg);
00219 
00221   DcmSignature& operator=(DcmSignature& arg);
00222 
00224   void deselect();
00225 
00232   OFCondition allocateMACID(Uint16& newID);
00233   
00239   static Uint16 getMACIDnumber(DcmItem &item);
00240 
00244   static void currentDateTime(OFString &str);
00245 
00247   DcmItem *currentItem;
00248 
00250   DcmSequenceOfItems *macParametersSq;
00251 
00253   DcmSequenceOfItems *signatureSq;
00254 
00256   FILE *dumpFile;
00257 
00259   DcmItem *selectedSignatureItem;
00260 
00262   DcmItem *selectedMacParametersItem;
00263 
00265   SiCertificate *selectedCertificate;  
00266   
00267 };
00268 
00269 #endif
00270 #endif
00271 
00272 /*
00273  *  $Log: dcsignat.h,v $
00274  *  Revision 1.4  2010-10-14 13:17:24  joergr
00275  *  Updated copyright header. Added reference to COPYRIGHT file.
00276  *
00277  *  Revision 1.3  2005-12-08 16:04:29  meichel
00278  *  Changed include path schema for all DCMTK header files
00279  *
00280  *  Revision 1.2  2003/06/04 14:21:03  meichel
00281  *  Simplified include structure to avoid preprocessor limitation
00282  *    (max 32 #if levels) on MSVC5 with STL.
00283  *
00284  *  Revision 1.1  2002/12/20 14:53:08  wilkens
00285  *  Modified name clash resulting in a compiler error on Solaris 2.5.1 using
00286  *  compiler SC 2.0.1.
00287  *
00288  *  Revision 1.5  2002/11/27 14:53:40  meichel
00289  *  Adapted module dcmsign to use of new header file ofstdinc.h
00290  *
00291  *  Revision 1.4  2001/11/16 15:50:49  meichel
00292  *  Adapted digital signature code to final text of supplement 41.
00293  *
00294  *  Revision 1.3  2001/09/26 14:30:18  meichel
00295  *  Adapted dcmsign to class OFCondition
00296  *
00297  *  Revision 1.2  2001/06/01 15:50:46  meichel
00298  *  Updated copyright header
00299  *
00300  *  Revision 1.1  2000/11/07 16:48:51  meichel
00301  *  Initial release of dcmsign module for DICOM Digital Signatures
00302  *
00303  *
00304  */
00305 


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1