XmlLicenseTransform Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
- 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 |
| 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 |
| 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) |