CipherReference 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 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。
#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
備註
這個類別代表 <CipherReference>
XML 加密中的 專案。 它會識別在處理時產生加密數據的來源。
所參考 <CipherReference>
的實際加密數據是由下列程式取得。 屬性 <CipherReference> URI
包含取值) 的統一資源標識碼 (URI。
<CipherReference>
如果元素也包含轉換鏈結,則會依照指定的方式轉換從取值 URI 所產生的數據,以產生加密的數據。 例如,如果加密的數據在 XML 檔中以 base64 編碼,轉換會指定 XPath 表達式,後面接著 base64 譯碼,以便擷取加密的數據。
URI 和轉換的語法類似於 XML 數位簽名的語法。 不過,在 XML 數位簽名中,產生和驗證處理都是從相同的源數據開始,並以相同的順序執行該轉換。 在 XML 加密中,解密應用程式只有加密數據和指定的轉換。 轉換會依照取得加密數據所需的順序來列舉。
注意 根據預設,您無法從具有未知來源的檔取值加密參考,例如來自網站的檔案,因為 DocumentEvidence 屬性為 Null。 例如,當您嘗試解密包含 <CipherReference>
參考 Web 上檔案之項目的檔案時, SecurityException 即使要求是由完全信任的元件提出,也會擲回 。
如果您確定解密的檔案可以受信任,您可以使用下列程式代碼來變更完全信任應用程式的行為:
Evidence ev = new Evidence();
ev.AddHost (new Zone(SecurityZone.MyComputer));
EncryptedXml exml = new EncryptedXml(doc, ev);
建構函式
CipherReference() |
初始化 CipherReference 類別的新執行個體。 |
CipherReference(String) |
利用指定的統一資源識別元 (URI),初始化 CipherReference 類別的新執行個體。 |
CipherReference(String, TransformChain) |
使用指定的統一資源識別元 (URI) 和轉換鏈結資訊,初始化 CipherReference 類別的新執行個體。 |
屬性
CacheValid |
取得值,指出快取是否有效。 (繼承來源 EncryptedReference) |
ReferenceType |
取得或設定參考型別。 (繼承來源 EncryptedReference) |
TransformChain |
取得或設定 EncryptedReference 物件的轉換鏈結。 (繼承來源 EncryptedReference) |
Uri |
取得或設定 EncryptedReference 物件的統一資源識別元 (URI)。 (繼承來源 EncryptedReference) |
方法
AddTransform(Transform) |
新增 Transform 物件至 EncryptedReference 物件的目前轉換鏈結。 (繼承來源 EncryptedReference) |
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
GetXml() |
傳回 CipherReference 物件的 XML 表示。 |
LoadXml(XmlElement) |
將 XML 資訊載入 XML 加密的 |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |