This documentation is archived and is not being maintained.

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

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 

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 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

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

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
Show: