다음을 통해 공유


XmlLicenseTransform 클래스

정의

서명을 위한 XrML 라이센스를 정규화하는 데 사용되는 라이센스 변환 알고리즘을 나타냅니다.

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
상속
XmlLicenseTransform

예제

다음 코드 예제에서는 인터페이스 및 클래스를 사용 하 여 XML 디지털 서명의 유효성을 검사 하는 IRelDecryptor 방법을 보여 주는 XmlLicenseTransform 클래스입니다.

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

설명

클래스는 XmlLicenseTransform MPEG REL(MPEG 권한 확장 언어)에 정의된 라이선스 변환 알고리즘을 나타냅니다.

클래스를 XmlLicenseTransform 사용하여 서명에 대한 XrML 라이선스를 변환합니다.

클래스를 설명하는 XmlLicenseTransform URI(Uniform Resource Identifier)는 필드에 의해 XmlLicenseTransformUrl 정의됩니다.

생성자

XmlLicenseTransform()

XmlLicenseTransform 클래스의 새 인스턴스를 초기화합니다.

속성

Algorithm

현재 변환에서 수행되는 알고리즘을 식별하는 URI(Uniform Resource Identifier)를 가져오거나 설정합니다.

(다음에서 상속됨 Transform)
Context

현재 XmlElement 개체가 실행되고 있는 문서 컨텍스트를 나타내는 Transform 개체를 가져오거나 설정합니다.

(다음에서 상속됨 Transform)
Decryptor

현재 XmlLicenseTransform 개체의 decryptor를 가져오거나 설정합니다.

InputTypes

현재 OutputTypes 개체의 XmlLicenseTransform 메서드에 유효한 입력 형식의 배열을 가져옵니다.

OutputTypes

현재 OutputTypes 개체의 XmlLicenseTransform 메서드에서 유효한 출력 형식의 배열을 가져옵니다.

PropagatedNamespaces

서명으로 전파되는 네임스페이스가 포함된 Hashtable 개체를 가져오거나 설정합니다.

(다음에서 상속됨 Transform)
Resolver

현재의 XmlResolver 개체를 설정합니다.

(다음에서 상속됨 Transform)

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetDigestedOutput(HashAlgorithm)

파생 클래스에서 재정의된 경우 Transform 개체와 관련된 다이제스트를 반환합니다.

(다음에서 상속됨 Transform)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetInnerXml()

XMLDSIG <Transform> 요소의 하위 요소로 포함하기에 적합한 XmlLicenseTransform 개체의 매개 변수에 대한 XML 표현을 반환합니다.

GetOutput()

XmlLicenseTransform 개체의 출력을 반환합니다.

GetOutput(Type)

XmlLicenseTransform 개체의 출력을 반환합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
GetXml()

현재 Transform 개체의 XML 표현을 반환합니다.

(다음에서 상속됨 Transform)
LoadInnerXml(XmlNodeList)

지정된 XmlNodeList 개체를 <Transform> 요소의 변환 관련 내용으로 구문 분석합니다. 이 메서드는 XmlLicenseTransform 개체에 내부 XML 요소가 없기 때문에 지원되지 않습니다.

LoadInput(Object)

지정된 입력을 현재 XmlLicenseTransform 개체로 로드합니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상