←Select platform

GetSignedElement Method

Summary
Returns the signed Data Element at the specified index.
Syntax
C#
C++/CLI
public DicomElement GetSignedElement( 
   DicomElement signatureItem, 
   int index 
) 
public: 
DicomElement^ GetSignedElement(  
   DicomElement^ signatureItem, 
   int index 
)  

Parameters

signatureItem
The Digital Signatures Sequence Item that corresponds to the Digital Signature. This cannot be null.

index
The zero-based index of the required signed Data Element. This should be a number from 0 to GetSignedElementsCount(signatureItem) - 1.

Return Value

The required signed Data Element. The return value can be a null reference (Nothing in VB); e.g., if the specified index is invalid.

Remarks

The Digital Signatures Sequence Item of a Digital Signature should reference an item under the Message Authentication Code (MAC) Parameters Sequence associated with the Digital Signatures Sequence. The Data Elements Signed (0400,0020) under the referenced MAC Parameters Sequence Item specifies the tags of the Data Elements covered by the Digital Signature. These Data Elements should be located at the same level as the MAC Parameters Sequence and the Digital Signatures Sequence. The GetSignedElementsCount method returns the number of signed Data Elements as specified by the Data Elements Signed (0400,0020). The GetSignedElement method searches the level at which the MAC Parameters Sequence appears for the Data Element with the tag determined by the passed index and returns the Data Element if it does exist; if it does not exist, the method returns a null reference (Nothing in VB).

Note: In addition to the Data Elements specified by the Data Elements Signed (0400,0020), certain Data Elements under the Digital Signatures Sequence Item are always covered by the Digital Signature.

The following methods can also be used to get information about the Digital Signature:

GetSignatureUID

GetSignatureDateTime

GetMacTransferSyntax

GetMacAlgorithm

SaveCertificate

Example
C#
using Leadtools; 
using Leadtools.Dicom; 
 
 
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) 
      { 
         Console.WriteLine("Sample: The Digital Signature was verified."); 
 
      } 
      else 
      { 
         Console.WriteLine("Sample: All Digital Signatures were verified (if there are any)."); 
      } 
   } 
   else 
   { 
      if (signatureItem != null) 
      { 
         Console.WriteLine("Sample: The Digital Signature is invalid."); 
      } 
      else 
      { 
         Console.WriteLine("Sample: At least one Digital Signature is invalid."); 
      } 
   } 
   // 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}/{2} {3}:{4}:{5}.{6} {7}{8}{9}", 
         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); 
 
   Console.WriteLine($"Sample: {msg.ToString()}"); 
   dataset.SaveCertificate(signatureItem, Path.Combine(LEAD_VARS.ImagesDir, "CertOfSigner.cer"), DicomCertificateFormat.Pem); 
 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.1.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom Assembly