DataObject Class

Represents the object element of an XML signature that holds data to be signed.

Namespace: System.Security.Cryptography.Xml
Assembly: System.Security (in system.security.dll)

'Declaration
Public Class DataObject
'Usage
Dim instance As DataObject

public class DataObject
public class DataObject

Use the DataObject class to store information or metadata directly in an XML signature. For example, you can store the signature generation date or the signer's identity. The DataObject class may or may not be covered by the XML signature.

The class corresponds to the <Object> element in the World Wide Web Consortium (W3C) specification for XML Signatures. For more information about the W3C specification, see http://www.w3.org/TR/xmldsig-core/.

The following code example demonstrates how to generate an enveloping XML signature.

Imports System
Imports System.IO
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml
Imports System.Xml

 _


Public Class XMLdsigsample1

   Shared Sub Main(args() As [String])
      ' Create example data to sign.
      Dim document As New XmlDocument()
      Dim node As XmlNode = document.CreateNode(XmlNodeType.Element, "", "MyElement", "samples")
      node.InnerText = "This is some text"
      document.AppendChild(node)
      Console.Error.WriteLine("Data to sign:")
      Console.Error.WriteLine()
      Console.Error.WriteLine(document.OuterXml)
      Console.Error.WriteLine()
      
      ' Create the SignedXml message.
      Dim signedXml As New SignedXml()
      Dim key As RSA = RSA.Create()
      signedXml.SigningKey = key
      
      ' Create a data object to hold the data to sign.
      Dim dataObject As New DataObject()
      dataObject.Data = document.ChildNodes
      dataObject.Id = "MyObjectId"
      
      ' Add the data object to the signature.
      signedXml.AddObject(dataObject)
      
      ' Create a reference to be able to package everything into the
      ' message.
      Dim reference As New Reference()
      reference.Uri = "#MyObjectId"
      
      ' Add it to the message.
      signedXml.AddReference(reference)
      
      ' Add a KeyInfo.
      Dim keyInfo As New KeyInfo()
      keyInfo.AddClause(New RSAKeyValue(key))
      signedXml.KeyInfo = keyInfo
      
      ' Compute the signature.
      signedXml.ComputeSignature()
      
      ' Get the XML representation of the signature.
      Dim xmlSignature As XmlElement = signedXml.GetXml()
      Console.WriteLine(xmlSignature.OuterXml)
   End Sub 'Main
End Class 'XMLdsigsample1 

import System.*;
import System.IO.*;
import System.Security.Cryptography.*;
import System.Security.Cryptography.Xml.*;
import System.Xml.*;

public class XmlDsigSample1
{
    public static void main(String[] args)
    {
        // Create example data to sign.
        XmlDocument document = new XmlDocument();
        XmlNode node = document.CreateNode(XmlNodeType.Element, "",
            "MyElement", "samples");
        node.set_InnerText("This is some text");
        document.AppendChild(node);
        Console.get_Error().WriteLine("Data to sign:\n" +
            document.get_OuterXml() + "\n");
        // Create the SignedXml message.
        SignedXml signedXml = new SignedXml();
        RSA key = RSA.Create();
        signedXml.set_SigningKey(key);
        // Create a data object to hold the data to sign.
        DataObject dataObject = new DataObject();
        dataObject.set_Data(document.get_ChildNodes());
        dataObject.set_Id("MyObjectId");
        // Add the data object to the signature.
        signedXml.AddObject(dataObject);
        // Create a reference to be able to
        Reference reference = new Reference();
        reference.set_Uri("#MyObjectId");
        // Add it to the message.
        signedXml.AddReference(reference);
        // Add a KeyInfo.
        KeyInfo keyInfo = new KeyInfo();
        keyInfo.AddClause(new RSAKeyValue(key));
        signedXml.set_KeyInfo(keyInfo);
        // Compute the signature.
        signedXml.ComputeSignature();
        // Get the XML representation of the signature.
        XmlElement xmlSignature = signedXml.GetXml();
        Console.WriteLine(xmlSignature.get_OuterXml());
    } //main
} //XmlDsigSample1 

The following code example demonstrates how to check an XML signature.

Imports System
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml
Imports System.IO
Imports System.Xml

 _

Public Class Verify
   
   Public Shared Sub Main(args() As [String])
      
      Console.WriteLine(("Verifying " + args(0) + "..."))
      
      ' Create a SignedXml.
      Dim signedXml As New SignedXml()
      
      ' Load the XML.
      Dim xmlDocument As New XmlDocument()
      xmlDocument.PreserveWhitespace = True
      xmlDocument.Load(New XmlTextReader(args(0)))
      
      Dim nodeList As XmlNodeList = xmlDocument.GetElementsByTagName("Signature")
      signedXml.LoadXml(CType(nodeList(0), XmlElement))
      
      If signedXml.CheckSignature() Then
         Console.WriteLine("Signature check OK")
      Else
         Console.WriteLine("Signature check FAILED")
      End If
   End Sub 'Main 
End Class 'Verify

System.Object
  System.Security.Cryptography.Xml.DataObject

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0

Community Additions

ADD
Show: