Share via


XmlLicenseTransform Clase

Definición

Representa el algoritmo de transformación de licencia que se utiliza para normalizar las licencias XrML para las firmas.

public ref class XmlLicenseTransform : System::Security::Cryptography::Xml::Transform
public class XmlLicenseTransform : System.Security.Cryptography.Xml.Transform
type XmlLicenseTransform = class
    inherit Transform
Public Class XmlLicenseTransform
Inherits Transform
Herencia
XmlLicenseTransform

Ejemplos

En el ejemplo de código siguiente se muestra cómo validar una firma digital XML mediante la IRelDecryptor interfaz y la XmlLicenseTransform clase .

void CheckSignatureWithEncryptedGrant(
    String^ fileName, IRelDecryptor^ decryptor)
{
    // Create a new XML document.
    XmlDocument^ sourceDocument = gcnew XmlDocument();
    XmlNamespaceManager^ namespaceManager =
        gcnew XmlNamespaceManager(sourceDocument->NameTable);

    // Format using white spaces.
    sourceDocument->PreserveWhitespace = true;

    // Load the passed XML file into the document.
    sourceDocument->Load(fileName);
    namespaceManager->AddNamespace("dsig",
        SignedXml::XmlDsigNamespaceUrl);

    // Find the "Signature" node and create a new
    // XmlNodeList object.
    XmlNodeList^ nodeList = 
        sourceDocument->SelectNodes("//dsig:Signature", namespaceManager);

    for (int i = 0, count = nodeList->Count; i < count; i++)
    {
        XmlDocument^ clone = (XmlDocument^) sourceDocument->Clone();
        XmlNodeList^ signatures =
            clone->SelectNodes("//dsig:Signature", namespaceManager);

        // Create a new SignedXml object and pass into it the
        // XML document clone.
        SignedXml^ signedDocument = gcnew SignedXml(clone);

        // Load the signature node.
        signedDocument->LoadXml((XmlElement^)signatures[i]);

        // Set the context for license transform
        Transform^ licenseTransform = ((Reference^)signedDocument->
            SignedInfo->References[0])->TransformChain[0];

        if ((licenseTransform::typeid == XmlLicenseTransform::typeid) 
            && (decryptor != nullptr))
        {
            // Decryptor is used to decrypt encryptedGrant
            // elements.
            ((XmlLicenseTransform^) licenseTransform)->Decryptor = decryptor;
        }

        // Check the signature and display the result.
        if (signedDocument->CheckSignature())
        {
            Console::WriteLine("SUCCESS: " +
                "CheckSignatureWithEncryptedGrant - issuer index #" + i);
        }
        else
        {
            Console::WriteLine("FAILURE: " +
                "CheckSignatureWithEncryptedGrant - issuer index #" + i);
        }
    }
}
public static void CheckSignatureWithEncryptedGrant(string fileName, IRelDecryptor decryptor)
{
    // Create a new XML document.
    XmlDocument xmlDocument = new XmlDocument();
    XmlNamespaceManager nsManager = new XmlNamespaceManager(xmlDocument.NameTable);

    // Format using white spaces.
    xmlDocument.PreserveWhitespace = true;

    // Load the passed XML file into the document.
    xmlDocument.Load(fileName);
    nsManager.AddNamespace("dsig", SignedXml.XmlDsigNamespaceUrl);

    // Find the "Signature" node and create a new XmlNodeList object.
    XmlNodeList nodeList = xmlDocument.SelectNodes("//dsig:Signature", nsManager);

    for (int i = 0, count = nodeList.Count; i < count; i++)
    {
        XmlDocument clone = xmlDocument.Clone() as XmlDocument;
        XmlNodeList signatures = clone.SelectNodes("//dsig:Signature", nsManager);

        // Create a new SignedXml object and pass into it the XML document clone.
        SignedXml signedXml = new SignedXml(clone);

        // Load the signature node.
        signedXml.LoadXml((XmlElement)signatures[i]);

        // Set the context for license transform
        Transform trans = ((Reference)signedXml.SignedInfo.References[0]).TransformChain[0];

        if (trans is XmlLicenseTransform)
        {

            // Decryptor is used to decrypt encryptedGrant elements.
            if (decryptor != null)
                (trans as XmlLicenseTransform).Decryptor = decryptor;
        }

        // Check the signature and display the result.
        bool result = signedXml.CheckSignature();

        if (result)
            Console.WriteLine("SUCCESS: CheckSignatureWithEncryptedGrant - issuer index #" +
                                            i.ToString());
        else
            Console.WriteLine("FAILURE: CheckSignatureWithEncryptedGrant - issuer index #" +
                                            i.ToString());
    }
}
    Public Shared Sub CheckSignatureWithEncryptedGrant(ByVal fileName As String, ByVal decryptor As IRelDecryptor)
        ' Create a new XML document.
        Dim xmlDocument As New XmlDocument()
        Dim nsManager As New XmlNamespaceManager(xmlDocument.NameTable)

        ' Format using white spaces.
        xmlDocument.PreserveWhitespace = True

        ' Load the passed XML file into the document. 
        xmlDocument.Load(fileName)
        nsManager.AddNamespace("dsig", SignedXml.XmlDsigNamespaceUrl)

        ' Find the "Signature" node and create a new XmlNodeList object.
        Dim nodeList As XmlNodeList = xmlDocument.SelectNodes("//dsig:Signature", nsManager)

        Dim count = nodeList.Count

        For i As Integer = 0 To count - 1
            Dim clone As XmlDocument = xmlDocument.Clone()
           
            Dim signatures As XmlNodeList = clone.SelectNodes("//dsig:Signature", nsManager)

            ' Create a new SignedXml object and pass into it the XML document clone.
            Dim signedXml As New SignedXml(clone)

            ' Load the signature node.
            signedXml.LoadXml(CType(signatures(i), XmlElement))

            ' Set the context for license transform
            Dim trans As Transform = CType(signedXml.SignedInfo.References(0), Reference).TransformChain(0)

            If TypeOf trans Is XmlLicenseTransform Then

                ' Decryptor is used to decrypt encryptedGrant elements.
                If Not (decryptor Is Nothing) Then
                    CType(trans, XmlLicenseTransform).Decryptor = decryptor
                End If

            End If

            ' Check the signature and display the result.
            Dim result As Boolean = signedXml.CheckSignature()

            If result Then
                Console.WriteLine("SUCCESS: CheckSignatureWithEncryptedGrant - issuer index #" + i.ToString())
            Else
                Console.WriteLine("FAILURE: CheckSignatureWithEncryptedGrant - issuer index #" + i.ToString())
            End If
        Next i

    End Sub
End Class

Comentarios

La XmlLicenseTransform clase representa el algoritmo de transformación de licencia tal y como se define en el lenguaje de extensión de derechos MPEG (MPEG REL).

Use la XmlLicenseTransform clase para transformar licencias XrML para firmas.

El identificador uniforme de recursos (URI) que describe la XmlLicenseTransform clase se define mediante el XmlLicenseTransformUrl campo .

Constructores

XmlLicenseTransform()

Inicializa una nueva instancia de la clase XmlLicenseTransform.

Propiedades

Algorithm

Obtiene o establece el identificador uniforme de recursos (URI) que identifica el algoritmo ejecutado en la transformación actual.

(Heredado de Transform)
Context

Obtiene o establece un objeto XmlElement que representa el contexto del documento en el que se está ejecutando el objeto Transform actual.

(Heredado de Transform)
Decryptor

Obtiene o establece el descriptor del objeto XmlLicenseTransform actual.

InputTypes

Obtiene una matriz de tipos que son entradas válidas al método OutputTypes del objeto XmlLicenseTransform actual.

OutputTypes

Obtiene una matriz de tipos que son resultados válidos del método OutputTypes del objeto XmlLicenseTransform actual.

PropagatedNamespaces

Obtiene o establece un objeto Hashtable que contiene los espacios de nombres que se propagan en la firma.

(Heredado de Transform)
Resolver

Establece el objeto XmlResolver actual.

(Heredado de Transform)

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetDigestedOutput(HashAlgorithm)

Cuando se reemplaza en una clase derivada, devuelve el algoritmo de síntesis asociado a un objeto Transform.

(Heredado de Transform)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetInnerXml()

Devuelve una representación XML de los parámetros de un objeto XmlLicenseTransform que son adecuados para incluirlos como subelementos de un elemento <Transform> XMLDSIG.

GetOutput()

Devuelve la salida de un objeto XmlLicenseTransform.

GetOutput(Type)

Devuelve la salida de un objeto XmlLicenseTransform.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetXml()

Devuelve la representación XML del objeto Transform actual.

(Heredado de Transform)
LoadInnerXml(XmlNodeList)

Analiza el objeto XmlNodeList especificado como contenido específico de la transformación de un elemento <Transform>; no se admite este método porque el objeto XmlLicenseTransform no tiene ningún elemento XML interno.

LoadInput(Object)

Carga la entrada especificada en el objeto XmlLicenseTransform actual.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a