Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Classe Evidence

 

Define o conjunto de informações que constituem a entrada para decisões de política de segurança. Essa classe não pode ser herdada.

Namespace:   System.Security.Policy
Assembly:  mscorlib (em mscorlib.dll)

System.Object
  System.Security.Policy.Evidence

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class Evidence : ICollection, IEnumerable

NomeDescrição
System_CAPS_pubmethodEvidence()

Inicializa uma nova instância vazia do Evidence classe.

System_CAPS_pubmethodEvidence(Evidence)

Inicializa uma nova instância de Evidence classe a partir de uma cópia superficial de uma existente.

System_CAPS_pubmethodEvidence(EvidenceBase[], EvidenceBase[])

Inicializa uma nova instância de Evidence classe de vários conjuntos de evidência de host e o conjunto.

System_CAPS_pubmethodEvidence(Object[], Object[])

Obsoleto. Inicializa uma nova instância de Evidence classe de vários conjuntos de evidência de host e o conjunto.

NomeDescrição
System_CAPS_pubpropertyCount

Obsoleto. Obtém o número de objetos de evidência no conjunto de evidência.

System_CAPS_pubpropertyIsReadOnly

Obtém um valor que indica se o conjunto de evidência é somente leitura.

System_CAPS_pubpropertyIsSynchronized

Obtém um valor que indica se o conjunto de evidência é thread-safe.

System_CAPS_pubpropertyLocked

Obtém ou define um valor que indica se a evidência está bloqueada.

System_CAPS_pubpropertySyncRoot

Obtém a raiz de sincronização.

NomeDescrição
System_CAPS_pubmethodAddAssembly(Object)

Obsoleto. Adiciona a evidência do assembly especificado ao conjunto de evidência.

System_CAPS_pubmethodAddAssemblyEvidence<T>(T)

Adiciona um objeto de evidência do tipo especificado à lista de evidências fornecida pelo assembly.

System_CAPS_pubmethodAddHost(Object)

Obsoleto. Adiciona a evidência especificada fornecida pelo host para o conjunto de evidência.

System_CAPS_pubmethodAddHostEvidence<T>(T)

Adiciona evidências de host do tipo especificado para a coleta de evidências de host.

System_CAPS_pubmethodClear()

Remove a evidência de host e o assembly do conjunto de evidência.

System_CAPS_pubmethodClone()

Retorna uma cópia deste objeto de evidências.

System_CAPS_pubmethodCopyTo(Array, Int32)

Obsoleto. Cópias de provas objetos para um Array.

System_CAPS_pubmethodEquals(Object)

Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)

System_CAPS_pubmethodGetAssemblyEnumerator()

Enumera a evidência fornecida pelo assembly.

System_CAPS_pubmethodGetAssemblyEvidence<T>()

Obtém a evidência do assembly do tipo especificado da coleção.

System_CAPS_pubmethodGetEnumerator()

Obsoleto. Enumera todas as evidências em conjunto, fornecido pelo host tanto proporcionadas pelo assembly.

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethodGetHostEnumerator()

Enumera a evidência fornecida pelo host.

System_CAPS_pubmethodGetHostEvidence<T>()

Obtém evidências de host do tipo especificado da coleção.

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethodMerge(Evidence)

Mescla as evidências especificada definido no conjunto de evidência atual.

System_CAPS_pubmethodRemoveType(Type)

Remove as enumerações de host e o assembly a evidência para um determinado tipo.

System_CAPS_pubmethodToString()

Retorna uma string que representa o objeto atual.(Herdado de Object.)

NomeDescrição
System_CAPS_pubmethodAsParallel()

Sobrecarregado. Permite a paralelização de uma consulta. (Definido pelo ParallelEnumerable.)

System_CAPS_pubmethodAsQueryable()

Sobrecarregado. Converte um IEnumerable em um IQueryable.(Definido pelo Queryable.)

System_CAPS_pubmethodCast<TResult>()

Converte os elementos de um IEnumerable para o tipo especificado.(Definido pelo Enumerable.)

System_CAPS_pubmethodOfType<TResult>()

Filtra os elementos de um IEnumerable com base em um tipo especificado.(Definido pelo Enumerable.)

Common forms of evidence include signatures and location of origin of code, but can potentially be anything. Objects of any type that are recognized by security policy represent evidence.

Security policy is composed of code groups; a particular assembly (the basic unit of code for granting security permissions) is a member of a code group if it satisfies the code group's membership condition. Evidence is the set of inputs to policy that membership conditions use to determine to which code groups an assembly belongs.

The T:System.Security.Policy.Evidence class is a collection (see T:System.Collections.ICollection) that holds a set of objects that represent evidence. This class holds two sets that correspond to the source of the evidence: host evidence and assembly evidence.

Policy can get evidence from two different sources when evaluating permissions for code.

  • Host evidence is provided by the host, and can only be provided by hosts that have been granted the ControlEvidence permission. Typically, this is evidence of the origin of the code and digital signatures on the assembly. Evidence about origin typically includes Url, Site, and Zone evidence. Signatures refer to software publisher (AuthentiCode X.509v3 signature) and strong name identities. Both kinds of digital signature-based identity are built into the assembly, but must be validated and passed to policy by the host; when loaded, the security system verifies the signature. The system then creates the appropriate evidence and passes it to policy only if the corresponding signature is valid.

  • Assembly evidence is part of the assembly itself. Developers or administrators can attach custom evidence to the assembly to extend the set of evidence for policy. Assembly evidence can only be added at the time of assembly generation, which occurs before the assembly is signed. The default policy of the security system ignores assembly-provided evidence, but policy can be extended to accept it.

The following code example demonstrates how to create new T:System.Security.Policy.Evidence classes with both host evidence and assembly evidence.


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;
        }
    }
}

.NET Framework
Disponível desde 1.1

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Retornar ao início
Mostrar: