Teilen über


CipherReference Klasse

Definition

Stellt das <CipherReference>-Element bei XML-Verschlüsselung dar. Diese Klasse kann nicht vererbt werden.

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
Vererbung
CipherReference

Beispiele

Im folgenden Codebeispiel wird eine neue instance von CipherReferenceerstellt.

#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

Hinweise

Diese Klasse stellt das Element in der <CipherReference> XML-Verschlüsselung dar. Es identifiziert eine Quelle, die bei der Verarbeitung die verschlüsselten Daten ergibt.

Die tatsächlichen verschlüsselten Daten, auf die von verwiesen wird, <CipherReference> werden durch den folgenden Prozess abgerufen. Die <CipherReference> URI -Eigenschaft enthält einen URI (Uniform Resource Identifier), der dereferenziert wird. Wenn das <CipherReference> Element auch eine Transformationskette enthält, werden die Daten, die sich aus der Dereferenzierung des URI ergeben, wie angegeben transformiert, um die verschlüsselten Daten zu erzeugen. Wenn die verschlüsselten Daten beispielsweise in einem XML-Dokument base64-codiert sind, geben die Transformationen einen XPath-Ausdruck gefolgt von einer Base64-Decodierung an, damit die verschlüsselten Daten extrahiert werden können.

Die Syntax des URI und der Transformationen ähnelt der syntax von digitalen XML-Signaturen. In digitalen XML-Signaturen beginnen jedoch sowohl die Generierung als auch die Validierungsverarbeitung mit den gleichen Quelldaten und führen diese Transformation in derselben Reihenfolge aus. Bei der XML-Verschlüsselung verfügt die entschlüsselte Anwendung nur über die verschlüsselten Daten und die angegebenen Transformationen. Die Transformationen werden in der Reihenfolge aufgelistet, die zum Abrufen der verschlüsselten Daten erforderlich ist.

Hinweis Standardmäßig können Sie keine Verschlüsselungsverweise aus Dokumenten mit unbekannten Quellen, z. B. Dateien von einer Website, dereferenzieren, da die DocumentEvidence Eigenschaft NULL ist. Wenn Sie beispielsweise versuchen, eine Datei zu entschlüsseln, die ein <CipherReference> Element enthält, das auf eine Datei im Web verweist, wird ein SecurityException ausgelöst, auch wenn die Anforderung von einer voll vertrauenswürdigen Assembly gestellt wird.

Wenn Sie sicher sind, dass die dokumente, die Sie entschlüsseln, als vertrauenswürdig eingestuft werden können, können Sie dieses Verhalten für voll vertrauenswürdige Anwendungen mithilfe des folgenden Codes ändern:

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

Konstruktoren

CipherReference()

Initialisiert eine neue Instanz der CipherReference-Klasse.

CipherReference(String)

Initialisiert eine neue Instanz der CipherReference-Klasse mit dem angegebenen URI (Uniform Resource Identifier).

CipherReference(String, TransformChain)

Initialisiert eine neue Instanz der CipherReference-Klasse mit dem angegebenen URI (Uniform Resource Identifier) und Transformationsketteninformationen.

Eigenschaften

CacheValid

Ruft einen Wert ab, der angibt, ob der Cache gültig ist.

(Geerbt von EncryptedReference)
ReferenceType

Ruft einen Verweistyp ab oder legt diesen fest.

(Geerbt von EncryptedReference)
TransformChain

Ruft die Transformationskette eines EncryptedReference-Objekts ab oder legt diese fest.

(Geerbt von EncryptedReference)
Uri

Ruft den URI (Uniform Resource Identifier) eines EncryptedReference-Objekts ab oder legt diesen fest.

(Geerbt von EncryptedReference)

Methoden

AddTransform(Transform)

Fügt der aktuellen Transformationskette eines Transform-Objekts ein EncryptedReference-Objekt hinzu.

(Geerbt von EncryptedReference)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetXml()

Gibt die XML-Darstellung eines CipherReference-Objekts zurück.

LoadXml(XmlElement)

Lädt XML-Informationen in XML-Verschlüsselung in das <CipherReference>-Element.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: