XmlLicenseTransform Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt den Lizenztransformationsalgorithmus dar, mit dem XrML-Lizenzen für Signaturen normalisiert werden.
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
- Vererbung
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie eine digitale XML-Signatur mithilfe der IRelDecryptor -Schnittstelle und der XmlLicenseTransform -Klasse überprüft wird.
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
Hinweise
Die XmlLicenseTransform -Klasse stellt den Lizenztransformationsalgorithmus dar, wie in mpeg Rights Extension Language (MPEG REL) definiert.
Verwenden Sie die XmlLicenseTransform -Klasse, um XrML-Lizenzen für Signaturen zu transformieren.
Der URI (Uniform Resource Identifier), der die XmlLicenseTransform Klasse beschreibt, wird durch das XmlLicenseTransformUrl Feld definiert.
Konstruktoren
XmlLicenseTransform() |
Initialisiert eine neue Instanz der XmlLicenseTransform-Klasse. |
Eigenschaften
Algorithm |
Ruft einen URI (Uniform Resource Identifier) ab, der den durch die aktuelle Transformation ausgeführten Algorithmus bezeichnet, oder legt diesen fest. (Geerbt von Transform) |
Context |
Ruft ein XmlElement-Objekt ab, das den Dokumentenkontext darstellt, unter dem das aktuelle Transform-Objekt ausgeführt wird, oder legt dieses fest. (Geerbt von Transform) |
Decryptor |
Ruft den Entschlüsselungsmechanismus des aktuellen XmlLicenseTransform-Objekts ab oder legt diesen fest. |
InputTypes |
Ruft ein Array von Typen ab, die gültige Eingaben der OutputTypes-Methode des aktuellen XmlLicenseTransform-Objekts sind. |
OutputTypes |
Ruft ein Array von Typen ab, die gültige Ausgaben der OutputTypes-Methode des aktuellen XmlLicenseTransform-Objekts sind. |
PropagatedNamespaces |
Ruft ein Hashtable-Objekt mit den Namespaces ab, die in die Signatur weitergegeben werden, oder legt dieses Objekt fest. (Geerbt von Transform) |
Resolver |
Legt das aktuelle XmlResolver-Objekt fest. (Geerbt von Transform) |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetDigestedOutput(HashAlgorithm) |
Gibt beim Überschreiben in einer abgeleiteten Klasse den einem Transform-Objekt zugeordneten Digest zurück. (Geerbt von Transform) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetInnerXml() |
Gibt eine XML-Darstellung der Parameter eines XmlLicenseTransform-Objekts zurück, die als Unterelemente eines XMLDSIG- |
GetOutput() |
Gibt die Ausgabe eines XmlLicenseTransform-Objekts zurück. |
GetOutput(Type) |
Gibt die Ausgabe eines XmlLicenseTransform-Objekts zurück. |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
GetXml() |
Gibt die XML-Darstellung des aktuellen Transform-Objekts zurück. (Geerbt von Transform) |
LoadInnerXml(XmlNodeList) |
Analysiert das angegebene XmlNodeList-Objekt als transformationsspezifischen Inhalt eines |
LoadInput(Object) |
Lädt die angegebene Eingabe in das aktuelle XmlLicenseTransform-Objekt. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |