Leadtools.Dicom Requires Medical product license | Send comments on this topic. | Back to Introduction - All Topics | Help Version 15.10.31
VerifySignature Method
See Also  Example
Leadtools.Dicom Namespace > DicomDataSet Class : VerifySignature Method




signatureItem
The Digital Signatures Sequence Item that corresponds to the Digital Signature to be verified. To verify all the Digital Signatures in the entire Data Set, set this parameter to null.
Verifies Digital Signatures in the Data Set.

Syntax

Visual Basic (Declaration) 
Public Function VerifySignature( _
   ByVal signatureItem As DicomElement _
) As Boolean
Visual Basic (Usage)Copy Code
Dim instance As DicomDataSet
Dim signatureItem As DicomElement
Dim value As Boolean
 
value = instance.VerifySignature(signatureItem)
C# 
public bool VerifySignature( 
   DicomElement signatureItem
)
Managed Extensions for C++ 
public: bool VerifySignature( 
   DicomElement* signatureItem
) 
C++/CLI 
public:
bool VerifySignature( 
   DicomElement^ signatureItem
) 

Parameters

signatureItem
The Digital Signatures Sequence Item that corresponds to the Digital Signature to be verified. To verify all the Digital Signatures in the entire Data Set, set this parameter to null.

Return Value

true if The Digital Signature(s) was/were verified successfully; false if the Digital Signature is invalid or at least one of the Digital Signatures is invalid.

Example

This example will verify a DICOM digital signature and display its details.

Visual BasicCopy Code
Public Sub ExamineSignature(ByVal dataset As DicomDataSet, ByVal signatureItem As DicomElement)
  ' Verify the Digital Signature; if pSignatureItem is NULL, the function
  ' will verify all the Digital Signatures that exist in the Data Set
  Dim ret As Boolean = dataset.VerifySignature(signatureItem)
  If ret = True Then
    If Not signatureItem Is Nothing Then
       MessageBox.Show("The Digital Signature was verified.", "Sample")
    Else
       MessageBox.Show("All Digital Signatures were verified (if there are any).", "Sample")
    End If
  Else
    If Not signatureItem Is Nothing Then
       MessageBox.Show("The Digital Signature is invalid.", "Sample")
    Else
       MessageBox.Show("At least one Digital Signature is invalid.", "Sample")
    End If
  End If
  ' The Digital Signature UID
  Dim msg As StringBuilder = New StringBuilder()
  msg.Append(dataset.GetSignatureUID(signatureItem))

  ' The Digital Signature DateTime
  Dim digitalSignatureDateTime As DicomDateTimeValue = dataset.GetSignatureDateTime(signatureItem)
  If digitalSignatureDateTime.IsEmpty = False Then
    If (digitalSignatureDateTime.Offset >= 0) Then
       msg.AppendFormat(" Digital Signature DateTime:{0}/{1}/{3} {4}:{5}:{6}.{7} {8}{9}{10}", digitalSignatureDateTime.Month, digitalSignatureDateTime.Day, digitalSignatureDateTime.Year, digitalSignatureDateTime.Hours, digitalSignatureDateTime.Minutes, digitalSignatureDateTime.Seconds, digitalSignatureDateTime.Fractions, "+"c, digitalSignatureDateTime.Offset, Environment.NewLine)
    Else
       msg.AppendFormat(" Digital Signature DateTime:{0}/{1}/{3} {4}:{5}:{6}.{7} {8}{9}{10}", digitalSignatureDateTime.Month, digitalSignatureDateTime.Day, digitalSignatureDateTime.Year, digitalSignatureDateTime.Hours, digitalSignatureDateTime.Minutes, digitalSignatureDateTime.Seconds, digitalSignatureDateTime.Fractions, "-"c, digitalSignatureDateTime.Offset, Environment.NewLine)
    End If
  End If
  Dim macTransferSyntax As String = dataset.GetMacTransferSyntax(signatureItem)
  If Not macTransferSyntax Is Nothing Then
    msg.AppendFormat("MAC Calculation Transfer Syntax UID: {0}", macTransferSyntax)
  End If

  Dim macAlgorithm As String = dataset.GetMacAlgorithm(signatureItem)
  If Not macAlgorithm Is Nothing Then
    msg.AppendFormat("MAC Algorithm: {0}", macAlgorithm)
  End If
  ' The Data Elements Signed
  If dataset.GetSignedElementsCount(signatureItem) > 0 Then
    ' We will display only one
    Dim element As DicomElement = dataset.GetSignedElement(signatureItem, 0)
    msg.AppendFormat(" Data Elements Signed:{0}{1}{1}", element.Tag, Environment.NewLine)
  End If
  msg.AppendFormat("{0}Do you want to save the Certificate of Signer?", Environment.NewLine)
  If MessageBox.Show(msg.ToString(), "Sample", MessageBoxButtons.YesNo) = DialogResult.Yes Then
    dataset.SaveCertificate(signatureItem, "C:\CertOfSigner.cer", DicomCertificateFormat.Pem)
  End If
End Sub
C#Copy Code
public void ExamineSignature(DicomDataSet dataset, DicomElement signatureItem)  

   // Verify the Digital Signature; if pSignatureItem is NULL, the function 
   // will verify all the Digital Signatures that exist in the Data Set 
   bool ret = dataset.VerifySignature(signatureItem); 
   if(ret== true) 
   { 
      if(signatureItem != null) 
      { 
         MessageBox.Show("The Digital Signature was verified.", "Sample"); 
      } 
      else 
      { 
         MessageBox.Show("All Digital Signatures were verified (if there are any).", "Sample"); 
      } 
   } 
   else 
   { 
      if(signatureItem != null) 
      { 
         MessageBox.Show("The Digital Signature is invalid.", "Sample"); 
      } 
      else 
      { 
         MessageBox.Show("At least one Digital Signature is invalid.", "Sample"); 
      } 
   } 
   // The Digital Signature UID 
   StringBuilder msg = new StringBuilder(); 
   msg.Append(dataset.GetSignatureUID(signatureItem)); 
 
   // The Digital Signature DateTime 
   DicomDateTimeValue digitalSignatureDateTime = dataset.GetSignatureDateTime(signatureItem); 
   if(digitalSignatureDateTime.IsEmpty == false) 
   { 
      msg.AppendFormat(" Digital Signature DateTime:{0}/{1}/{3} {4}:{5}:{6}.{7} {8}{9}{10}", 
         digitalSignatureDateTime.Month, 
         digitalSignatureDateTime.Day, 
         digitalSignatureDateTime.Year, 
         digitalSignatureDateTime.Hours, 
         digitalSignatureDateTime.Minutes, 
         digitalSignatureDateTime.Seconds, 
         digitalSignatureDateTime.Fractions,  
         (digitalSignatureDateTime.Offset >= 0) ? '+' : '-',  
         digitalSignatureDateTime.Offset, 
         Environment.NewLine);  
   } 
   string macTransferSyntax = dataset.GetMacTransferSyntax(signatureItem); 
   if(macTransferSyntax != null) 
   { 
      msg.AppendFormat("MAC Calculation Transfer Syntax UID: {0}", macTransferSyntax); 
   } 
 
   string macAlgorithm = dataset.GetMacAlgorithm(signatureItem); 
   if (macAlgorithm != null) 
   { 
      msg.AppendFormat("MAC Algorithm: {0}", macAlgorithm); 
   } 
   // The Data Elements Signed 
   if (dataset.GetSignedElementsCount(signatureItem) > 0)  
   { 
      // We will display only one 
      DicomElement element = dataset.GetSignedElement(signatureItem, 0); 
      msg.AppendFormat(" Data Elements Signed:{0}{1}{1}",element.Tag, Environment.NewLine); 
   } 
   msg.AppendFormat("{0}Do you want to save the Certificate of Signer?", Environment.NewLine); 
   if (MessageBox.Show(msg.ToString(), "Sample", MessageBoxButtons.YesNo) == DialogResult.Yes) 
   { 
      dataset.SaveCertificate(signatureItem, @"C:\CertOfSigner.cer", DicomCertificateFormat.Pem); 
   } 
}

Remarks

To verify all the Digital Signatures in the entire Data Set, set the signatureItem parameter to null. If at least one of these Digital Signatures is invalid, the method returns false and does not examine the remaining Digital Signatures, if there are any.

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

Leadtools.Dicom requires a Medical toolkit license and unlock key. For more information, refer to: Raster Pro/Document/Medical Features