00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef DCMSIGN_H
00035 #define DCMSIGN_H
00036
00037 #include "osconfig.h"
00038 #include "sitypes.h"
00039
00040 #ifdef WITH_OPENSSL
00041
00042 #include "dcxfer.h"
00043
00044 #define INCLUDE_CSTDIO
00045 #include "ofstdinc.h"
00046
00047 class DcmItem;
00048 class DcmStack;
00049 class DcmSequenceOfItems;
00050 class DcmAttributeTag;
00051 class SiPrivateKey;
00052 class SiCertificate;
00053 class SiSecurityProfile;
00054 class SiMAC;
00055 class SiTimeStamp;
00056
00064 class DcmSignature
00065 {
00066 public:
00071 static void initializeLibrary();
00072
00074 DcmSignature();
00075
00077 virtual ~DcmSignature();
00078
00085 void attach(DcmItem *dataset);
00086
00089 void detach();
00090
00108 OFCondition createSignature(
00109 SiPrivateKey& key,
00110 SiCertificate& cert,
00111 SiMAC& mac,
00112 SiSecurityProfile& profile,
00113 E_TransferSyntax xfer=EXS_LittleEndianExplicit,
00114 const DcmAttributeTag *tagList=NULL,
00115 SiTimeStamp *timeStamp=NULL);
00116
00120 unsigned long numberOfSignatures();
00121
00126 OFCondition removeSignature(unsigned long i);
00127
00132 OFCondition selectSignature(unsigned long i);
00133
00139 OFCondition verifyCurrent();
00140
00146 OFCondition getCurrentMacID(Uint16& macID);
00147
00155 OFCondition getCurrentMacXferSyntaxName(OFString& str);
00156
00162 OFCondition getCurrentMacName(OFString& str);
00163
00169 OFCondition getCurrentSignatureUID(OFString& str);
00170
00176 OFCondition getCurrentSignatureDateTime(OFString& str);
00177
00186 OFCondition getCurrentDataElementsSigned(DcmAttributeTag& desig);
00187
00193 SiCertificate *getCurrentCertificate();
00194
00199 void setDumpFile(FILE *f);
00200
00208 static DcmItem *findFirstSignatureItem(DcmItem& item, DcmStack& stack);
00209
00217 static DcmItem *findNextSignatureItem(DcmItem& item, DcmStack& stack);
00218
00219 private:
00220
00222 DcmSignature(DcmSignature& arg);
00223
00225 DcmSignature& operator=(DcmSignature& arg);
00226
00228 void deselect();
00229
00236 OFCondition allocateMACID(Uint16& newID);
00237
00243 static Uint16 getMACIDnumber(DcmItem &item);
00244
00248 static void currentDateTime(OFString &str);
00249
00251 DcmItem *currentItem;
00252
00254 DcmSequenceOfItems *macParametersSq;
00255
00257 DcmSequenceOfItems *signatureSq;
00258
00260 FILE *dumpFile;
00261
00263 DcmItem *selectedSignatureItem;
00264
00266 DcmItem *selectedMacParametersItem;
00267
00269 SiCertificate *selectedCertificate;
00270
00271 };
00272
00273 #endif
00274 #endif
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303