CipherReference クラス

定義

XML 暗号化の <CipherReference> 要素を表します。 このクラスは継承できません。

public ref class CipherReference sealed : System::Security::Cryptography::Xml::EncryptedReference
public sealed class CipherReference : System.Security.Cryptography.Xml.EncryptedReference
type CipherReference = class
    inherit EncryptedReference
Public NotInheritable Class CipherReference
Inherits EncryptedReference
継承
CipherReference

次のコード例では、 の新しいインスタンスを CipherReference作成します。

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

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

/// This sample used the EncryptedData class to create an encrypted data element
/// and write it to an XML file. It demonstrates the use of CipherReference.

[STAThread]
int main()
{
   
   //Create a URI string.
   String^ uri = "http://www.woodgrovebank.com/document.xml";
   
   // Create a Base64 transform. The input content retrieved from the
   // URI should be Base64-decoded before other processing.
   Transform^ base64 = gcnew XmlDsigBase64Transform;
   
   //Create a transform chain and add the transform to it.
   TransformChain^ tc = gcnew TransformChain;
   tc->Add( base64 );
   
   //Create <CipherReference> information.
   CipherReference ^ reference = gcnew CipherReference( uri,tc );
   
   // Create a new CipherData object using the CipherReference information.
   // Note that you cannot assign both a CipherReference and a CipherValue
   // to a CipherData object.
   CipherData ^ cd = gcnew CipherData( reference );
   
   // Create a new EncryptedData object.
   EncryptedData^ ed = gcnew EncryptedData;
   
   //Add an encryption method to the object.
   ed->Id = "ED";
   ed->EncryptionMethod = gcnew EncryptionMethod( "http://www.w3.org/2001/04/xmlenc#aes128-cbc" );
   ed->CipherData = cd;
   
   //Add key information to the object.
   KeyInfo^ ki = gcnew KeyInfo;
   ki->AddClause( gcnew KeyInfoRetrievalMethod( "#EK","http://www.w3.org/2001/04/xmlenc#EncryptedKey" ) );
   ed->KeyInfo = ki;
   
   // Create new XML document and put encrypted data into it.
   XmlDocument^ doc = gcnew XmlDocument;
   XmlElement^ encryptionPropertyElement = dynamic_cast<XmlElement^>(doc->CreateElement( "EncryptionProperty", EncryptedXml::XmlEncNamespaceUrl ));
   EncryptionProperty ^ ep = gcnew EncryptionProperty( encryptionPropertyElement );
   ed->AddProperty( ep );
   
   // Output the resulting XML information into a file.
   try
   {
      String^ path = "c:\\test\\MyTest.xml";
      File::WriteAllText( path, ed->GetXml()->OuterXml );
   }
   catch ( IOException^ e ) 
   {
      Console::WriteLine( "File IO error. {0}", e );
   }

}
using System;
using System.Security.Cryptography.Xml;
using System.Xml;
using System.IO;

/// This sample used the EncryptedData class to create an encrypted data element
/// and write it to an XML file. It demonstrates the use of CipherReference.
namespace EncryptedDataSample
{
    class Example
    {
        [STAThread]
        static void Main(string[] args)
        {
            //Create a URI string.
            String uri = "http://www.woodgrovebank.com/document.xml";
            // Create a Base64 transform. The input content retrieved from the
            // URI should be Base64-decoded before other processing.
            Transform base64 = new XmlDsigBase64Transform();
            //Create a transform chain and add the transform to it.
            TransformChain tc = new TransformChain();
            tc.Add(base64);
            //Create <CipherReference> information.
            CipherReference reference = new CipherReference(uri, tc);

            // Create a new CipherData object using the CipherReference information.
            // Note that you cannot assign both a CipherReference and a CipherValue
            // to a CipherData object.
            CipherData cd = new CipherData(reference);

            // Create a new EncryptedData object.
            EncryptedData ed = new EncryptedData();

            //Add an encryption method to the object.
            ed.Id = "ED";
            ed.EncryptionMethod = new EncryptionMethod("http://www.w3.org/2001/04/xmlenc#aes128-cbc");
            ed.CipherData = cd;

            //Add key information to the object.
            KeyInfo ki = new KeyInfo();
            ki.AddClause(new KeyInfoRetrievalMethod("#EK", "http://www.w3.org/2001/04/xmlenc#EncryptedKey"));
            ed.KeyInfo = ki;

            // Create new XML document and put encrypted data into it.
            XmlDocument doc = new XmlDocument();
            XmlElement encryptionPropertyElement = (XmlElement)doc.CreateElement("EncryptionProperty", EncryptedXml.XmlEncNamespaceUrl);
            EncryptionProperty ep = new EncryptionProperty(encryptionPropertyElement);
            ed.AddProperty(ep);

            // Output the resulting XML information into a file.
            try
            {
                string path = @"c:\test\MyTest.xml";

                File.WriteAllText(path, ed.GetXml().OuterXml);
            }
            catch (IOException e)
            {
                Console.WriteLine("File IO error. {0}", e);
            }
        }
    }
}
Imports System.Security.Cryptography.Xml
Imports System.Xml
Imports System.IO


'/ This sample used the EncryptedData class to create a EncryptedData element
'/ and write it to an XML file. It demonstrates the use of CipherReference.
Module Module1

    Sub Main()
        ' Create a URI string.
        Dim uri As String = "http://www.woodgrovebank.com/document.xml"
        ' Create a Base64 transform. The input content retrieved from the
        ' URI should be Base64-decoded before other processing.
        Dim base64 As Transform = New XmlDsigBase64Transform
        Dim tc As New TransformChain
        tc.Add(base64)
        ' Create <CipherReference> information.
        Dim reference As CipherReference = New CipherReference(uri, tc)

        ' Create a new CipherData object.
        ' Note that you cannot assign both a CipherReference and a CipherValue
        ' to a CipherData object.
        Dim cd As CipherData = New CipherData(Reference)

        ' Create a new EncryptedData object.
        Dim ed As New EncryptedData

        'Add an encryption method to the object.
        ed.Id = "ED"
        ed.EncryptionMethod = New EncryptionMethod("http://www.w3.org/2001/04/xmlenc#aes128-cbc")
        ed.CipherData = cd

        'Add key information to the object.
        Dim ki As New KeyInfo
        ki.AddClause(New KeyInfoRetrievalMethod("#EK", "http://www.w3.org/2001/04/xmlenc#EncryptedKey"))
        ed.KeyInfo = ki

        ' Create new XML document and put encrypted data into it.
        Dim doc As New XmlDocument
        Dim encryptionPropertyElement As XmlElement = CType(doc.CreateElement("EncryptionProperty", EncryptedXml.XmlEncNamespaceUrl), XmlElement)
        Dim ep As New EncryptionProperty(encryptionPropertyElement)
        ed.AddProperty(ep)

        ' Output the resulting XML information into a file.
        Dim path As String = "c:\test\MyTest.xml"
        File.WriteAllText(path, ed.GetXml().OuterXml)
    End Sub

End Module

注釈

このクラスは、XML 暗号化の <CipherReference> 要素を表します。 これは、処理されると暗号化されたデータを生成するソースを識別します。

によって参照される実際の <CipherReference> 暗号化されたデータは、次のプロセスによって取得されます。 プロパティには <CipherReference> URI 、逆参照される Uniform Resource Identifier (URI) が含まれています。 要素に <CipherReference> 変換チェーンも含まれている場合、URI を逆参照した結果のデータは、指定されたとおりに変換され、暗号化されたデータが生成されます。 たとえば、暗号化されたデータが XML ドキュメント内で base64 エンコードされている場合、変換では XPath 式の後に base64 デコードが指定されるため、暗号化されたデータを抽出できます。

URI と変換の構文は、XML デジタル署名の構文と似ています。 ただし、XML デジタル署名では、生成処理と検証処理の両方が同じソース データから開始され、同じ順序で変換が実行されます。 XML 暗号化では、暗号化解除アプリケーションには暗号化されたデータと指定された変換のみが含まれます。 変換は、暗号化されたデータを取得するために必要な順序で列挙されます。

メモ既定では、 プロパティが null であるため、Web サイトのファイルなど、ソースが不明なドキュメントからの暗号参照をDocumentEvidence逆参照することはできません。 たとえば、Web 上のファイルを参照する要素を <CipherReference> 含むファイルの暗号化を解除しようとすると、 SecurityException 要求が完全に信頼されたアセンブリによって行われた場合でも、 がスローされます。

暗号化を解除するドキュメントが信頼できる場合は、次のコードを使用して、完全に信頼されたアプリケーションに対してこの動作を変更できます。

Evidence ev = new Evidence();  
ev.AddHost (new Zone(SecurityZone.MyComputer));  
EncryptedXml exml = new EncryptedXml(doc, ev);  

コンストラクター

CipherReference()

CipherReference クラスの新しいインスタンスを初期化します。

CipherReference(String)

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

CipherReference(String, TransformChain)

指定した URI (Uniform Resource Identifier) および変換チェーン情報を使用して、CipherReference クラスの新しいインスタンスを初期化します。

プロパティ

CacheValid

キャッシュが有効かどうかを示す値を取得します。

(継承元 EncryptedReference)
ReferenceType

参照型を取得または設定します。

(継承元 EncryptedReference)
TransformChain

EncryptedReference オブジェクトの変換チェーンを取得または設定します。

(継承元 EncryptedReference)
Uri

EncryptedReference オブジェクトの URI (Uniform Resource Identifier) を取得または設定します。

(継承元 EncryptedReference)

メソッド

AddTransform(Transform)

Transform オブジェクトの現在の変換チェーンに EncryptedReference オブジェクトを追加します。

(継承元 EncryptedReference)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetXml()

CipherReference オブジェクトの XML 表現を返します。

LoadXml(XmlElement)

XML 情報を XML 暗号化の <CipherReference> 要素に読み込みます。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象