Evidence クラス
アセンブリ: mscorlib (mscorlib.dll 内)
構文
<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public NotInheritable Class Evidence Implements ICollection, IEnumerable
[SerializableAttribute] [ComVisibleAttribute(true)] public sealed class Evidence : ICollection, IEnumerable
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class Evidence sealed : ICollection, IEnumerable
一般的な形式の証拠には、署名や、コードの発生源である場所などが含まれますが、どのような情報を含めてもかまいません。セキュリティ ポリシーによって認識される任意の型のオブジェクトが証拠を表します。
セキュリティ ポリシーは、コード グループで構成されます。アセンブリはセキュリティ アクセス許可を付与されるコードの基本単位ですが、コード グループのメンバシップ条件を満たしている場合に、そのコード グループのメンバになります。証拠とは、ポリシーに渡される一連の情報であり、アセンブリが属しているコード グループを判断するためにメンバシップ条件によって使用されます。
Evidence クラスは、証拠を表すオブジェクト セットを格納しているコレクション (ICollection のトピックを参照) です。このクラスには、証拠の提供元 (ホストおよびアセンブリ) に対応する 2 つの証拠セットが格納されます。
ポリシーは、コードに与えるアクセス許可を評価するときに、2 つの異なる提供元から証拠を取得できます。
-
Host evidence はホストによって提供されますが、ControlEvidence アクセス許可を与えられたホストだけが提供できます。通常、この証拠は、コードの発生源とアセンブリのデジタル署名から成る証拠です。通常、発生源に関する証拠には、Url、Site、Zone の各証拠が含まれます。署名は、ソフトウェアの発行元 (AuthentiCode X.509v3 署名) ID と厳密な名前 ID を参照します。これらのデジタル署名ベースの ID はいずれもアセンブリに組み込まれますが、ホストによって検証されてからポリシーに渡される必要があります。これらの署名は、読み込み時にセキュリティ システムによって検証されます。システムは、検証後に適切な証拠を作成し、その証拠は対応する署名が有効な場合にだけポリシーに渡されます。
-
Assembly evidence はアセンブリの一部に含まれています。開発者または管理者は、アセンブリにカスタムの証拠を追加して、ポリシーに渡す証拠セットを拡張できます。アセンブリに証拠を追加できるのは、アセンブリの生成時で、そのアセンブリに署名する前に限られます。セキュリティ システムの既定のポリシーは、アセンブリから提供される証拠を無視しますが、この証拠を認識するように拡張できます。
ホストおよびアセンブリが提供する 2 つの証拠を使用して、新しい Evidence クラスを作成する方法を次のコード例に示します。
Imports System Imports System.Collections Imports System.Security Imports System.Security.Policy Imports System.Security.Permissions Imports System.Globalization Imports Microsoft.VisualBasic Public Class Evidence_Example Public Function CreateEvidence() As Boolean Dim retVal As Boolean = True Try ' Create empty evidence using the default contructor. Dim ev1 As New Evidence Console.WriteLine("Created empty evidence with the default constructor.") ' Constructor used to create null host evidence. Dim ev2a As New Evidence(Nothing) Console.WriteLine("Created an Evidence object with null host evidence.") ' Constructor used to create host evidence. Dim url As New Url("http://www.treyresearch.com") Console.WriteLine(("Adding host evidence " & url.ToString())) ev2a.AddHost(url) Dim ev2b As New Evidence(ev2a) Console.WriteLine("Copy evidence into new evidence") Dim enum1 As IEnumerator = ev2b.GetHostEnumerator() enum1.MoveNext() Console.WriteLine(enum1.Current.ToString()) ' Constructor used to create both host and assembly evidence. Dim oa1() As [Object] Dim site As New Site("www.wideworldimporters.com") Dim oa2 As [Object]() = {url, site} Dim ev3a As New Evidence(oa1, oa2) enum1 = ev3a.GetHostEnumerator() Dim enum2 As IEnumerator = ev3a.GetAssemblyEnumerator() enum2.MoveNext() Dim obj1 As [Object] = enum2.Current enum2.MoveNext() Console.WriteLine(("URL = " & obj1.ToString() & " Site = " & enum2.Current.ToString())) ' Constructor used to create null host and null assembly evidence. Dim ev3b As New Evidence(Nothing, Nothing) Console.WriteLine("Create new evidence with null host and assembly evidence") Catch e As Exception Console.WriteLine("Fatal error: {0}", e.ToString()) Return False End Try Return retVal End Function 'CreateEvidence Public Function DemonstrateEvidenceMembers() As Evidence Dim myEvidence As New Evidence Dim sPubKeyBlob As String = "00240000048000009400000006020000" & "00240000525341310004000001000100" & "19390E945A40FB5730204A25FA5DC4DA" & "B18688B412CB0EDB87A6EFC50E2796C9" & "B41AD3040A7E46E4A02516C598678636" & "44A0F74C39B7AB9C38C01F10AF4A5752" & "BFBCDF7E6DD826676AD031E7BCE63393" & "495BAD2CA4BE03B529A73C95E5B06BE7" & "35CA0F622C63E8F54171BD73E4C8F193" & "CB2664163719CA41F8159B8AC88F8CD3" Dim pubkey As [Byte]() = HexsToArray(sPubKeyBlob) ' Create a strong name. Dim mSN As New StrongName(New StrongNamePublicKeyBlob(pubkey), "SN01", New Version("0.0.0.0")) ' Create assembly and host evidence. Console.WriteLine("Adding assembly evidence.") myEvidence.AddAssembly("SN01") myEvidence.AddAssembly(New Version("0.0.0.0")) myEvidence.AddAssembly(mSN) Console.WriteLine(("Count of evidence items = " & myEvidence.Count.ToString())) Dim url As New Url("http://www.treyresearch.com") Console.WriteLine(("Adding host evidence " & url.ToString())) myEvidence.AddHost(url) PrintEvidence(myEvidence).ToString() Console.WriteLine(("Count of evidence items = " & myEvidence.Count.ToString())) Console.WriteLine(ControlChars.Lf & "Copy the evidence to an array using CopyTo, then display the array.") Dim evidenceArray(myEvidence.Count - 1) As Object myEvidence.CopyTo(evidenceArray, 0) Dim obj As Object For Each obj In evidenceArray Console.WriteLine(obj.ToString()) Next obj Console.WriteLine(ControlChars.Lf & "Display the contents of the properties.") Console.WriteLine("Locked is the only property normally used by code.") Console.WriteLine("IsReadOnly, IsSynchronized, and SyncRoot properties are not normally used.") Console.WriteLine((ControlChars.Lf & "The default value for the Locked property = " & myEvidence.Locked.ToString())) Console.WriteLine(ControlChars.Lf & "Get the hashcode for the evidence.") Console.WriteLine(("HashCode = " & myEvidence.GetHashCode().ToString())) Console.WriteLine(ControlChars.Lf & "Get the type for the evidence.") Console.WriteLine(("Type = " & myEvidence.GetType().ToString())) Console.WriteLine(ControlChars.Lf & "Merge new evidence with the current evidence.") Dim oa1() As [Object] Dim site As New Site("www.wideworldimporters.com") Dim oa2 As [Object]() = {url, site} Dim newEvidence As New Evidence(oa1, oa2) myEvidence.Merge(newEvidence) Console.WriteLine(("Evidence count = " & PrintEvidence(myEvidence).ToString())) Console.WriteLine(ControlChars.Lf & "Remove URL evidence.") myEvidence.RemoveType(url.GetType()) Console.WriteLine(("Evidence count is now: " & myEvidence.Count.ToString())) Console.WriteLine(ControlChars.Lf & "Make a copy of the current evidence.") Dim evidenceCopy As New Evidence(myEvidence) Console.WriteLine(("Count of new evidence items = " & evidenceCopy.Count.ToString())) Console.WriteLine(("Does the copy equal the current evidence? " & myEvidence.Equals(evidenceCopy))) Console.WriteLine(ControlChars.Lf & "Clear the current evidence.") myEvidence.Clear() Console.WriteLine(("Count is now " & myEvidence.Count.ToString())) Return myEvidence End Function 'DemonstrateEvidenceMembers Public Shared Function PrintEvidence(ByVal myEvidence As Evidence) As Integer Dim p As Integer = 0 Console.WriteLine(ControlChars.Lf & "Current evidence = ") If myEvidence Is Nothing Then Return 0 End If Dim list As IEnumerator = myEvidence.GetEnumerator() Dim obj As Object While list.MoveNext() Console.WriteLine(list.Current.ToString()) p = p + 1 End While Console.WriteLine(ControlChars.Lf) Return p End Function 'PrintEvidence ' Convert a hexidecimal string to an array. Public Shared Function HexsToArray(ByVal sHexString As String) As Byte() Dim array(sHexString.Length / 2) As [Byte] Dim i As Integer For i = 0 To sHexString.Length - 2 Step 2 array((i / 2)) = [Byte].Parse(sHexString.Substring(i, 2), NumberStyles.HexNumber) Next i Return array End Function 'HexsToArray ' Main method. Public Shared Sub Main() Try Dim EvidenceTest As New Evidence_Example Dim ret As Boolean = EvidenceTest.CreateEvidence() If ret Then Console.WriteLine("Evidence successfully created.") Else Console.WriteLine("Evidence creation failed.") End If EvidenceTest.DemonstrateEvidenceMembers() Catch e As Exception Console.WriteLine(e.ToString()) Environment.ExitCode = 101 End Try End Sub 'Main End Class 'Evidence_Example
using System; using System.Collections; using System.Security; using System.Security.Policy; using System.Security.Permissions; using System.Globalization; public class Evidence_Example { public bool CreateEvidence() { bool retVal = true; try { // Create empty evidence using the default contructor. Evidence ev1 = new Evidence(); Console.WriteLine("Created empty evidence with the default constructor."); // Constructor used to create null host evidence. Evidence ev2a = new Evidence(null); Console.WriteLine("Created an Evidence object with null host evidence."); // Constructor used to create host evidence. Url url = new Url("http://www.treyresearch.com"); Console.WriteLine("Adding host evidence " + url.ToString()); ev2a.AddHost(url); Evidence ev2b = new Evidence(ev2a); Console.WriteLine("Copy evidence into new evidence"); IEnumerator enum1 = ev2b.GetHostEnumerator(); enum1.MoveNext(); Console.WriteLine(enum1.Current.ToString()); // Constructor used to create both host and assembly evidence. Object [] oa1 = {}; Site site = new Site("www.wideworldimporters.com"); Object [] oa2 = { url, site }; Evidence ev3a = new Evidence(oa1, oa2); enum1 = ev3a.GetHostEnumerator(); IEnumerator enum2 = ev3a.GetAssemblyEnumerator(); enum2.MoveNext(); Object obj1 = enum2.Current; enum2.MoveNext(); Console.WriteLine("URL = " + obj1.ToString() + " Site = " + enum2.Current.ToString()); // Constructor used to create null host and null assembly evidence. Evidence ev3b = new Evidence(null, null); Console.WriteLine("Create new evidence with null host and assembly evidence"); } catch (Exception e) { Console.WriteLine("Fatal error: {0}", e.ToString()); return false; } return retVal; } public Evidence DemonstrateEvidenceMembers() { Evidence myEvidence = new Evidence(); string sPubKeyBlob = "00240000048000009400000006020000" + "00240000525341310004000001000100" + "19390E945A40FB5730204A25FA5DC4DA" + "B18688B412CB0EDB87A6EFC50E2796C9" + "B41AD3040A7E46E4A02516C598678636" + "44A0F74C39B7AB9C38C01F10AF4A5752" + "BFBCDF7E6DD826676AD031E7BCE63393" + "495BAD2CA4BE03B529A73C95E5B06BE7" + "35CA0F622C63E8F54171BD73E4C8F193" + "CB2664163719CA41F8159B8AC88F8CD3"; Byte[] pubkey = HexsToArray(sPubKeyBlob); // Create a strong name. StrongName mSN = new StrongName(new StrongNamePublicKeyBlob(pubkey), "SN01", new Version("0.0.0.0")); // Create assembly and host evidence. Console.WriteLine("Adding assembly evidence."); myEvidence.AddAssembly("SN01"); myEvidence.AddAssembly(new Version("0.0.0.0")); myEvidence.AddAssembly(mSN); Console.WriteLine("Count of evidence items = " + myEvidence.Count.ToString()); Url url = new Url("http://www.treyresearch.com"); Console.WriteLine("Adding host evidence " + url.ToString()); myEvidence.AddHost(url); PrintEvidence(myEvidence).ToString(); Console.WriteLine("Count of evidence items = " + myEvidence.Count.ToString()); Console.WriteLine("\nCopy the evidence to an array using CopyTo, then display the array."); object[] evidenceArray = new object[myEvidence.Count]; myEvidence.CopyTo(evidenceArray, 0); foreach (object obj in evidenceArray) { Console.WriteLine(obj.ToString()); } Console.WriteLine("\nDisplay the contents of the properties."); Console.WriteLine("Locked is the only property normally used by code."); Console.WriteLine("IsReadOnly, IsSynchronized, and SyncRoot properties are not normally used."); Console.WriteLine("\nThe default value for the Locked property = " + myEvidence.Locked.ToString()); Console.WriteLine("\nGet the hashcode for the evidence."); Console.WriteLine("HashCode = " + myEvidence.GetHashCode().ToString()); Console.WriteLine("\nGet the type for the evidence."); Console.WriteLine("Type = " + myEvidence.GetType().ToString()); Console.WriteLine("\nMerge new evidence with the current evidence."); Object [] oa1 = {}; Site site = new Site("www.wideworldimporters.com"); Object [] oa2 = { url, site }; Evidence newEvidence = new Evidence(oa1, oa2); myEvidence.Merge(newEvidence); Console.WriteLine("Evidence count = " + PrintEvidence(myEvidence).ToString()); Console.WriteLine("\nRemove URL evidence."); myEvidence.RemoveType(url.GetType()); Console.WriteLine("Evidence count is now: " + myEvidence.Count.ToString()); Console.WriteLine("\nMake a copy of the current evidence."); Evidence evidenceCopy = new Evidence(myEvidence); Console.WriteLine("Count of new evidence items = " + evidenceCopy.Count); Console.WriteLine("Does the copy equal the current evidence? " + myEvidence.Equals(evidenceCopy)); Console.WriteLine("\nClear the current evidence."); myEvidence.Clear(); Console.WriteLine("Count is now " + myEvidence.Count.ToString()); return myEvidence; } public static int PrintEvidence(Evidence myEvidence) { int p = 0; Console.WriteLine("\nCurrent evidence = "); if (null == myEvidence) return 0; IEnumerator list = myEvidence.GetEnumerator(); while (list.MoveNext()) { Console.WriteLine(list.Current.ToString()); } Console.WriteLine("\n"); return p; } // Convert a hexidecimal string to an array. public static byte[] HexsToArray(string sHexString) { Byte[] array = new Byte[sHexString.Length/2]; for (int i = 0; i < sHexString.Length; i += 2) { array[i / 2] = Byte.Parse(sHexString.Substring(i, 2), NumberStyles.HexNumber); } return array; } // Main method. public static void Main() { try { Evidence_Example EvidenceTest = new Evidence_Example(); bool ret = EvidenceTest.CreateEvidence(); if (ret) { Console.WriteLine("Evidence successfully created."); } else { Console.WriteLine("Evidence creation failed."); } EvidenceTest.DemonstrateEvidenceMembers(); } catch(Exception e) { Console.WriteLine(e.ToString()); Environment.ExitCode = 101; } } }
using namespace System; using namespace System::Collections; using namespace System::Security; using namespace System::Security::Policy; using namespace System::Security::Permissions; using namespace System::Globalization; public ref class Evidence_Example { public: bool CreateEvidence() { bool retVal = true; try { // Create empty evidence using the default contructor. Evidence^ ev1 = gcnew Evidence; Console::WriteLine( "Created empty evidence with the default constructor." ); // Constructor used to create null host evidence. Evidence^ ev2a = gcnew Evidence( nullptr ); Console::WriteLine( "Created an Evidence object with null host evidence." ); // Constructor used to create host evidence. Url^ url = gcnew Url( "http://www.treyresearch.com" ); Console::WriteLine( "Adding host evidence {0}", url ); ev2a->AddHost( url ); Evidence^ ev2b = gcnew Evidence( ev2a ); Console::WriteLine( "Copy evidence into new evidence" ); IEnumerator^ enum1 = ev2b->GetHostEnumerator(); enum1->MoveNext(); Console::WriteLine( enum1->Current ); // Constructor used to create both host and assembly evidence. array<Object^>^oa1 = {}; Site^ site = gcnew Site( "www.wideworldimporters.com" ); array<Object^>^oa2 = {url,site}; Evidence^ ev3a = gcnew Evidence( oa1,oa2 ); enum1 = ev3a->GetHostEnumerator(); IEnumerator^ enum2 = ev3a->GetAssemblyEnumerator(); enum2->MoveNext(); Object^ obj1 = enum2->Current; enum2->MoveNext(); Console::WriteLine( "URL = {0} Site = {1}", obj1, enum2->Current ); // Constructor used to create null host and null assembly evidence. Evidence^ ev3b = gcnew Evidence( nullptr,nullptr ); Console::WriteLine( "Create new evidence with null host and assembly evidence" ); } catch ( Exception^ e ) { Console::WriteLine( "Fatal error: {0}", e ); return false; } return retVal; } Evidence^ DemonstrateEvidenceMembers() { Evidence^ myEvidence = gcnew Evidence; String^ sPubKeyBlob = "00240000048000009400000006020000" "00240000525341310004000001000100" "19390E945A40FB5730204A25FA5DC4DA" "B18688B412CB0EDB87A6EFC50E2796C9" "B41AD3040A7E46E4A02516C598678636" "44A0F74C39B7AB9C38C01F10AF4A5752" "BFBCDF7E6DD826676AD031E7BCE63393" "495BAD2CA4BE03B529A73C95E5B06BE7" "35CA0F622C63E8F54171BD73E4C8F193" "CB2664163719CA41F8159B8AC88F8CD3"; array<Byte>^pubkey = HexsToArray( sPubKeyBlob ); // Create a strong name. StrongName^ mSN = gcnew StrongName( gcnew StrongNamePublicKeyBlob( pubkey ),"SN01",gcnew Version( "0.0.0.0" ) ); // Create assembly and host evidence. Console::WriteLine( "Adding assembly evidence." ); myEvidence->AddAssembly( "SN01" ); myEvidence->AddAssembly( gcnew Version( "0.0.0.0" ) ); myEvidence->AddAssembly( mSN ); Console::WriteLine( "Count of evidence items = {0}", myEvidence->Count ); Url^ url = gcnew Url( "http://www.treyresearch.com" ); Console::WriteLine( "Adding host evidence {0}", url ); myEvidence->AddHost( url ); PrintEvidence( myEvidence ).ToString(); Console::WriteLine( "Count of evidence items = {0}", myEvidence->Count ); Console::WriteLine( "\nCopy the evidence to an array using CopyTo, then display the array." ); array<Object^>^evidenceArray = gcnew array<Object^>(myEvidence->Count); myEvidence->CopyTo( evidenceArray, 0 ); for each (Object^ obj in evidenceArray) { Console::WriteLine(obj->ToString()); } Console::WriteLine( "\nDisplay the contents of the properties." ); Console::WriteLine( "Locked is the only property normally used by code." ); Console::WriteLine( "IsReadOnly, IsSynchronized, and SyncRoot properties are not normally used." ); Console::WriteLine( "\nThe default value for the Locked property = {0}", myEvidence->Locked ); Console::WriteLine( "\nGet the hashcode for the evidence." ); Console::WriteLine( "HashCode = {0}", myEvidence->GetHashCode() ); Console::WriteLine( "\nGet the type for the evidence." ); Console::WriteLine( "Type = {0}", myEvidence->GetType() ); Console::WriteLine( "\nMerge new evidence with the current evidence." ); array<Object^>^oa1 = {}; Site^ site = gcnew Site( "www.wideworldimporters.com" ); array<Object^>^oa2 = {url,site}; Evidence^ newEvidence = gcnew Evidence( oa1,oa2 ); myEvidence->Merge( newEvidence ); Console::WriteLine( "Evidence count = {0}", PrintEvidence( myEvidence ) ); Console::WriteLine( "\nRemove URL evidence." ); myEvidence->RemoveType( url->GetType() ); Console::WriteLine( "Evidence count is now: {0}", myEvidence->Count ); Console::WriteLine( "\nMake a copy of the current evidence." ); Evidence^ evidenceCopy = gcnew Evidence( myEvidence ); Console::WriteLine( "Count of new evidence items = {0}", evidenceCopy->Count ); Console::WriteLine( "Does the copy equal the current evidence? {0}", myEvidence->Equals( evidenceCopy ) ); Console::WriteLine( "\nClear the current evidence." ); myEvidence->Clear(); Console::WriteLine( "Count is now {0}", myEvidence->Count ); return myEvidence; } static int PrintEvidence( Evidence^ myEvidence ) { int p = 0; Console::WriteLine( "\nCurrent evidence = " ); if ( nullptr == myEvidence ) return 0; IEnumerator^ list = myEvidence->GetEnumerator(); IEnumerator^ myEnum1 = list; while ( myEnum1->MoveNext() ) { Object^ obj = safe_cast<Object^>(myEnum1->Current); Console::WriteLine( obj ); p++; } Console::WriteLine( "\n" ); return p; } // Convert a hexadecimal string to an array. static array<Byte>^ HexsToArray( String^ sHexString ) { array<Byte>^arr = gcnew array<Byte>(sHexString->Length / 2); for ( int i = 0; i < sHexString->Length; i += 2 ) { arr[ i / 2 ] = Byte::Parse( sHexString->Substring( i, 2 ), NumberStyles::HexNumber ); } return arr; } }; // Main method. int main() { try { Evidence_Example^ EvidenceTest = gcnew Evidence_Example; bool ret = EvidenceTest->CreateEvidence(); if ( ret ) { Console::WriteLine( "Evidence successfully created." ); } else { Console::WriteLine( "Evidence creation failed." ); } EvidenceTest->DemonstrateEvidenceMembers(); } catch ( Exception^ e ) { Console::WriteLine( e ); Environment::ExitCode = 101; } }
import System.*; import System.Collections.*; import System.Security.*; import System.Security.Policy.*; import System.Security.Permissions.*; import System.Globalization.*; import System.Byte; public class EvidenceExample { public boolean CreateEvidence() { boolean retVal = true; try { // Create empty evidence using the default contructor. Evidence ev1 = new Evidence(); Console.WriteLine("Created empty evidence with the " + " default constructor."); // Constructor used to create null host evidence. Evidence ev2a = new Evidence(null); Console.WriteLine("Created an Evidence object with " + " null host evidence."); // Constructor used to create host evidence. Url url = new Url("http://www.treyresearch.com"); Console.WriteLine(("Adding host evidence " + url.ToString())); ev2a.AddHost(url); Evidence ev2b = new Evidence(ev2a); Console.WriteLine("Copy evidence into new evidence"); IEnumerator enum1 = ev2b.GetHostEnumerator(); enum1.MoveNext(); Console.WriteLine(enum1.get_Current().ToString()); // Constructor used to create both host and assembly evidence. Object oa1[] = null; Site site = new Site("www.wideworldimporters.com"); Object oa2[] = { url, site }; Evidence ev3a = new Evidence(oa1, oa2); enum1 = ev3a.GetHostEnumerator(); IEnumerator enum2 = ev3a.GetAssemblyEnumerator(); enum2.MoveNext(); Object obj1 = enum2.get_Current(); enum2.MoveNext(); Console.WriteLine(("URL = " + obj1.ToString() + " Site = " + enum2.get_Current().ToString())); // Constructor used to create null host and null assembly evidence. Evidence ev3b = new Evidence(null, null); Console.WriteLine("Create new evidence with null host and " + " assembly evidence"); } catch (System.Exception e) { Console.WriteLine("Fatal error: {0}", e.ToString()); return false; } return retVal; } //CreateEvidence public Evidence DemonstrateEvidenceMembers() { Evidence myEvidence = new Evidence(); String sPubKeyBlob = "00240000525341310004000001000100" + "19390E945A40FB5730204A25FA5DC4DA" + "B18688B412CB0EDB87A6EFC50E2796C9" + "B41AD3040A7E46E4A02516C598678636" + "44A0F74C39B7AB9C38C01F10AF4A5752" + "BFBCDF7E6DD826676AD031E7BCE63393" + "495BAD2CA4BE03B529A73C95E5B06BE7" + "35CA0F622C63E8F54171BD73E4C8F193" + "CB2664163719CA41F8159B8AC88F8CD3"; Byte pubkey[] = HexsToArray(sPubKeyBlob); // Create a strong name. StrongName mSN = new StrongName( new StrongNamePublicKeyBlob((ubyte[])pubkey), "SN01", new Version("0.0.0.0")); // Create assembly and host evidence. Console.WriteLine("Adding assembly evidence."); myEvidence.AddAssembly("SN01"); myEvidence.AddAssembly(new Version("0.0.0.0")); myEvidence.AddAssembly(mSN); Console.WriteLine(("Count of evidence items = " + myEvidence.get_Count())); Url url = new Url("http://www.treyresearch.com"); Console.WriteLine(("Adding host evidence " + url.ToString())); myEvidence.AddHost(url); String.valueOf(PrintEvidence(myEvidence)); Console.WriteLine(("Count of evidence items = " + myEvidence.get_Count())); Console.WriteLine("\nCopy the evidence to an array using CopyTo," + " then display the array."); Object evidenceArray[] = new Object[myEvidence.get_Count()]; myEvidence.CopyTo(evidenceArray, 0); for (int objCount = 0; objCount < evidenceArray.length; objCount++) { Object obj = evidenceArray[objCount]; Console.WriteLine(obj.ToString()); } Console.WriteLine("\nDisplay the contents of the properties."); Console.WriteLine("Locked is the only property normally used by code."); Console.WriteLine("IsReadOnly, IsSynchronized, and SyncRoot " + " properties are not normally used."); Console.WriteLine(("\nThe default value for the Locked property = " + System.Convert.ToString(myEvidence.get_Locked()))); Console.WriteLine("\nGet the hashcode for the evidence."); Console.WriteLine(("HashCode = " + myEvidence.GetHashCode())); Console.WriteLine("\nGet the type for the evidence."); Console.WriteLine(("Type = " + myEvidence.GetType().ToString())); Console.WriteLine("\nMerge new evidence with the current evidence."); Object oa1[] = null; Site site = new Site("www.wideworldimporters.com"); Object oa2[] = { url, site }; Evidence newEvidence = new Evidence(oa1, oa2); myEvidence.Merge(newEvidence); Console.WriteLine(("Evidence count = " + PrintEvidence(myEvidence))); Console.WriteLine("\nRemove URL evidence."); myEvidence.RemoveType(url.GetType()); Console.WriteLine(("Evidence count is now: " + myEvidence.get_Count())); Console.WriteLine("\nMake a copy of the current evidence."); Evidence evidenceCopy = new Evidence(myEvidence); Console.WriteLine(("Count of new evidence items = " + evidenceCopy.get_Count())); Console.WriteLine(("Does the copy equal the current evidence? " + System.Convert.ToString(myEvidence.Equals(evidenceCopy)))); Console.WriteLine("\nClear the current evidence."); myEvidence.Clear(); Console.WriteLine(("Count is now " + myEvidence.get_Count())); return myEvidence; } //DemonstrateEvidenceMembers public static int PrintEvidence(Evidence myEvidence) { int p = 0; Console.WriteLine("\nCurrent evidence = "); if (null == myEvidence) { return 0; } IEnumerator list = myEvidence.GetEnumerator(); while (list.MoveNext()) { Console.WriteLine(String.valueOf(list.get_Current())); } Console.WriteLine("\n"); return p; } //PrintEvidence public static System.Byte[] HexsToArray(String sHexString) { Byte array[] = new Byte[sHexString.get_Length() / 2]; for (int i = 0; i < sHexString.get_Length(); i += 2) { array[i / 2] = (Byte)Byte.Parse(sHexString.Substring(i, 2), NumberStyles.HexNumber); } return array; } //HexsToArray public static void main(String[] args) { try { EvidenceExample EvidenceTest = new EvidenceExample(); boolean ret = EvidenceTest.CreateEvidence(); if (ret) { Console.WriteLine("Evidence successfully created."); } else { Console.WriteLine("Evidence creation failed."); } EvidenceTest.DemonstrateEvidenceMembers(); } catch (System.Exception e) { Console.WriteLine(e.ToString()); Environment.set_ExitCode(101); } } //main } //EvidenceExample
System.Security.Policy.Evidence
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- Evidence クラスのページへのリンク