DataReference コンストラクタとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > DataReference コンストラクタの意味・解説 

DataReference コンストラクタ (String, TransformChain)

メモ : このコンストラクタは、.NET Framework version 2.0新しく追加されたものです。

指定した URI (Uniform Resource Identifier) および TransformChain オブジェクト使用して、DataReference クラス新しインスタンス初期化します。

名前空間: System.Security.Cryptography.Xml
アセンブリ: System.Security (system.security.dll 内)
構文構文

Public Sub New ( _
    uri As String, _
    transformChain As TransformChain _
)
Dim uri As String
Dim transformChain As TransformChain

Dim instance As New DataReference(uri,
 transformChain)
public DataReference (
    string uri,
    TransformChain transformChain
)
public:
DataReference (
    String^ uri, 
    TransformChain^ transformChain
)
public DataReference (
    String uri, 
    TransformChain transformChain
)
public function DataReference (
    uri : String, 
    transformChain : TransformChain
)

パラメータ

uri

暗号化されたデータを指す URI (Uniform Resource Identifier)。

transformChain

暗号化されたデータに対して適用する変換記述する TransformChain オブジェクト

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
DataReference クラス
DataReference メンバ
System.Security.Cryptography.Xml 名前空間

DataReference コンストラクタ (String)

メモ : このコンストラクタは、.NET Framework version 2.0新しく追加されたものです。

指定した URI (Uniform Resource Identifier) を使用して、DataReference クラス新しインスタンス初期化します。

名前空間: System.Security.Cryptography.Xml
アセンブリ: System.Security (system.security.dll 内)
構文構文

public DataReference (
    string uri
)
public:
DataReference (
    String^ uri
)
public DataReference (
    String uri
)
public function DataReference (
    uri : String
)

パラメータ

uri

暗号化されたデータを指す URI (Uniform Resource Identifier)。

解説解説

このコンストラクタは、指定されURI (Uniform Resource Identifier) を使って<DataReference> 要素を表す DataReference クラス新しインスタンス作成します。この URI は、暗号化されたデータの場所を示します<DataReference> 要素は、<ReferenceList> 要素の子要素です。

XML 暗号化標準詳細については、http://www.w3.org/TR/xmlenc-core/ を参照してください

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
DataReference クラス
DataReference メンバ
System.Security.Cryptography.Xml 名前空間

DataReference コンストラクタ

DataReference クラス新しインスタンス初期化します。
オーバーロードの一覧オーバーロードの一覧

参照参照

関連項目

DataReference クラス
DataReference メンバ
System.Security.Cryptography.Xml 名前空間

DataReference コンストラクタ ()

メモ : このコンストラクタは、.NET Framework version 2.0新しく追加されたものです。

DataReference クラス新しインスタンス初期化します。

名前空間: System.Security.Cryptography.Xml
アセンブリ: System.Security (system.security.dll 内)
構文構文

public DataReference ()
public:
DataReference ()
public DataReference ()
public function DataReference ()
解説解説

このコンストラクタは、<DataReference> 要素を表す DataReference クラス新しインスタンス作成します<DataReference> は、<ReferenceList> 要素の子要素です。

XML 暗号化標準詳細については、http://www.w3.org/TR/xmlenc-core/ を参照してください

使用例使用例

DataReference クラス使用し異なセッション キー使って複数XML 要素暗号化および復号化する方法次のコード例示します

Imports System
Imports System.Xml
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml


Module Program

    Sub Main(ByVal args() As
 String)

        ' Create an XmlDocument object.
        Dim xmlDoc As New
 XmlDocument()

        ' Load an XML file into the XmlDocument object.
        Try
            xmlDoc.PreserveWhitespace = True
            xmlDoc.Load("test.xml")
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

        ' Create a new RSA key.  This key will encrypt a symmetric key
,
        ' which will then be imbedded in the XML document.  
        Dim rsaKey As New
 RSACryptoServiceProvider


        Try
            ' Encrypt the "creditcard" element.
            Encrypt(xmlDoc, "creditcard", "EncryptedElement1",
 rsaKey, "rsaKey")

            ' Encrypt the "creditcard2" element.
            Encrypt(xmlDoc, "creditcard2", "EncryptedElement2",
 rsaKey, "rsaKey")

            ' Display the encrypted XML to the console.
            Console.WriteLine("Encrypted XML:")
            Console.WriteLine()
            Console.WriteLine(xmlDoc.OuterXml)

            ' Decrypt the "creditcard" element.
            Decrypt(xmlDoc, rsaKey, "rsaKey")

            ' Display the encrypted XML to the console.
            Console.WriteLine()
            Console.WriteLine("Decrypted XML:")
            Console.WriteLine()
            Console.WriteLine(xmlDoc.OuterXml)
        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally
            ' Clear the RSA key.
            rsaKey.Clear()
        End Try

        Console.ReadLine()

    End Sub 'Main

End Module 'Program


Module XMLEncryptionSubs

    Sub Encrypt(ByVal Doc As
 XmlDocument, ByVal ElementToEncryptName As
 String, ByVal EncryptionElementID As String, ByVal Alg As
 RSA, ByVal KeyName As String)
        ' Check the arguments.  
        If Doc Is Nothing
 Then
            Throw New ArgumentNullException("Doc")
        End If
        If ElementToEncryptName Is Nothing
 Then
            Throw New ArgumentNullException("ElementToEncrypt")
        End If
        If EncryptionElementID Is Nothing
 Then
            Throw New ArgumentNullException("EncryptionElementID")
        End If
        If Alg Is Nothing
 Then
            Throw New ArgumentNullException("Alg")
        End If
        If KeyName Is Nothing
 Then
            Throw New ArgumentNullException("KeyName")
        End If
        ''''''''''''''''''''''''''''''''''''''''''''''''
        ' Find the specified element in the XmlDocument
        ' object and create a new XmlElemnt object.
        ''''''''''''''''''''''''''''''''''''''''''''''''

        Dim elementToEncrypt As XmlElement
 = Doc.GetElementsByTagName(ElementToEncryptName)(0)


        ' Throw an XmlException if the element was not found.
        If elementToEncrypt Is Nothing
 Then
            Throw New XmlException("The
 specified element was not found")
        End If

        ''''''''''''''''''''''''''''''''''''''''''''''''
        ' Create a new instance of the EncryptedXml class 
        ' and use it to encrypt the XmlElement with the 
        ' a new random symmetric key.
        ''''''''''''''''''''''''''''''''''''''''''''''''

        ' Create a 256 bit Rijndael key.
        Dim sessionKey As New
 RijndaelManaged()
        sessionKey.KeySize = 256

        Dim eXml As New
 EncryptedXml()

        Dim encryptedElement As Byte()
 = eXml.EncryptData(elementToEncrypt, sessionKey, False)

        ''''''''''''''''''''''''''''''''''''''''''''''''
        ' Construct an EncryptedData object and populate
        ' it with the desired encryption information.
        ''''''''''''''''''''''''''''''''''''''''''''''''

        Dim edElement As New
 EncryptedData()
        edElement.Type = EncryptedXml.XmlEncElementUrl
        edElement.Id = EncryptionElementID

        ' Create an EncryptionMethod element so that the 
        ' receiver knows which algorithm to use for decryption.
        edElement.EncryptionMethod = New EncryptionMethod(EncryptedXml.XmlEncAES256Url)

        ' Encrypt the session key and add it to an EncryptedKey element.
        Dim ek As New EncryptedKey()

        Dim encryptedKey As Byte()
 = EncryptedXml.EncryptKey(sessionKey.Key, Alg, False)

        ek.CipherData = New CipherData(encryptedKey)

        ek.EncryptionMethod = New EncryptionMethod(EncryptedXml.XmlEncRSA15Url)

        ' Set the KeyInfo element to specify the
        ' name of the RSA key.
        ' Create a new KeyInfo element.
        edElement.KeyInfo = New KeyInfo()

        ' Create a new KeyInfoName element.
        Dim kin As New KeyInfoName()

        ' Specify a name for the key.
        kin.Value = KeyName

        ' Add the KeyInfoName element to the 
        ' EncryptedKey object.
        ek.KeyInfo.AddClause(kin)

        ' Create a new DataReference element
        ' for the KeyInfo element.  This optional
        ' element specifies which EncryptedData 
        ' uses this key.  An XML document can have
        ' multiple EncryptedData elements that use
        ' different keys.
        Dim dRef As New
 DataReference()

        ' Specify the EncryptedData URI. 
        dRef.Uri = "#" + EncryptionElementID

        ' Add the DataReference to the EncryptedKey.
        ek.AddReference(dRef)

        ' Add the encrypted key to the 
        ' EncryptedData object.
        edElement.KeyInfo.AddClause(New KeyInfoEncryptedKey(ek))

        ' Add the encrypted element data to the 
        ' EncryptedData object.
        edElement.CipherData.CipherValue = encryptedElement

        ''''''''''''''''''''''''''''''''''''''''''''''''
        ' Replace the element from the original XmlDocument
        ' object with the EncryptedData element.
        ''''''''''''''''''''''''''''''''''''''''''''''''
        EncryptedXml.ReplaceElement(elementToEncrypt, edElement, False)

    End Sub 'Encrypt


    Sub Decrypt(ByVal Doc As
 XmlDocument, ByVal Alg As RSA, ByVal
 KeyName As String)
        ' Check the arguments.  
        If Doc Is Nothing
 Then
            Throw New ArgumentNullException("Doc")
        End If
        If Alg Is Nothing
 Then
            Throw New ArgumentNullException("Alg")
        End If
        If KeyName Is Nothing
 Then
            Throw New ArgumentNullException("KeyName")
        End If
        ' Create a new EncryptedXml object.
        Dim exml As New
 EncryptedXml(Doc)

        ' Add a key-name mapping.
        ' This method can only decrypt documents
        ' that present the specified key name.
        exml.AddKeyNameMapping(KeyName, Alg)

        ' Decrypt the element.
        exml.DecryptDocument()

    End Sub 'Decrypt 
End Module 'XMLEncryptionSubs


' To run this sample, place the following XML
' in a file called test.xml.  Put test.xml
' in the same directory as your compiled program.
' 
'  <root>
'     <creditcard xmlns="myNamespace" Id="tag1">
'         <number>19834209</number>
'         <expiry>02/02/2002</expiry>
'     </creditcard>
'     <creditcard2 xmlns="myNamespace" Id="tag2">
'         <number>19834208</number>
'         <expiry>02/02/2002</expiry>
'     </creditcard2>
' </root>
using System;
using System.Xml;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;

class Program
{
    static void Main(string[]
 args)
    {

        // Create an XmlDocument object.
        XmlDocument xmlDoc = new XmlDocument();

        // Load an XML file into the XmlDocument object.
        try
        {
            xmlDoc.PreserveWhitespace = true;
            xmlDoc.Load("test.xml");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }

        // Create a new RSA key.  This key will encrypt a symmetric
 key,
        // which will then be imbedded in the XML document.  
        RSA rsaKey = new RSACryptoServiceProvider();


        try
        {
            // Encrypt the "creditcard" element.
            Encrypt(xmlDoc, "creditcard", "EncryptedElement1",
 rsaKey, "rsaKey");

            // Encrypt the "creditcard2" element.
            Encrypt(xmlDoc, "creditcard2", "EncryptedElement2",
 rsaKey, "rsaKey");

            // Display the encrypted XML to the console.
            Console.WriteLine("Encrypted XML:");
            Console.WriteLine();
            Console.WriteLine(xmlDoc.OuterXml);

            // Decrypt the "creditcard" element.
            Decrypt(xmlDoc, rsaKey, "rsaKey");

            // Display the encrypted XML to the console.
            Console.WriteLine();
            Console.WriteLine("Decrypted XML:");
            Console.WriteLine();
            Console.WriteLine(xmlDoc.OuterXml);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            // Clear the RSA key.
            rsaKey.Clear();
        }

        Console.ReadLine();


    }

    public static void Encrypt(XmlDocument
 Doc, string ElementToEncrypt, string EncryptionElementID,
 RSA Alg, string KeyName)
    {
        // Check the arguments.  
        if (Doc == null)
            throw new ArgumentNullException("Doc");
        if (ElementToEncrypt == null)
            throw new ArgumentNullException("ElementToEncrypt");
        if (EncryptionElementID == null)
            throw new ArgumentNullException("EncryptionElementID");
        if (Alg == null)
            throw new ArgumentNullException("Alg");
        if (KeyName == null)
            throw new ArgumentNullException("KeyName");

        ////////////////////////////////////////////////
        // Find the specified element in the XmlDocument
        // object and create a new XmlElemnt object.
        ////////////////////////////////////////////////

        XmlElement elementToEncrypt = Doc.GetElementsByTagName(ElementToEncrypt)[0]
 as XmlElement;

        // Throw an XmlException if the element was not found.
        if (elementToEncrypt == null)
        {
            throw new XmlException("The specified element
 was not found");

        }

        //////////////////////////////////////////////////
        // Create a new instance of the EncryptedXml class 
        // and use it to encrypt the XmlElement with the 
        // a new random symmetric key.
        //////////////////////////////////////////////////

        // Create a 256 bit Rijndael key.
        RijndaelManaged sessionKey = new RijndaelManaged();
        sessionKey.KeySize = 256;

        EncryptedXml eXml = new EncryptedXml();

        byte[] encryptedElement = eXml.EncryptData(elementToEncrypt, sessionKey,
 false);

        ////////////////////////////////////////////////
        // Construct an EncryptedData object and populate
        // it with the desired encryption information.
        ////////////////////////////////////////////////


        EncryptedData edElement = new EncryptedData();
        edElement.Type = EncryptedXml.XmlEncElementUrl;
        edElement.Id = EncryptionElementID;

        // Create an EncryptionMethod element so that the 
        // receiver knows which algorithm to use for decryption.

        edElement.EncryptionMethod = new EncryptionMethod(EncryptedXml.XmlEncAES256Url);

        // Encrypt the session key and add it to an EncryptedKey element.
        EncryptedKey ek = new EncryptedKey();

        byte[] encryptedKey = EncryptedXml.EncryptKey(sessionKey.Key, Alg, false);

        ek.CipherData = new CipherData(encryptedKey);

        ek.EncryptionMethod = new EncryptionMethod(EncryptedXml.XmlEncRSA15Url);

        // Set the KeyInfo element to specify the
        // name of the RSA key.

        // Create a new KeyInfo element.
        edElement.KeyInfo = new KeyInfo();

        // Create a new KeyInfoName element.
        KeyInfoName kin = new KeyInfoName();

        // Specify a name for the key.
        kin.Value = KeyName;

        // Add the KeyInfoName element to the 
        // EncryptedKey object.
        ek.KeyInfo.AddClause(kin);

        // Create a new DataReference element
        // for the KeyInfo element.  This optional
        // element specifies which EncryptedData 
        // uses this key.  An XML document can have
        // multiple EncryptedData elements that use
        // different keys.
        DataReference dRef = new DataReference();

        // Specify the EncryptedData URI. 
        dRef.Uri = "#" + EncryptionElementID;

        // Add the DataReference to the EncryptedKey.
        ek.AddReference(dRef);

        // Add the encrypted key to the 
        // EncryptedData object.

        edElement.KeyInfo.AddClause(new KeyInfoEncryptedKey(ek));

        // Add the encrypted element data to the 
        // EncryptedData object.
        edElement.CipherData.CipherValue = encryptedElement;

        ////////////////////////////////////////////////////
        // Replace the element from the original XmlDocument
        // object with the EncryptedData element.
        ////////////////////////////////////////////////////

        EncryptedXml.ReplaceElement(elementToEncrypt, edElement, false);

    }

    public static void Decrypt(XmlDocument
 Doc, RSA Alg, string KeyName)
    {
        // Check the arguments.  
        if (Doc == null)
            throw new ArgumentNullException("Doc");
        if (Alg == null)
            throw new ArgumentNullException("Alg");
        if (KeyName == null)
            throw new ArgumentNullException("KeyName");

        // Create a new EncryptedXml object.
        EncryptedXml exml = new EncryptedXml(Doc);

        // Add a key-name mapping.
        // This method can only decrypt documents
        // that present the specified key name.
        exml.AddKeyNameMapping(KeyName, Alg);

        // Decrypt the element.
        exml.DecryptDocument();

    }

}

// To run this sample, place the following XML
// in a file called test.xml.  Put test.xml
// in the same directory as your compiled program.
// 
//  <root>
//     <creditcard xmlns="myNamespace" Id="tag1">
//         <number>19834209</number>
//         <expiry>02/02/2002</expiry>
//     </creditcard>
//     <creditcard2 xmlns="myNamespace" Id="tag2">
//         <number>19834208</number>
//         <expiry>02/02/2002</expiry>
//     </creditcard2>
// </root>
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
DataReference クラス
DataReference メンバ
System.Security.Cryptography.Xml 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「DataReference コンストラクタ」の関連用語

DataReference コンストラクタのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



DataReference コンストラクタのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS