Public Member Functions | |
| DcmSignature () | |
| default constructor | |
| virtual | ~DcmSignature () |
| destructor | |
| void | attach (DcmItem *dataset) |
| attaches a DICOM dataset or item to the signature object. | |
| void | detach () |
| detaches an attached DICOM dataset from the signature object. | |
| OFCondition | createSignature (SiPrivateKey &key, SiCertificate &cert, SiMAC &mac, SiSecurityProfile &profile, E_TransferSyntax xfer=EXS_LittleEndianExplicit, const DcmAttributeTag *tagList=NULL, SiTimeStamp *timeStamp=NULL) |
| creates a new digital signature in the current dataset. | |
| unsigned long | numberOfSignatures () |
| returns the number of signatures in the dataset. | |
| OFCondition | removeSignature (unsigned long i) |
| removes a signature from the dataset. | |
| OFCondition | selectSignature (unsigned long i) |
| selects one of the digital signatures from the attached dataset for reading. | |
| OFCondition | verifyCurrent () |
| verifies the current signature. | |
| OFCondition | getCurrentMacID (Uint16 &macID) |
| returns the MAC ID of the current signature. | |
| OFCondition | getCurrentMacXferSyntaxName (OFString &str) |
| returns the MAC Calculation Transfer Syntax of the current signature. | |
| OFCondition | getCurrentMacName (OFString &str) |
| returns the MAC Algorithm Name of the current signature. | |
| OFCondition | getCurrentSignatureUID (OFString &str) |
| returns the Digital Signature UID of the current signature. | |
| OFCondition | getCurrentSignatureDateTime (OFString &str) |
| returns the Signature Date/Time of the current signature. | |
| OFCondition | getCurrentDataElementsSigned (DcmAttributeTag &desig) |
| returns the Data Elements Signed attribute of the current signature if present. | |
| SiCertificate * | getCurrentCertificate () |
| returns the certificate of the current signature if present. | |
| 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. | |
Static Public Member Functions | |
| static void | initializeLibrary () |
| initializes the dcmsign library including the underlying OpenSSL library. | |
| static DcmItem * | findFirstSignatureItem (DcmItem &item, DcmStack &stack) |
| recursively browses through the given dataset and searches the first occurence of the DigitalSignaturesSequence. | |
| static DcmItem * | findNextSignatureItem (DcmItem &item, DcmStack &stack) |
| recursively browses through the given dataset and searches the next occurence of the DigitalSignaturesSequence. | |
Private Member Functions | |
| DcmSignature (DcmSignature &arg) | |
| private undefined copy constructor | |
| DcmSignature & | operator= (DcmSignature &arg) |
| private undefined copy assignment operator | |
| void | deselect () |
| removes the selection of a current signature if present | |
| OFCondition | allocateMACID (Uint16 &newID) |
| allocates a new mac ID number for a new signature. | |
Static Private Member Functions | |
| static Uint16 | getMACIDnumber (DcmItem &item) |
| searches a given item for the DCM_MACIDnumber element and returns its value if present, otherwise returns 0. | |
| static void | currentDateTime (OFString &str) |
| returns the current date and time as a DICOM DT string. | |
Private Attributes | |
| DcmItem * | currentItem |
| pointer to current item if attached, NULL otherwise | |
| DcmSequenceOfItems * | macParametersSq |
| pointer to mac parameters sequence of attached item, may be NULL if not attached or not yet present | |
| DcmSequenceOfItems * | signatureSq |
| pointer to digital signatures sequence of attached item, may be NULL if not attached or not yet present | |
| FILE * | dumpFile |
| if nonzero, the data fed to the MAC algorithm is also stored in this file. | |
| DcmItem * | selectedSignatureItem |
| pointer to currently selected signature item | |
| DcmItem * | selectedMacParametersItem |
| pointer to currently selected mac parameters item | |
| SiCertificate * | selectedCertificate |
| pointer to certificate for currently selected signature item | |
The methods in this class do not handle digital signatures embedded in sequence items within the dataset, other than providing helper functions that allow to locate and attach the sub-items separately.
Definition at line 60 of file dcsignat.h.
| static void DcmSignature::initializeLibrary | ( | ) | [static] |
initializes the dcmsign library including the underlying OpenSSL library.
this method should be called by main() before any object of the dcmsign library is created or used.
| void DcmSignature::attach | ( | DcmItem * | dataset | ) |
attaches a DICOM dataset or item to the signature object.
The dataset is detached by a call to detach() or by destruction of the signature object. This object may modify but never deletes an attached dataset.
| dataset | dataset or item to be attached |
| OFCondition DcmSignature::createSignature | ( | SiPrivateKey & | key, | |
| SiCertificate & | cert, | |||
| SiMAC & | mac, | |||
| SiSecurityProfile & | profile, | |||
| E_TransferSyntax | xfer = EXS_LittleEndianExplicit, |
|||
| const DcmAttributeTag * | tagList = NULL, |
|||
| SiTimeStamp * | timeStamp = NULL | |||
| ) |
creates a new digital signature in the current dataset.
Checks whether private and public key match and whether all requirements of the given security profile are fulfilled.
| key | private key for signature creation | |
| cert | certificate with public key | |
| mac | MAC algorithm to be used for signature creation | |
| profile | security profile for signature creation | |
| xfer | transfer syntax to use when serializing DICOM data | |
| tagList | pointer to list of attribute tags to sign, may be NULL. If this parameter is nonzero, it contains a list of attribute sign. The real list of attributes signed is derived from this parameter plus the requirements of the security profile. If NULL, a universal match is assumed, i.e. all signable attributes in the data set are signed. | |
| timeStamp | pointer to time stamp client used to create timestamps for the digital signature. |
| unsigned long DcmSignature::numberOfSignatures | ( | ) |
returns the number of signatures in the dataset.
Does not count signatures embedded in sequence items within the dataset.
| OFCondition DcmSignature::removeSignature | ( | unsigned long | i | ) |
removes a signature from the dataset.
| i | index, must be < numberOfSignatures(). |
| OFCondition DcmSignature::selectSignature | ( | unsigned long | i | ) |
selects one of the digital signatures from the attached dataset for reading.
| i | index, must be < numberOfSignatures() |
| OFCondition DcmSignature::verifyCurrent | ( | ) |
verifies the current signature.
Current signature must be selected with selectSignature().
| OFCondition DcmSignature::getCurrentMacID | ( | Uint16 & | macID | ) |
returns the MAC ID of the current signature.
Current signature must be selected with selectSignature().
| macID | MAC ID returned in this parameter upon success |
| OFCondition DcmSignature::getCurrentMacXferSyntaxName | ( | OFString & | str | ) |
returns the MAC Calculation Transfer Syntax of the current signature.
If the transfer syntax is well-known, the UID is replaced by the transfer syntax name preceded by '='. Current signature must be selected with selectSignature().
| str | transfer syntax name or UID returned in this parameter upon success |
| OFCondition DcmSignature::getCurrentMacName | ( | OFString & | str | ) |
returns the MAC Algorithm Name of the current signature.
Current signature must be selected with selectSignature().
| str | MAC algorithm name returned in this parameter upon success |
| OFCondition DcmSignature::getCurrentSignatureUID | ( | OFString & | str | ) |
returns the Digital Signature UID of the current signature.
Current signature must be selected with selectSignature().
| str | signature UID returned in this parameter upon success |
| OFCondition DcmSignature::getCurrentSignatureDateTime | ( | OFString & | str | ) |
returns the Signature Date/Time of the current signature.
Current signature must be selected with selectSignature().
| str | signature date/time returned in this parameter upon success |
| OFCondition DcmSignature::getCurrentDataElementsSigned | ( | DcmAttributeTag & | desig | ) |
returns the Data Elements Signed attribute of the current signature if present.
Current signature must be selected with selectSignature(). If a valid signature is selected but the signature does not contain the Data Elements Signed element (i.e. all attributes are signed), this method returns an error code.
| desig | data elements signed returned in this parameter upon success |
| SiCertificate* DcmSignature::getCurrentCertificate | ( | ) |
returns the certificate of the current signature if present.
Current signature must be selected with selectSignature(). May return NULL if certificate is unavailable.
| void DcmSignature::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. |
recursively browses through the given dataset and searches the first occurence of the DigitalSignaturesSequence.
If found, returns a pointer to the Item in which the sequence is contained.
| item | dataset to be browsed | |
| stack | search stack, must be passed to findNextSignatureItem() later on. |
recursively browses through the given dataset and searches the next occurence of the DigitalSignaturesSequence.
If found, returns a pointer to the Item in which the sequence is contained.
| item | dataset to be browsed | |
| stack | search stack as returned by findFirstSignatureItem() or the last call to this method. |
| OFCondition DcmSignature::allocateMACID | ( | Uint16 & | newID | ) | [private] |
allocates a new mac ID number for a new signature.
examines all mac ID numbers in the digital signatures sequence and in the mac parameters sequence and returns an unused number.
| newID | upon successful return, new number is passed in this parameter |
| static Uint16 DcmSignature::getMACIDnumber | ( | DcmItem & | item | ) | [static, private] |
searches a given item for the DCM_MACIDnumber element and returns its value if present, otherwise returns 0.
| item | item to be searched |
| static void DcmSignature::currentDateTime | ( | OFString & | str | ) | [static, private] |
returns the current date and time as a DICOM DT string.
| str | date/time returned in this string. |