構文<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
継承階層
スレッド セーフ
プラットフォーム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 コンストラクタを使用する方法を次のコード例に示します。このコード例は、Evidence クラスのトピックで取り上げているコード例の一部分です。
Evidence ev1 = new Evidence(); Console.WriteLine("Created empty evidence with the default constructor.");
プラットフォーム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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
構文Dim hostEvidence As Object() Dim assemblyEvidence As Object() Dim instance As New Evidence(hostEvidence, assemblyEvidence)
使用例Evidence(Object[],Object[]) コンストラクタを使用する方法を次のコード例に示します。このコード例は、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()))
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());
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 );
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()));
プラットフォームWindows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
構文
例外
使用例Evidence(Evidence) コンストラクタを使用する方法を次のコード例に示します。このコード例は、Evidence クラスのトピックで取り上げているコード例の一部分です。
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("\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( "\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("\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))));
プラットフォームWindows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
オーバーロードの一覧| 名前 | 説明 |
|---|---|
| Evidence () | Evidence クラスの新しい空のインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
| Evidence (Evidence) | 既存のインスタンスの簡易コピーから Evidence クラスの新しいインスタンスを初期化します。 |
| Evidence (Object[], Object[]) | ホストが提供する証拠とアセンブリが提供する証拠から成る複数の証拠セットから Evidence クラスの新しいインスタンスを初期化します。 |
参照
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| AddAssembly | アセンブリによって提供される特定の証拠を証拠セットに追加します。 |
| AddHost | ホストによって提供される特定の証拠を証拠セットに追加します。 |
| Clear | ホストおよびアセンブリ証拠を証拠セットから削除します。 |
| CopyTo | Array に証拠オブジェクトをコピーします。 |
| Equals | オーバーロードされます。 オーバーライドされます。 |
| GetAssemblyEnumerator | アセンブリによって提供される証拠を列挙します。 |
| GetEnumerator | ホストが提供する証拠とアセンブリが提供する証拠の両方を含め、証拠セット内のすべての証拠を列挙します。 |
| GetHashCode | オーバーライドされます。 ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適した Evidence オブジェクトのハッシュ コードを取得します。 |
| GetHostEnumerator | ホストによって提供される証拠を列挙します。 |
| GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
| Merge | 指定した証拠セットを現在の証拠セットにマージします。 |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
| RemoveType | 特定のタイプの証拠をホストおよびアセンブリ列挙から削除します。 |
| ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |
参照セキュリティ ポリシーがアクセス許可を決定するときに使用する一連の情報を定義します。このクラスは継承できません。
Evidence データ型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック プロパティ
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| AddAssembly | アセンブリによって提供される特定の証拠を証拠セットに追加します。 |
| AddHost | ホストによって提供される特定の証拠を証拠セットに追加します。 |
| Clear | ホストおよびアセンブリ証拠を証拠セットから削除します。 |
| CopyTo | Array に証拠オブジェクトをコピーします。 |
| Equals | オーバーロードされます。 オーバーライドされます。 |
| GetAssemblyEnumerator | アセンブリによって提供される証拠を列挙します。 |
| GetEnumerator | ホストが提供する証拠とアセンブリが提供する証拠の両方を含め、証拠セット内のすべての証拠を列挙します。 |
| GetHashCode | オーバーライドされます。 ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適した Evidence オブジェクトのハッシュ コードを取得します。 |
| GetHostEnumerator | ホストによって提供される証拠を列挙します。 |
| GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
| Merge | 指定した証拠セットを現在の証拠セットにマージします。 |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
| RemoveType | 特定のタイプの証拠をホストおよびアセンブリ列挙から削除します。 |
| ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |
参照(evidence から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/01/16 16:21 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2018年3月)
|
証拠(しょうこ、英: Evidence)とは、ある命題となっている事実を立証し、事実審理者(Trier of fact)が、真偽や存否を判断するための事物である。証拠法に基づき、採用性のある証拠(英: Admissible evidence)と排除される証拠(英: Inadmissible evidence)がある。
|
|
この記事は特に記述がない限り、日本国内の法令について解説しています。また最新の法令改正を反映していない場合があります。
|
法律用語としての証拠は、証拠方法、証拠資料、証拠原因という3つの異なった意味を含んでいる。
事実を認識するための資料をもたらす有形物であり、裁判官による証拠調べの対象となる人や物そのものをいい、日常用語として目の前に出せる物としての「証拠」という用語法に近い意味を持つ。
事実を認識するための資料であり、裁判官が証拠調べにより証拠方法から得た内容をいい、証人の証言や書証の記載内容のことを指す。
証拠資料のうち裁判官が心証形成に採用したものをいい、当事者の立証活動は、自己に有利な証拠原因をできる限り多く裁判官に提供することを目的として行われることになる(刑事訴訟に関する用例であるが、「証拠不十分により処分保留のまま釈放」といった新聞でよく見かける表現は、この証拠原因の意味で「証拠」を用いていることになる。)。
ある人・物を、訴訟において証拠方法として用いることのできる資格を、証拠能力(しょうこのうりょく)という。すなわち、証拠能力のない人、物、書面等については、これを取り調べて事実認定のために用いることはできない。
一方、ある証拠資料が、証明すべき事実の認定に実際に役立つ程度を、証明力(しょうめいりょく)、証拠力、証拠価値という。例えば、証拠能力のある書面を取り調べて証拠資料が得られたとしても、その内容が信用できなかったり、証明すべき事実とあまり関係がなかったりする場合には、事実認定には役に立たないから、証明力が低いことになる。
証拠の性質によって、次のような分類がある。
人の供述(ある事実について言葉で述べること)を内容とする証拠を供述証拠、そうでない証拠を非供述証拠という。
供述証拠等の信頼性・採用可能性についての科学的分析手法は、いくつか存在する。1923年にはアメリカ合衆国で供述証拠採用の指標としてフライ基準や、嘘発見器が考案された。1975年には、裁判所の証拠採用基準を成文化したアメリカ合衆国証拠法が成立し、鑑定結果全般の信頼性判断の指標となるドーバート基準が示されたので、多くの州ではフライ基準からドーバート基準に移行している。また、嘘発見機は現在も使用されることはあるが裁判の証拠としては採用されていない。
ドイツにおいては1967年、実生活での経験の記憶から得られた陳述は、捏造された話や架空の話とは内容や質が大きく異なるとするウンディッチ仮説が提起され、1981年にはR. Bender と A. Nackがこれを発展させた。しかし2015年にウンドイッチ仮説の指標の信頼度は79%(CBCA総得点:Criteria-Based Content Analysis 総得点: 0.79)であると検証され、欧州裁判所もドーバート基準判決を議論しながら新たに様々な判断基準を設けたため、ウンディッチ仮説を採用しない国も存在する[1]。
日本の裁判所は自由心証主義の基準を公開していないが、司法分野の精神医学では主にドイツの文献が研究されることが多い[2][注釈 1]。当事者の精神状態・責任能力を判断するための精神鑑定については、2005年に、認定医を養成するための日本司法精神医学会が設立された。
ある証拠が要証事実との関係でどのような意味を持つかによって、以下のように分類できる。ここで要証事実とは、証拠によって証明すべき事実をいい、民事訴訟では契約締結の有無といった主要事実をいう。刑事訴訟では、犯罪事実(被告人が犯人であるか、また実行行為、結果の発生、故意といった構成要件に当たる事実)や違法性阻却事由、責任阻却事由等をいう。
民事訴訟においては、当事者間に争いのない事実(裁判上の自白が成立した事実)及び顕著な事実(裁判所に顕著な事実)[注釈 2]については、そのまま判決の基礎とすることができ、証拠によって立証する必要がない(弁論主義、民事訴訟法179条)。したがって、証拠によって立証する必要があるのは、当事者間に争いのある事実(争点)に限られる。
そして、裁判所は、証拠調べの結果(証拠資料)及び弁論の全趣旨に基づいて、自由な心証により、争点についての事実認定を行う(民事訴訟法247条)。弁論の全趣旨(べんろんのぜんしゅし)とは、当事者の主張そのものの内容、その主張の態度のほか、訴訟の情勢からすればある主張をし、又はある証拠を申し出るはずなのに、これをしなかったり、時機に後れてしたりしたこと、当初は相手方の主張を争わなかったのに後で争ったこと、裁判所や相手方の問いに対して釈明を避けたことなど、口頭弁論における一切の事情をいう(大審院昭和3年10月20日判決)。このように、証拠調べの結果(証拠資料)のほか、弁論の全趣旨も証拠原因に含まれることとなる。
民事訴訟においては、証拠能力には、原則として制限がない。
民事訴訟法上規定されている証拠方法として、文書、検証物、証人、当事者本人、鑑定人があり、これらに応じて証拠調べの方法が定められている。
| 日本の刑法 |
|---|
| 刑事法 |
| 刑法 |
| 刑法学 ・ 犯罪 ・ 刑罰 |
| 罪刑法定主義 |
| 犯罪論 |
| 構成要件 ・ 実行行為 ・ 不作為犯 |
| 間接正犯 ・ 未遂 ・ 既遂 ・ 中止犯 |
| 不能犯 ・ 因果関係 |
| 違法性 ・ 違法性阻却事由 |
| 正当行為 ・ 正当防衛 ・ 緊急避難 |
| 責任 ・ 責任主義 |
| 責任能力 ・ 心神喪失 ・ 心神耗弱 |
| 故意 ・ 故意犯 ・ 錯誤 |
| 過失 ・ 過失犯 |
| 期待可能性 |
| 誤想防衛 ・ 過剰防衛 |
| 共犯 ・ 正犯 ・ 共同正犯 |
| 共謀共同正犯 ・ 教唆犯 ・ 幇助犯 |
| 罪数 |
| 観念的競合 ・ 牽連犯 ・ 併合罪 |
| 刑罰論 |
| 死刑 ・ 拘禁刑 |
| 罰金 ・ 拘留 ・ 科料 ・ 没収 |
| 法定刑 ・ 処断刑 ・ 宣告刑 |
| 自首 ・ 酌量減軽 ・ 執行猶予 |
| 刑事訴訟法 ・ 刑事政策 |
| |
刑事訴訟法には、事実の認定は証拠による旨の明文がある(同法317条、証拠裁判主義)。したがって、犯罪事実を認定するためには、証拠能力を備えた証拠について、法定の証拠調べ手続を踏まなければならない(証拠能力があり、かつ法定の証拠調べ手続を経た証拠による証明を、厳格な証明という)。
民事訴訟と異なり、検察官と被告人(弁護人)に争いのない事実であっても、証拠によって認定しなければならない。
また、証拠能力についても、後述のような厳格な制限がある。
刑事訴訟法上、証拠方法として、証拠書類、証拠物、人証(証人、鑑定人)があり、それぞれ証拠調べの方法が定められている。
刑事訴訟法においては、証拠能力(証拠となり得る資格)が厳格に制限されている。
証拠能力が認められるためには、
が必要である。
法律的関連性については、刑事訴訟法上、自白法則と伝聞証拠禁止の原則という重要な原則が設けられている。
また、証拠禁止の例が、違法収集証拠排除法則である。
民事訴訟の例による。
なお、一定の準司法的手続において適法に認定された事実は、これを立証する実質的な証拠があるときは、裁判所を拘束するものとされている(実質的証拠法則)。
現在は、以下の2点について認められている。
人工知能の力によって、ElicitやConsensusでは通常質の高い証拠とされるメタ分析も簡単に閲覧できるようになったが、メタ分析の仕組みを理解せずに結論を受け入れるのは危険である[5]。大規模なオンライン授業によって、世界の一流大学の授業にアクセスできるようになった現代では、証拠が不足していたり、確かでなかったりする場合には、専門家の意見が厳密な学術誌の体系的な見方で推奨されることもある[6]。