XmlLicenseTransform Classe

Definição

Representa o algoritmo de transformação de licença usado para normalizar licenças XrML para assinaturas.

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
Herança
XmlLicenseTransform

Exemplos

O seguinte exemplo de código mostra como validar uma assinatura digital XML usando a IRelDecryptor interface e a XmlLicenseTransform classe.

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

Observações

A XmlLicenseTransform classe representa o algoritmo de transformação de licença conforme definido na MPEG Rights Extension Language (MPEG REL).

Use a XmlLicenseTransform classe para transformar licenças XrML para assinaturas.

O Identificador Uniforme de Recursos (URI) que descreve a XmlLicenseTransform classe é definido pelo XmlLicenseTransformUrl campo.

Construtores

Name Description
XmlLicenseTransform()

Inicializa uma nova instância da XmlLicenseTransform classe.

Propriedades

Name Description
Algorithm

Obtém ou define o Identificador Uniforme de Recursos (URI) que identifica o algoritmo realizado pela transformação atual.

(Herdado de Transform)
Context

Obtém ou define um XmlElement objeto que representa o contexto do documento sob o qual o objeto atual Transform está a correr.

(Herdado de Transform)
Decryptor

Obtém ou define o desencriptador do objeto atual XmlLicenseTransform .

InputTypes

Obtém um array de tipos que são entradas válidas para o OutputTypes método do objeto atual XmlLicenseTransform .

OutputTypes

Obtém um array de tipos que são saídas válidas a partir do OutputTypes método do objeto atual XmlLicenseTransform .

PropagatedNamespaces

Obtém ou define um Hashtable objeto que contém os namespaces que são propagados para a assinatura.

(Herdado de Transform)
Resolver

Define o objeto atual XmlResolver .

(Herdado de Transform)

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetDigestedOutput(HashAlgorithm)

Quando sobrescrito numa classe derivada, devolve o digest associado a um Transform objeto.

(Herdado de Transform)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetInnerXml()

Devolve uma representação XML dos parâmetros de um XmlLicenseTransform objeto que são adequados para serem incluídos como subelementos de um elemento XMLDSIG <Transform> .

GetOutput()

Devolve a saída de um XmlLicenseTransform objeto.

GetOutput(Type)

Devolve a saída de um XmlLicenseTransform objeto.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetXml()

Devolve a representação XML do objeto atual Transform .

(Herdado de Transform)
LoadInnerXml(XmlNodeList)

Analisa o objeto especificado XmlNodeList como conteúdo específico da transformação de um <Transform> elemento; este método não é suportado porque o XmlLicenseTransform objeto não possui elementos XML internos.

LoadInput(Object)

Carrega a entrada especificada no objeto atual XmlLicenseTransform .

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a