DataObject Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa el elemento de objeto de una firma XML que conserva los datos que se van a firmar.
public ref class DataObject
public class DataObject
type DataObject = class
Public Class DataObject
- Herencia
-
DataObject
Ejemplos
En el ejemplo de código siguiente se muestra cómo generar una firma XML envolvente.
#using <System.dll>
#using <System.Xml.dll>
#using <System.Security.dll>
using namespace System;
using namespace System::IO;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::Xml;
using namespace System::Xml;
int main()
{
// Create example data to sign.
XmlDocument^ document = gcnew XmlDocument;
XmlNode^ node = document->CreateNode( XmlNodeType::Element, "", "MyElement", "samples" );
node->InnerText = "This is some text";
document->AppendChild( node );
Console::Error->WriteLine( "Data to sign:\n{0}\n", document->OuterXml );
// Create the SignedXml message.
SignedXml^ signedXml = gcnew SignedXml;
RSA^ key = RSA::Create();
signedXml->SigningKey = key;
// Create a data object to hold the data to sign.
DataObject^ dataObject = gcnew 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.
Reference^ reference = gcnew Reference;
reference->Uri = "#MyObjectId";
// Add it to the message.
signedXml->AddReference( reference );
// Add a KeyInfo.
KeyInfo^ keyInfo = gcnew KeyInfo;
keyInfo->AddClause( gcnew RSAKeyValue( key ) );
signedXml->KeyInfo = keyInfo;
// Compute the signature.
signedXml->ComputeSignature();
// Get the XML representation of the signature.
XmlElement^ xmlSignature = signedXml->GetXml();
Console::WriteLine( xmlSignature->OuterXml );
}
using System;
using System.IO;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;
using System.Xml;
public class XMLdsigsample1 {
static void Main(String[] args)
{
// Create example data to sign.
XmlDocument document = new XmlDocument();
XmlNode node = document.CreateNode(XmlNodeType.Element, "", "MyElement", "samples");
node.InnerText = "This is some text";
document.AppendChild(node);
Console.Error.WriteLine("Data to sign:\n" + document.OuterXml + "\n");
// Create the SignedXml message.
SignedXml signedXml = new SignedXml();
RSA key = RSA.Create();
signedXml.SigningKey = key;
// Create a data object to hold the data to sign.
DataObject dataObject = 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.
Reference reference = new Reference();
reference.Uri = "#MyObjectId";
// Add it to the message.
signedXml.AddReference(reference);
// Add a KeyInfo.
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new RSAKeyValue(key));
signedXml.KeyInfo = keyInfo;
// Compute the signature.
signedXml.ComputeSignature();
// Get the XML representation of the signature.
XmlElement xmlSignature = signedXml.GetXml();
Console.WriteLine(xmlSignature.OuterXml);
}
}
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
End Class
En el ejemplo de código siguiente se muestra cómo comprobar una firma XML.
#using <System.dll>
#using <System.Security.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::Xml;
using namespace System::IO;
using namespace System::Xml;
int main()
{
array<String^>^args = System::Environment::GetCommandLineArgs();
Console::WriteLine( "Verifying {0}...", args[ 1 ] );
// Create a SignedXml.
SignedXml^ signedXml = gcnew SignedXml;
// Load the XML.
XmlDocument^ xmlDocument = gcnew XmlDocument;
xmlDocument->PreserveWhitespace = true;
xmlDocument->Load( gcnew XmlTextReader( args[ 1 ] ) );
XmlNodeList^ nodeList = xmlDocument->GetElementsByTagName( "Signature" );
signedXml->LoadXml( safe_cast<XmlElement^>(nodeList[ 0 ]) );
if ( signedXml->CheckSignature() )
{
Console::WriteLine( "Signature check OK" );
}
else
{
Console::WriteLine( "Signature check FAILED" );
}
}
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;
using System.IO;
using System.Xml;
public class Verify {
public static void Main(String[] args)
{
Console.WriteLine("Verifying " + args[0] + "...");
// Create a SignedXml.
SignedXml signedXml = new SignedXml();
// Load the XML.
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.PreserveWhitespace = true;
xmlDocument.Load(new XmlTextReader(args[0]));
XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature");
signedXml.LoadXml((XmlElement)nodeList[0]);
if (signedXml.CheckSignature()) {
Console.WriteLine("Signature check OK");
} else {
Console.WriteLine("Signature check FAILED");
}
}
}
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
End Class
Comentarios
Use la DataObject clase para almacenar información o metadatos directamente en una firma XML. Por ejemplo, puede almacenar la fecha de generación de firmas o la identidad del firmante. La DataObject clase puede o no estar cubierta por la firma XML.
La clase corresponde al <Object>
elemento de la especificación World Wide Web Consortium (W3C) para firmas XML. Para obtener más información sobre la especificación W3C, vea https://www.w3.org/TR/xmldsig-core/.
Constructores
DataObject() |
Inicializa una nueva instancia de la clase DataObject. |
DataObject(String, String, String, XmlElement) |
Inicializa una nueva instancia de la clase DataObject con la identificación, el tipo MIME, la codificación y los datos especificados. |
Propiedades
Data |
Obtiene o establece el valor de los datos del objeto DataObject actual. |
Encoding |
Obtiene o establece la codificación del objeto DataObject actual. |
Id |
Obtiene o establece la identificación del objeto DataObject actual. |
MimeType |
Obtiene o establece el tipo MIME del objeto DataObject actual. |
Métodos
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
GetXml() |
Devuelve la representación XML del objeto DataObject. |
LoadXml(XmlElement) |
Carga un estado de la clase DataObject a partir de un elemento XML. |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |