DCMTK
Version 3.6.1 20170228
OFFIS DICOM Toolkit
|
a class that allows to feed selected parts of a DICOM dataset into the MAC generation code More...
Public Member Functions | |
SiMACConstructor () | |
constructor | |
virtual | ~SiMACConstructor () |
destructor | |
OFCondition | encodeDataset (DcmItem &item, SiMAC &mac, E_TransferSyntax oxfer, DcmAttributeTag &tagListOut, DcmAttributeTag *tagListIn=NULL) |
encodes a DICOM dataset (or parts of it) as a byte stream in the format required for DICOM digital signatures and feeds the byte stream into the given MAC codec. More... | |
OFCondition | encodeDigitalSignatureItem (DcmItem &signatureItem, SiMAC &mac, E_TransferSyntax oxfer) |
encodes the contents of the digital signature sequence except CertificateOfSigner, Signature, CertifiedTimestampType and CertifiedTimestamp as a byte stream in the format required for DICOM digital signatures and feeds the byte stream into the given MAC codec. More... | |
OFCondition | flush (SiMAC &mac) |
flushes all buffers inside this object, finalizing the MAC code More... | |
void | setDumpFile (FILE *f) |
dump all data that is fed into the MAC algorithm into the given file, which must be opened and closed by caller. More... | |
Private Member Functions | |
SiMACConstructor (SiMACConstructor &arg) | |
private undefined copy constructor | |
SiMACConstructor & | operator= (SiMACConstructor &arg) |
private undefined copy assignment operator | |
OFCondition | flushBuffer (SiMAC &mac) |
flushes the internal buffer to the given MAC and to dumpFile if open More... | |
OFCondition | encodeElement (DcmElement *element, SiMAC &mac, E_TransferSyntax oxfer) |
feeds a DcmElement into the MAC data stream if is signable. More... | |
Static Private Member Functions | |
static OFBool | inTagList (const DcmElement *element, DcmAttributeTag *tagList) |
checks whether the attribute tag of the given DcmElement is contained in the given list of tags. More... | |
Private Attributes | |
unsigned char * | buf |
the buffer to which data is written | |
DcmOutputBufferStream | stream |
the internal buffer stream | |
FILE * | dumpFile |
if nonzero, the data fed to the MAC algorithm is also stored in this file. | |
a class that allows to feed selected parts of a DICOM dataset into the MAC generation code
OFCondition SiMACConstructor::encodeDataset | ( | DcmItem & | item, |
SiMAC & | mac, | ||
E_TransferSyntax | oxfer, | ||
DcmAttributeTag & | tagListOut, | ||
DcmAttributeTag * | tagListIn = NULL |
||
) |
encodes a DICOM dataset (or parts of it) as a byte stream in the format required for DICOM digital signatures and feeds the byte stream into the given MAC codec.
If a dump file was set with setDumpFile(), the byte stream is written to file as well.
item | the DICOM dataset to be encoded |
mac | the MAC codec into which the resulting byte stream is fed |
oxfer | the transfer syntax to be used when encoding the dataset. The caller might wish to use DcmItem::canWriteXfer() to check beforehand whether this transfer syntax can be used. |
tagListOut | upon return this parameter contains the list of attribute tags which were fed into the MAC codec. For sequences, only the sequence attribute tag is contained in this list; the items and elements within the items are not encoded. |
tagListIn | optional parameter restricting the parts of the dataset to be encoded. Only elements which are present in this list of tags, which are signable (see DcmTagKey::isSignable()) and are present in the dataset are encoded. Upon verification of a signature the caller might wish to compare tagListIn and tagListOut after successful return to see whether the lists of attributes are the same. If parameter is absent or NULL, a global match is assumed, i.e. all elements of the dataset which are present and signable are encoded. |
OFCondition SiMACConstructor::encodeDigitalSignatureItem | ( | DcmItem & | signatureItem, |
SiMAC & | mac, | ||
E_TransferSyntax | oxfer | ||
) |
encodes the contents of the digital signature sequence except CertificateOfSigner, Signature, CertifiedTimestampType and CertifiedTimestamp as a byte stream in the format required for DICOM digital signatures and feeds the byte stream into the given MAC codec.
If a dump file was set with setDumpFile(), the byte stream is written to file as well.
signatureItem | the DICOM digital signature item to be encoded |
mac | the MAC codec into which the resulting byte stream is fed |
oxfer | the transfer syntax to be used when encoding the dataset. The caller might wish to use DcmItem::canWriteXfer() to check beforehand whether this transfer syntax can be used. |
|
private |
feeds a DcmElement into the MAC data stream if is signable.
If the element is a sequence, all signable elements from all items are added.
element | pointer to element, must not be NULL |
mac | MAC to use |
oxfer | transfer syntax in which data is encoded |
OFCondition SiMACConstructor::flush | ( | SiMAC & | mac | ) |
flushes all buffers inside this object, finalizing the MAC code
mac | the MAC codec into which the resulting byte stream is fed |
|
private |
flushes the internal buffer to the given MAC and to dumpFile if open
mac | MAC to which the buffer content is added |
|
staticprivate |
checks whether the attribute tag of the given DcmElement is contained in the given list of tags.
If the list is absent (NULL), a universal match is assumed, i.e. always returns true if element is nonzero. Does not check whether an element is signable.
element | pointer to element to check |
tagList | pointer to list of attribute tags, may be NULL |
void SiMACConstructor::setDumpFile | ( | FILE * | f | ) |
dump all data that is fed into the MAC algorithm into the given file, which must be opened and closed by caller.
f | pointer to file already opened for writing; may be NULL. |