KeyInfo クラス

XMLDSIG <KeyInfo> 要素を表します。

この型のすべてのメンバの一覧については、KeyInfo メンバ を参照してください。

System.Object
   System.Security.Cryptography.Xml.KeyInfo

Public Class KeyInfo
   Implements IEnumerable
[C#]
public class KeyInfo : IEnumerable
[C++]
public __gc class KeyInfo : public IEnumerable
[JScript]
public class KeyInfo implements IEnumerable

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

このクラスを使用すると、署名ジェネレータで、デジタル署名の検証に必要なキーの識別を簡単にするキー関連情報を一緒に送信できます。複数の種類のキー関連情報を 1 つの KeyInfo 内に含めることができます。それぞれの種類のキー関連情報は、関連付けられた KeyInfoClause の派生クラスを保持しています。

<KeyInfo> 要素の詳細については、www.w3.org/TR/xmldsig-core/ の W3C から提供されている XMLDSIG 仕様を参照してください。

使用例

 
'
' This example signs a file specified by a URI 
' using a detached signature. It then verifies  
' the signed XML.
'
Imports System
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml
Imports System.Text
Imports System.Xml


Class XMLDSIGDetached

   
   <STAThread()>  _
   Overloads Shared Sub Main(args() As String)
      ' The URI to sign.
      Dim resourceToSign As String = "https://www.microsoft.com"
      
      ' The name of the file to which to save the XML signature.
      Dim XmlFileName As String = "xmldsig.xml"
      
      Try
         
         ' Generate a signing key.
         Dim Key As New RSACryptoServiceProvider()
         
         Console.WriteLine("Signing: {0}", resourceToSign)
         
         ' Sign the detached resourceand save the signature in an XML file.
         SignDetachedResource(resourceToSign, XmlFileName, Key)
         
         Console.WriteLine("XML signature was succesfully computed and saved to {0}.", XmlFileName)
         
         ' Verify the signature of the signed XML.
         Console.WriteLine("Verifying signature...")
         
         'Verify the XML signature in the XML file.
         Dim result As Boolean = VerifyDetachedSignature(XmlFileName)
         
         ' Display the results of the signature verification to 
         ' the console.
         If result Then
            Console.WriteLine("The XML signature is valid.")
         Else
            Console.WriteLine("The XML signature is not valid.")
         End If
      Catch e As CryptographicException
         Console.WriteLine(e.Message)
      End Try 
   End Sub 
   
   
   ' Sign an XML file and save the signature in a new file.
   Public Shared Sub SignDetachedResource(URIString As String, XmlSigFileName As String, Key As RSA)
      ' Create a SignedXml object.
      Dim signedXml As New SignedXml()
      
      ' Assign the key to the SignedXml object.
      signedXml.SigningKey = Key
      
      ' Create a reference to be signed.
      Dim reference As New Reference()
      
      ' Add the passed URI to the reference object.
      reference.Uri = URIString
      
      ' Add a transformation if the URI is an XML file.
      If URIString.EndsWith("xml") Then
         reference.AddTransform(New XmlDsigC14NTransform())
      End If
      
      ' Add the reference to the SignedXml object.
      signedXml.AddReference(reference)
      
      ' Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate).
      Dim keyInfo As New KeyInfo()
      keyInfo.AddClause(New RSAKeyValue(CType(Key, RSA)))
      signedXml.KeyInfo = keyInfo
      
      ' Compute the signature.
      signedXml.ComputeSignature()
      
      ' Get the XML representation of the signature and save
      ' it to an XmlElement object.
      Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()
      
      ' Save the signed XML document to a file specified
      ' using the passed string.
      Dim xmltw As New XmlTextWriter(XmlSigFileName, New UTF8Encoding(False))
      xmlDigitalSignature.WriteTo(xmltw)
      xmltw.Close()
   End Sub 
 
   ' Verify the signature of an XML file and return the result.
   Public Shared Function VerifyDetachedSignature(XmlSigFileName As String) As [Boolean]
      ' Create a new XML document.
      Dim xmlDocument As New XmlDocument()
      
      ' Load the passed XML file into the document.
      xmlDocument.Load(XmlSigFileName)
      
      ' Create a new SignedXMl object.
      Dim signedXml As New SignedXml()
      
      ' Find the "Signature" node and create a new
      ' XmlNodeList object.
      Dim nodeList As XmlNodeList = xmlDocument.GetElementsByTagName("Signature")
      
      ' Load the signature node.
      signedXml.LoadXml(CType(nodeList(0), XmlElement))
      
      ' Check the signature and return the result.
      Return signedXml.CheckSignature()
   End Function
End Class 

[C#] 
//
// This example signs a file specified by a URI 
// using a detached signature. It then verifies  
// the signed XML.
//

using System;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;
using System.Text;
using System.Xml;



class XMLDSIGDetached
{
    
    [STAThread]
    static void Main(string[] args)
    {
    // The URI to sign.
        string resourceToSign = "https://www.microsoft.com";
        
        // The name of the file to which to save the XML signature.
        string XmlFileName = "xmldsig.xml";

        try
        {

            // Generate a signing key.
            RSACryptoServiceProvider Key = new RSACryptoServiceProvider();

            Console.WriteLine("Signing: {0}", resourceToSign);

            // Sign the detached resourceand save the signature in an XML file.
            SignDetachedResource(resourceToSign, XmlFileName, Key);

            Console.WriteLine("XML signature was succesfully computed and saved to {0}.", XmlFileName);

            // Verify the signature of the signed XML.
            Console.WriteLine("Verifying signature...");

            //Verify the XML signature in the XML file.
            bool result = VerifyDetachedSignature(XmlFileName);

            // Display the results of the signature verification to 
            // the console.
            if(result)
            {
                Console.WriteLine("The XML signature is valid.");
            }
            else
            {
                Console.WriteLine("The XML signature is not valid.");
            }
        }
        catch(CryptographicException e)
        {
            Console.WriteLine(e.Message);

        }
        
    }

    // Sign an XML file and save the signature in a new file.
    public static void SignDetachedResource(string URIString, string XmlSigFileName, RSA Key)
    {
        // Create a SignedXml object.
        SignedXml signedXml = new SignedXml();

        // Assign the key to the SignedXml object.
        signedXml.SigningKey = Key;

        // Create a reference to be signed.
        Reference reference = new Reference();

        // Add the passed URI to the reference object.
        reference.Uri = URIString;

        // Add a transformation if the URI is an XML file.
        if (URIString.EndsWith("xml")) 
        {
            reference.AddTransform(new XmlDsigC14NTransform());
        }
        
        // Add the reference to the SignedXml object.
        signedXml.AddReference(reference);

        // Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate).
        KeyInfo keyInfo = new KeyInfo();
        keyInfo.AddClause(new RSAKeyValue((RSA)Key));    
        signedXml.KeyInfo = keyInfo;

        // Compute the signature.
        signedXml.ComputeSignature();

        // Get the XML representation of the signature and save
        // it to an XmlElement object.
        XmlElement xmlDigitalSignature = signedXml.GetXml();

        // Save the signed XML document to a file specified
        // using the passed string.
        XmlTextWriter xmltw = new XmlTextWriter(XmlSigFileName, new UTF8Encoding(false));
        xmlDigitalSignature.WriteTo(xmltw);
        xmltw.Close();
    }
    // Verify the signature of an XML file and return the result.
    public static Boolean VerifyDetachedSignature(string XmlSigFileName)
    {    
        // Create a new XML document.
        XmlDocument xmlDocument = new XmlDocument();

        // Load the passed XML file into the document.
        xmlDocument.Load(XmlSigFileName);
    
        // Create a new SignedXMl object.
        SignedXml signedXml = new SignedXml();

        // Find the "Signature" node and create a new
        // XmlNodeList object.
        XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature");

        // Load the signature node.
        signedXml.LoadXml((XmlElement)nodeList[0]);

        // Check the signature and return the result.
        return signedXml.CheckSignature();
    }
}

[C++] 
//
// This example signs a file specified by a URI 
// using a detached signature. It then verifies  
// the signed XML.
//

#using <mscorlib.dll>
#using <System.Security.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::Xml;
using namespace System::Text;
using namespace System::Xml;

// Sign an XML file and save the signature in a new file.
void SignDetachedResource(String* URIString, String* XmlSigFileName, RSA* Key) {
   // Create a SignedXml object.
   SignedXml* signedXml = new SignedXml();

   // Assign the key to the SignedXml object.
   signedXml->SigningKey = Key;

   // Create a reference to be signed.
   Reference* reference = new Reference();

   // Add the passed URI to the reference object.
   reference->Uri = URIString;

   // Add a transformation if the URI is an XML file.
   if (URIString->EndsWith(S"xml")) {
      reference->AddTransform(new XmlDsigC14NTransform());
   } 


   // Add the reference to the SignedXml object.
   signedXml->AddReference(reference);

   // Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate).
   KeyInfo* keyInfo = new KeyInfo();
   keyInfo->AddClause(new RSAKeyValue(__try_cast<RSA*>(Key)));    
   signedXml->KeyInfo = keyInfo;

   // Compute the signature.
   signedXml->ComputeSignature();

   // Get the XML representation of the signature and save
   // it to an XmlElement object.
   XmlElement* xmlDigitalSignature = signedXml->GetXml();

   // Save the signed XML document to a file specified
   // using the passed string.
   XmlTextWriter* xmltw = new XmlTextWriter(XmlSigFileName, new UTF8Encoding(false));
   xmlDigitalSignature->WriteTo(xmltw);
   xmltw->Close();
}

// Verify the signature of an XML file and return the result.
Boolean VerifyDetachedSignature(String* XmlSigFileName) {    
   // Create a new XML document.
   XmlDocument* xmlDocument = new XmlDocument();

   // Load the passed XML file into the document.
   xmlDocument->Load(XmlSigFileName);

   // Create a new SignedXMl object.
   SignedXml* signedXml = new SignedXml();

   // Find the "Signature" node and create a new
   // XmlNodeList object.
   XmlNodeList* nodeList = xmlDocument->GetElementsByTagName(S"Signature");

   // Load the signature node.
   signedXml->LoadXml(__try_cast<XmlElement*>( nodeList->Item(0) ));

   // Check the signature and return the result.
   return signedXml->CheckSignature();
}

[STAThread]
int main() {
   String* args[] = Environment::GetCommandLineArgs();
   // The URI to sign.
   String* resourceToSign = S"https://www.microsoft.com";

   // The name of the file to which to save the XML signature.
   String* XmlFileName = S"xmldsig.xml";

   try {

      // Generate a signing key.
      RSACryptoServiceProvider* Key = new RSACryptoServiceProvider();

      Console::WriteLine(S"Signing: {0}", resourceToSign);

      // Sign the detached resourceand save the signature in an XML file.
      SignDetachedResource(resourceToSign, XmlFileName, Key);

      Console::WriteLine(S"XML signature was succesfully computed and saved to {0}.", XmlFileName);

      // Verify the signature of the signed XML.
      Console::WriteLine(S"Verifying signature...");

      //Verify the XML signature in the XML file.
      bool result = VerifyDetachedSignature(XmlFileName);

      // Display the results of the signature verification to 
      // the console.
      if (result) {
         Console::WriteLine(S"The XML signature is valid.");
      } else {
         Console::WriteLine(S"The XML signature is not valid.");
      }
   } catch (CryptographicException* e) {
      Console::WriteLine(e->Message);

   }

}

[Visual Basic] 
'
' This example signs an XML file using an
' envelope signature. It then verifies the 
' signed XML.
'
Imports System
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.Security.Cryptography.Xml
Imports System.Text
Imports System.Xml



Public Class SignVerifyEnvelope
   
   Overloads Public Shared Sub Main(args() As [String])
      Try
         ' Generate a signing key.
         Dim Key As New RSACryptoServiceProvider()
         
         ' Create an XML file to sign.
         CreateSomeXml("Example.xml")
         Console.WriteLine("New XML file created.")
         
         ' Sign the XML that was just created and save it in a 
         ' new file.
         SignXmlFile("Example.xml", "SignedExample.xml", Key)
         Console.WriteLine("XML file signed.")
         
         ' Verify the signature of the signed XML.
         Console.WriteLine("Verifying signature...")
         Dim result As Boolean = VerifyXmlFile("SignedExample.xml")
         
         ' Display the results of the signature verification to \
         ' the console.
         If result Then
            Console.WriteLine("The XML signature is valid.")
         Else
            Console.WriteLine("The XML signature is not valid.")
         End If
      Catch e As CryptographicException
         Console.WriteLine(e.Message)
      End Try
   End Sub 
   
   
   ' Sign an XML file and save the signature in a new file.
   Public Shared Sub SignXmlFile(FileName As String, SignedFileName As String, Key As RSA)
      ' Create a new XML document.
      Dim doc As New XmlDocument()
      
      ' Format the document to ignore white spaces.
      doc.PreserveWhitespace = False
      
      ' Load the passed XML file using it's name.
      doc.Load(New XmlTextReader(FileName))
      
      ' Create a SignedXml object.
      Dim signedXml As New SignedXml(doc)
      
      ' Add the key to the SignedXml document. 
      signedXml.SigningKey = Key
      
      ' Create a reference to be signed.
      Dim reference As New Reference()
      reference.Uri = ""
      
      ' Add a transformation to the reference.
      Dim trns = New XmlDsigC14NTransform()
      reference.AddTransform(trns)
      
      ' Add an enveloped transformation to the reference.
      Dim env As New XmlDsigEnvelopedSignatureTransform()
      reference.AddTransform(env)
      
      ' Add the reference to the SignedXml object.
      signedXml.AddReference(reference)
      
      
      ' Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate).
      Dim keyInfo As New KeyInfo()
      keyInfo.AddClause(New RSAKeyValue(CType(Key, RSA)))
      signedXml.KeyInfo = keyInfo
      
      ' Compute the signature.
      signedXml.ComputeSignature()
      
      ' Get the XML representation of the signature and save
      ' it to an XmlElement object.
      Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()
      
      ' Append the element to the XML document.
      doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))
      
      
      If TypeOf doc.FirstChild Is XmlDeclaration Then
         doc.RemoveChild(doc.FirstChild)
      End If
      
      ' Save the signed XML document to a file specified
      ' using the passed string.
      Dim xmltw As New XmlTextWriter(SignedFileName, New UTF8Encoding(False))
      doc.WriteTo(xmltw)
      xmltw.Close()
   End Sub 
   ' Verify the signature of an XML file and return the result.
   Public Shared Function VerifyXmlFile(Name As [String]) As [Boolean]
      ' Create a new XML document.
      Dim xmlDocument As New XmlDocument()
      
      ' Format using white spaces.
      xmlDocument.PreserveWhitespace = True
      
      ' Load the passed XML file into the document. 
      xmlDocument.Load(Name)
      
      ' Create a new SignedXml object and pass it
      ' the XML document class.
      Dim signedXml As New SignedXml(xmlDocument)
      
      ' Find the "Signature" node and create a new
      ' XmlNodeList object.
      Dim nodeList As XmlNodeList = xmlDocument.GetElementsByTagName("Signature")
      
      ' Load the signature node.
      signedXml.LoadXml(CType(nodeList(0), XmlElement))
      
      ' Check the signature and return the result.
      Return signedXml.CheckSignature()
   End Function 
   
   
   ' Create example data to sign.
   Public Shared Sub CreateSomeXml(FileName As String)
      ' Create a new XmlDocument object.
      Dim document As New XmlDocument()
      
      ' Create a new XmlNode object.
      Dim node As XmlNode = document.CreateNode(XmlNodeType.Element, "", "MyElement", "samples")
      
      ' Add some text to the node.
      node.InnerText = "Example text to be signed."
      
      ' Append the node to the document.
      document.AppendChild(node)
      
      ' Save the XML document to the file name specified.
      Dim xmltw As New XmlTextWriter(FileName, New UTF8Encoding(False))
      document.WriteTo(xmltw)
      xmltw.Close()
   End Sub 
End Class

[C#] 
//
// This example signs an XML file using an
// envelope signature. It then verifies the 
// signed XML.
//
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Xml;
using System.Text;
using System.Xml;

public class SignVerifyEnvelope
{

    public static void Main(String[] args)
    {
        try
        {
            // Generate a signing key.
            RSACryptoServiceProvider Key = new RSACryptoServiceProvider();

            // Create an XML file to sign.
            CreateSomeXml("Example.xml");
            Console.WriteLine("New XML file created."); 

            // Sign the XML that was just created and save it in a 
            // new file.
            SignXmlFile("Example.xml", "SignedExample.xml", Key);
            Console.WriteLine("XML file signed."); 

            // Verify the signature of the signed XML.
            Console.WriteLine("Verifying signature...");
            bool result = VerifyXmlFile("SignedExample.xml");

            // Display the results of the signature verification to \
            // the console.
            if(result)
            {
                Console.WriteLine("The XML signature is valid.");
            }
            else
            {
                Console.WriteLine("The XML signature is not valid.");
            }
        }
        catch(CryptographicException e)
        {
            Console.WriteLine(e.Message);
        }
    }

    // Sign an XML file and save the signature in a new file.
    public static void SignXmlFile(string FileName, string SignedFileName, RSA Key)
    {
        // Create a new XML document.
        XmlDocument doc = new XmlDocument();

        // Format the document to ignore white spaces.
        doc.PreserveWhitespace = false;

        // Load the passed XML file using it's name.
        doc.Load(new XmlTextReader(FileName));

        // Create a SignedXml object.
        SignedXml signedXml = new SignedXml(doc);

        // Add the key to the SignedXml document. 
        signedXml.SigningKey = Key;

        // Create a reference to be signed.
        Reference reference = new Reference();
        reference.Uri = "";

        // Add a transformation to the reference.
        Transform trns = new XmlDsigC14NTransform();
        reference.AddTransform(trns);

        // Add an enveloped transformation to the reference.
        XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
        reference.AddTransform(env);

        // Add the reference to the SignedXml object.
        signedXml.AddReference(reference);

        
        // Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate).
        KeyInfo keyInfo = new KeyInfo();
        keyInfo.AddClause(new RSAKeyValue((RSA)Key));
        signedXml.KeyInfo = keyInfo;

        // Compute the signature.
        signedXml.ComputeSignature();

        // Get the XML representation of the signature and save
        // it to an XmlElement object.
        XmlElement xmlDigitalSignature = signedXml.GetXml();

        // Append the element to the XML document.
        doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, true));
        
        
        if (doc.FirstChild is XmlDeclaration)  
        {
            doc.RemoveChild(doc.FirstChild);
        }

        // Save the signed XML document to a file specified
        // using the passed string.
        XmlTextWriter xmltw = new XmlTextWriter(SignedFileName, new UTF8Encoding(false));
        doc.WriteTo(xmltw);
        xmltw.Close();
    }
    // Verify the signature of an XML file and return the result.
    public static Boolean VerifyXmlFile(String Name)
    {
        // Create a new XML document.
        XmlDocument xmlDocument = new XmlDocument();

        // Format using white spaces.
        xmlDocument.PreserveWhitespace = true;

        // Load the passed XML file into the document. 
        xmlDocument.Load(Name);

        // Create a new SignedXml object and pass it
        // the XML document class.
        SignedXml signedXml = new SignedXml(xmlDocument);

        // Find the "Signature" node and create a new
        // XmlNodeList object.
        XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature");

        // Load the signature node.
        signedXml.LoadXml((XmlElement)nodeList[0]);

        // Check the signature and return the result.
        return signedXml.CheckSignature();
    }

    // Create example data to sign.
    public static void CreateSomeXml(string FileName)
    {
        // Create a new XmlDocument object.
        XmlDocument document = new XmlDocument();

        // Create a new XmlNode object.
        XmlNode  node = document.CreateNode(XmlNodeType.Element, "", "MyElement", "samples");
        
        // Add some text to the node.
        node.InnerText = "Example text to be signed.";

        // Append the node to the document.
        document.AppendChild(node);

        // Save the XML document to the file name specified.
        XmlTextWriter xmltw = new XmlTextWriter(FileName, new UTF8Encoding(false));
        document.WriteTo(xmltw);
        xmltw.Close();
    }
}

[C++] 
//
// This example signs an XML file using an
// envelope signature. It then verifies the 
// signed XML.
//
#using <mscorlib.dll>
#using <System.Security.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::X509Certificates;
using namespace System::Security::Cryptography::Xml;
using namespace System::Text;
using namespace System::Xml;



// Sign an XML file and save the signature in a new file.
void SignXmlFile(String* FileName, String* SignedFileName, RSA* Key) {
   // Create a new XML document.
   XmlDocument* doc = new XmlDocument();

   // Format the document to ignore white spaces.
   doc->PreserveWhitespace = false;

   // Load the passed XML file using its name.
   doc->Load(new XmlTextReader(FileName));

   // Create a SignedXml object.
   SignedXml* signedXml = new SignedXml(doc);

   // Add the key to the SignedXml document. 
   signedXml->SigningKey = Key;

   // Create a reference to be signed.
   Reference* reference = new Reference();
   reference->Uri = S"";

   // Add a transformation to the reference.
   Transform* trns = new XmlDsigC14NTransform();
   reference->AddTransform(trns);

   // Add an enveloped transformation to the reference.
   XmlDsigEnvelopedSignatureTransform* env = new XmlDsigEnvelopedSignatureTransform();
   reference->AddTransform(env);

   // Add the reference to the SignedXml object.
   signedXml->AddReference(reference);


   // Add an RSAKeyValue KeyInfo (optional; helps recipient find key to validate).
   KeyInfo* keyInfo = new KeyInfo();
   keyInfo->AddClause(new RSAKeyValue(__try_cast<RSA*>(Key)));  
   signedXml->KeyInfo = keyInfo;

   // Compute the signature.
   signedXml->ComputeSignature();

   // Get the XML representation of the signature and save
   // it to an XmlElement object.
   XmlElement* xmlDigitalSignature = signedXml->GetXml();

   // Append the element to the XML document.
   doc->DocumentElement->AppendChild(doc->ImportNode(xmlDigitalSignature, true));

   if ((doc->FirstChild)->GetType() == __typeof(XmlDeclaration) ) 
   {
      doc->RemoveChild(doc->FirstChild);
   }

   // Save the signed XML document to a file specified
   // using the passed string.
   XmlTextWriter* xmltw = new XmlTextWriter(SignedFileName, new UTF8Encoding(false));
   doc->WriteTo(xmltw);
   xmltw->Close();
}
// Verify the signature of an XML file and return the result.

Boolean VerifyXmlFile(String* Name) {
   // Create a new XML document.
   XmlDocument* xmlDocument = new XmlDocument();

   // Format using white spaces.
   xmlDocument->PreserveWhitespace = true;

   // Load the passed XML file into the document. 
   xmlDocument->Load(Name);

   // Create a new SignedXml object and pass it
   // the XML document class.
   SignedXml* signedXml = new SignedXml(xmlDocument);

   // Find the "Signature" node and create a new
   // XmlNodeList object.
   XmlNodeList* nodeList = xmlDocument->GetElementsByTagName(S"Signature");

   // Load the signature node.
   signedXml->LoadXml(__try_cast<XmlElement*>( nodeList->Item(0) ));

   // Check the signature and return the result.
   return signedXml->CheckSignature();
}

// Create example data to sign.
void CreateSomeXml(String* FileName) {
   // Create a new XmlDocument object.
   XmlDocument* document = new XmlDocument();

   // Create a new XmlNode object.
   XmlNode*  node = document->CreateNode(XmlNodeType::Element, S"", S"MyElement", S"samples");

   // Add some text to the node.
   node->InnerText = S"Example text to be signed.";

   // Append the node to the document.
   document->AppendChild(node);

   // Save the XML document to the file name specified.
   XmlTextWriter* xmltw = new XmlTextWriter(FileName, new UTF8Encoding(false));
   document->WriteTo(xmltw);
   xmltw->Close();
}

int main() {
   try {
      // Generate a signing key.
      RSACryptoServiceProvider* Key = new RSACryptoServiceProvider();

      // Create an XML file to sign.
      CreateSomeXml(S"Example.xml");
      Console::WriteLine(S"New XML file created."); 

      // Sign the XML that was just created and save it in a 
      // new file.
      SignXmlFile(S"Example.xml", S"SignedExample.xml", Key);
      Console::WriteLine(S"XML file signed."); 

      // Verify the signature of the signed XML.
      Console::WriteLine(S"Verifying signature...");
      bool result = VerifyXmlFile(S"SignedExample.xml");

      // Display the results of the signature verification to
      // the console.
      if (result) {
         Console::WriteLine(S"The XML signature is valid.");
      } else {
         Console::WriteLine(S"The XML signature is not valid.");
      }
   } catch (CryptographicException* e) {
      Console::WriteLine(e->Message);
   }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Security.Cryptography.Xml

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Security (System.Security.dll 内)

参照

KeyInfo メンバ | System.Security.Cryptography.Xml 名前空間