CipherReference Class
Represents the <CipherReference> element in XML encryption. This class cannot be inherited.
System.Security.Cryptography.Xml::EncryptedReference
System.Security.Cryptography.Xml::CipherReference
Assembly: System.Security (in System.Security.dll)
The CipherReference type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | CipherReference() | Initializes a new instance of the CipherReference class. |
![]() | CipherReference(String) | Initializes a new instance of the CipherReference class using the specified Uniform Resource Identifier (URI). |
![]() | CipherReference(String, TransformChain) | Initializes a new instance of the CipherReference class using the specified Uniform Resource Identifier (URI) and transform chain information. |
| Name | Description | |
|---|---|---|
![]() | CacheValid | Gets a value that indicates whether the cache is valid. (Inherited from EncryptedReference.) |
![]() | ReferenceType | Gets or sets a reference type. (Inherited from EncryptedReference.) |
![]() | TransformChain | Gets or sets the transform chain of an EncryptedReference object. (Inherited from EncryptedReference.) |
![]() | Uri | Gets or sets the Uniform Resource Identifier (URI) of an EncryptedReference object. (Inherited from EncryptedReference.) |
| Name | Description | |
|---|---|---|
![]() | AddTransform | Adds a Transform object to the current transform chain of an EncryptedReference object. (Inherited from EncryptedReference.) |
![]() | Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | GetXml | Returns the XML representation of a CipherReference object. (Overrides EncryptedReference::GetXml().) |
![]() | LoadXml | Loads XML information into the <CipherReference> element in XML encryption. (Overrides EncryptedReference::LoadXml(XmlElement).) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
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);
Note |
|---|
The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: MayLeakOnAbort. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes. |
The following code example creates a new instance of 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 ); } }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
