XmlLicenseTransform Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente l'algorithme de transformation de licence utilisé pour normaliser les licences XrML pour les signatures.
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
- Héritage
Exemples
L’exemple de code suivant montre comment valider une signature numérique XML à l’aide de l’interface IRelDecryptor et de la XmlLicenseTransform classe .
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
Remarques
La XmlLicenseTransform classe représente l’algorithme de transformation de licence tel que défini dans MPEG Rights Extension Language (MPEG REL).
Utilisez la XmlLicenseTransform classe pour transformer les licences XrML pour les signatures.
L’URI (Uniform Resource Identifier) qui décrit la XmlLicenseTransform classe est défini par le XmlLicenseTransformUrl champ .
Constructeurs
XmlLicenseTransform() |
Initialise une nouvelle instance de la classe XmlLicenseTransform. |
Propriétés
Algorithm |
Obtient ou définit l'URI (Uniform Resource Identifier) qui identifie l'algorithme exécuté par la transformation actuelle. (Hérité de Transform) |
Context |
Obtient ou définit un objet XmlElement qui représente le contexte de document dans lequel l'objet Transform actuel est exécuté. (Hérité de Transform) |
Decryptor |
Obtient ou définit le déchiffreur de l'objet XmlLicenseTransform actuel. |
InputTypes |
Obtient un tableau de types qui constituent des entrées valides dans les méthodes OutputTypes de l'objet XmlLicenseTransform en cours. |
OutputTypes |
Obtient un tableau de types qui constituent des sorties valides de la méthode OutputTypes de l'objet XmlLicenseTransform en cours. |
PropagatedNamespaces |
Obtient ou définit un objet Hashtable qui contient les espaces de noms qui sont propagés dans la signature. (Hérité de Transform) |
Resolver |
Définit l'objet XmlResolver en cours. (Hérité de Transform) |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetDigestedOutput(HashAlgorithm) |
En cas de substitution dans une classe dérivée, retourne le Digest associé à un objet Transform. (Hérité de Transform) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetInnerXml() |
Retourne une représentation XML des paramètres d'un objet XmlLicenseTransform qui conviennent pour être inclus comme sous-éléments d'un élément |
GetOutput() |
Retourne la sortie d'un objet XmlLicenseTransform. |
GetOutput(Type) |
Retourne la sortie d'un objet XmlLicenseTransform. |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
GetXml() |
Retourne la représentation XML de l'objet Transform en cours. (Hérité de Transform) |
LoadInnerXml(XmlNodeList) |
Analyse l'objet XmlNodeList spécifié en tant que contenu spécifique à la transformation d'un élément |
LoadInput(Object) |
Charge l'entrée spécifiée dans l'objet XmlLicenseTransform en cours. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |