This documentation is archived and is not being maintained.

CipherReference Class

Represents the <CipherReference> element in XML encryption. This class cannot be inherited.

Namespace:  System.Security.Cryptography.Xml
Assembly:  System.Security (in System.Security.dll)

'Declaration
Public NotInheritable Class CipherReference _
	Inherits EncryptedReference
'Usage
Dim instance As CipherReference

This class represents the <CipherReference> element in XML encryption. It identifies a source which, when processed, yields the encrypted data.

The actual encrypted data referenced by the <CipherReference> is obtained by the following process. The <CipherReference> URI property contains a Uniform Resource Identifier (URI) that is dereferenced. If the <CipherReference> element also contains a transform chain, the data resulting from dereferencing the URI is transformed as specified to produce the encrypted data. For example, if the encrypted data is base64-encoded within an XML document, the transforms would specify an XPath expression followed by a base64 decoding so the encrypted data can be extracted.

The syntax of the URI and transforms is similar to that of XML digital signatures. However, in XML digital signatures, both generation and validation processing start with the same source data and perform that transform in the same order. In XML encryption, the decrypting application has only the encrypted data and the specified transforms. The transforms are enumerated in the order necessary to obtain the encrypted data.

Note   By default, you cannot dereference cipher references from documents with unknown sources, such as files from a Web site, because the DocumentEvidence property is null. For example, when you attempt to decrypt a file containing a <CipherReference> element that references a file on the Web, a SecurityException is thrown, even if the request is made by a fully trusted assembly.

If you are sure the documents you are decrypting can be trusted, you can change this behavior for fully trusted applications by using the following code:

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

The following code example creates a new instance of CipherReference.

Imports System
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

System.Object
  System.Security.Cryptography.Xml.EncryptedReference
    System.Security.Cryptography.Xml.CipherReference

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Show: