XmlLicenseTransform Klass

Definition

Representerar algoritmen för licenstransformering som används för att normalisera XrML-licenser för signaturer.

public ref class XmlLicenseTransform : System::Security::Cryptography::Xml::Transform
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XmlDsigXsltTransform uses XslCompiledTransform which requires dynamic code.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The algorithm implementations referenced in the XML payload might be removed. Ensure the required algorithm implementations are preserved in your application.")]
public class XmlLicenseTransform : System.Security.Cryptography.Xml.Transform
public class XmlLicenseTransform : System.Security.Cryptography.Xml.Transform
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XmlDsigXsltTransform uses XslCompiledTransform which requires dynamic code.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The algorithm implementations referenced in the XML payload might be removed. Ensure the required algorithm implementations are preserved in your application.")>]
type XmlLicenseTransform = class
    inherit Transform
type XmlLicenseTransform = class
    inherit Transform
Public Class XmlLicenseTransform
Inherits Transform
Arv
XmlLicenseTransform
Attribut

Exempel

I följande kodexempel visas hur du verifierar en digital XML-signatur med hjälp av IRelDecryptor gränssnittet och XmlLicenseTransform klassen.

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

Kommentarer

Klassen XmlLicenseTransform representerar licenstransformeringsalgoritmen enligt definitionen i MPEG Rights Extension Language (MPEG REL).

XmlLicenseTransform Använd klassen för att transformera XrML-licenser för signaturer.

Den URI (Uniform Resource Identifier) som beskriver XmlLicenseTransform klassen definieras av fältet XmlLicenseTransformUrl .

Konstruktorer

Name Description
XmlLicenseTransform()

Initierar en ny instans av XmlLicenseTransform klassen.

Egenskaper

Name Description
Algorithm

Hämtar eller anger den URI (Uniform Resource Identifier) som identifierar algoritmen som utförs av den aktuella transformeringen.

(Ärvd från Transform)
Context

Hämtar eller anger ett XmlElement objekt som representerar dokumentkontexten under vilken det aktuella Transform objektet körs.

(Ärvd från Transform)
Decryptor

Hämtar eller anger dekryptatorn för det aktuella XmlLicenseTransform objektet.

InputTypes

Hämtar en matris med typer som är giltiga indata till OutputTypes metoden för det aktuella XmlLicenseTransform objektet.

OutputTypes

Hämtar en matris med typer som är giltiga utdata från OutputTypes metoden för det aktuella XmlLicenseTransform objektet.

PropagatedNamespaces

Hämtar eller anger ett Hashtable objekt som innehåller de namnområden som sprids till signaturen.

(Ärvd från Transform)
Resolver

Anger det aktuella XmlResolver objektet.

(Ärvd från Transform)

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetDigestedOutput(HashAlgorithm)

När den åsidosättas i en härledd klass returnerar den sammandrag som är associerad med ett Transform objekt.

(Ärvd från Transform)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetInnerXml()

Returnerar en XML-representation av parametrarna för ett XmlLicenseTransform objekt som är lämpligt att inkluderas som underelement i ett XMLDSIG-element <Transform> .

GetOutput()

Returnerar utdata från ett XmlLicenseTransform objekt.

GetOutput(Type)

Returnerar utdata från ett XmlLicenseTransform objekt.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
GetXml()

Returnerar XML-representationen av det aktuella Transform objektet.

(Ärvd från Transform)
LoadInnerXml(XmlNodeList)

Parsar det angivna XmlNodeList objektet som transformeringsspecifikt innehåll i ett <Transform> element. Den här metoden stöds inte eftersom objektet XmlLicenseTransform inte har några inre XML-element.

LoadInput(Object)

Läser in de angivna indata i det aktuella XmlLicenseTransform objektet.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för