CipherReference Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
<CipherReference> Представляет элемент в xml-шифровании. Этот класс не может быть унаследован.
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.
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
Комментарии
Этот класс представляет <CipherReference> элемент в xml-шифровании. Он определяет источник, который при обработке выдает зашифрованные данные.
Фактические зашифрованные данные, на которые ссылается ссылка, <CipherReference> осуществляется следующим процессом. Свойство <CipherReference> URI содержит универсальный идентификатор ресурса (URI), который разыменовывается.
<CipherReference> Если элемент также содержит цепочку преобразования, данные, полученные от отмены ссылок URI, преобразуются, как указано для создания зашифрованных данных. Например, если зашифрованные данные закодированы в XML-документе, преобразования указывают выражение XPath, за которым следует декодирование base64, чтобы зашифрованные данные можно было извлечь.
Синтаксис URI и преобразований аналогичен синтаксису цифровых подписей XML. Однако в цифровых подписях XML обработка и создание, и проверка начинаются с одинаковых исходных данных и выполняют это преобразование в одном порядке. В xml-шифровании приложение расшифровки имеет только зашифрованные данные и указанные преобразования. Преобразования перечисляются в порядке, необходимом для получения зашифрованных данных.
Примечание По умолчанию нельзя разыменовывать ссылки на шифры из документов с неизвестными источниками, такими как файлы с веб-сайта, так как DocumentEvidence свойство равно NULL. Например, при попытке расшифровать файл, содержащий элемент, ссылающийся <CipherReference> на файл в Интернете, создается исключение, SecurityException даже если запрос выполняется полностью доверенной сборкой.
Если вы уверены, что расшифровка документов может быть доверенным, это поведение можно изменить для полностью доверенных приложений с помощью следующего кода:
Evidence ev = new Evidence();
ev.AddHost (new Zone(SecurityZone.MyComputer));
EncryptedXml exml = new EncryptedXml(doc, ev);
Конструкторы
| Имя | Описание |
|---|---|
| CipherReference() |
Инициализирует новый экземпляр класса CipherReference. |
| CipherReference(String, TransformChain) |
Инициализирует новый экземпляр класса с помощью указанного универсального идентификатора CipherReference ресурса (URI) и сведений о цепочке преобразований. |
| CipherReference(String) |
Инициализирует новый экземпляр класса с помощью указанного универсального CipherReference идентификатора ресурса (URI). |
Свойства
| Имя | Описание |
|---|---|
| CacheValid |
Возвращает значение, указывающее, является ли кэш допустимым. (Унаследовано от EncryptedReference) |
| ReferenceType |
Возвращает или задает ссылочный тип. (Унаследовано от EncryptedReference) |
| TransformChain |
Возвращает или задает цепочку EncryptedReference преобразования объекта. (Унаследовано от EncryptedReference) |
| Uri |
Возвращает или задает универсальный код ресурса (URI) EncryptedReference объекта. (Унаследовано от EncryptedReference) |
Методы
| Имя | Описание |
|---|---|
| AddTransform(Transform) |
Добавляет объект в текущую Transform цепочку EncryptedReference преобразования объекта. (Унаследовано от EncryptedReference) |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| GetXml() |
Возвращает XML-представление CipherReference объекта. |
| LoadXml(XmlElement) |
Загружает XML-данные в |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |