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
Esta documentação foi arquivada e não está sendo atualizada.

Classe Evidence

Define o conjunto de informações que constitui a entrada de decisões de diretiva de segurança. Esta classe não pode ser herdada.

System.Object
  System.Security.Policy.Evidence

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

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

O tipo Evidence expõe os membros a seguir.

  NomeDescrição
Método públicoCompatível com o XNA FrameworkEvidence()Inicializa uma nova instância vazia da Evidence classe.
Método públicoEvidence(Evidence)Inicializa uma nova instância de Evidence classe a partir de uma cópia superficial de uma existente.
Método públicoEvidence(EvidenceBase[], EvidenceBase[])Inicializa uma nova instância da Evidence classe a partir de vários conjuntos de host e o conjunto de evidência.
Método públicoEvidence(Object[], Object[]) Obsoleta. Inicializa uma nova instância da Evidence classe a partir de vários conjuntos de host e o conjunto de evidência.
Início

  NomeDescrição
Propriedade públicaCompatível com o XNA FrameworkCount Obsoleta. Obtém o número de objetos de evidências do conjunto de evidência.
Propriedade públicaIsReadOnlyObtém um valor indicando se o conjunto de evidência é somente leitura.
Propriedade públicaCompatível com o XNA FrameworkIsSynchronizedObtém um valor indicando se o conjunto de evidência é thread-safe.
Propriedade públicaLockedObtém ou define um valor indicando se a evidência está bloqueada.
Propriedade públicaCompatível com o XNA FrameworkSyncRootObtém a raiz de sincronização.
Início

  NomeDescrição
Método públicoAddAssembly Obsoleta. Adiciona a evidência do assembly especificado para o conjunto de evidência.
Método públicoAddAssemblyEvidence<T>Adiciona um objeto de evidências do tipo especificado na lista de evidências do assembly fornecido pelo.
Método públicoAddHost Obsoleta. Adiciona a evidência especificada fornecida pelo host para o conjunto de evidência.
Método públicoAddHostEvidence<T>Adiciona a evidência de host do tipo especificado para a coleta de evidências do host.
Método públicoClearRemove a evidência de host e o conjunto do conjunto de evidência.
Método públicoCloneRetorna uma cópia deste objeto de evidências.
Método públicoCompatível com o XNA FrameworkCopyTo Obsoleta. Cópias de provas de objetos para um Array.
Método públicoCompatível com o XNA FrameworkEquals(Object) Determina se o Object especificado é igual ao Object atual. (Herdado de Object.)
Método protegidoCompatível com o XNA FrameworkFinalize Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoGetAssemblyEnumeratorEnumera as evidências fornecidas pelo assembly.
Método públicoGetAssemblyEvidence<T>Obtém a evidência do assembly do tipo especificado da coleção.
Método públicoCompatível com o XNA FrameworkGetEnumerator Obsoleta. Enumera todas as evidências do conjunto, que é fornecido pelo host tanto fornecido pelo assembly.
Método públicoCompatível com o XNA FrameworkGetHashCodeServe como uma função hash para um tipo específico. (Herdado de Object.)
Método públicoGetHostEnumeratorEnumera as evidências fornecida pelo host.
Método públicoGetHostEvidence<T>Obtém a evidência de host do tipo especificado da coleção.
Método públicoCompatível com o XNA FrameworkGetType Obtém o Type da instância atual. (Herdado de Object.)
Método protegidoCompatível com o XNA FrameworkMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método públicoMergeMescla a evidência especificada definido no conjunto de evidência atual.
Método públicoRemoveTypeRemove a evidência para um determinado tipo de enumerações de host e o assembly.
Método públicoCompatível com o XNA FrameworkToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Início

  NomeDescrição
Método de extensão públicoAsParallel Permite a paralelização de uma consulta. (Definido por ParallelEnumerable.)
Método de extensão públicoAsQueryable Converte um IEnumerable para um IQueryable. (Definido por Queryable.)
Método de extensão públicoCompatível com o XNA FrameworkCast<TResult>Converte os elementos de um IEnumerable para o tipo especificado. (Definido por Enumerable.)
Método de extensão públicoCompatível com o XNA FrameworkOfType<TResult> Filtra os elementos de um IEnumerable com base em um tipo especificado. (Definido por Enumerable.)
Início

Formas comuns de evidências incluem assinaturas e o local de origem do código, mas podem ser qualquer coisa. Objetos de qualquer tipo que são reconhecidos pela diretiva de segurança representam evidências.

Diretiva de segurança é composta de grupos de código; um assembly específico (a unidade básica de código para conceder permissões de segurança) é um membro de um grupo de código, se ele satisfaz a condição de membro do grupo de códigos. Evidência é o conjunto de entradas de diretiva que condições de participação usam para determinar a quais grupos de código um assembly pertence.

O Evidence classe é uma coleção (consulte ICollection) que contém um conjunto de objetos que representam evidências. Essa classe contém dois conjuntos que correspondem à fonte das evidências: a evidência de host e evidências do assembly.

Diretiva pode obter evidências de duas fontes diferentes ao avaliar as permissões de código.

  • Host evidenceé fornecido pelo host e só pode ser fornecido por hosts que receberam a ControlEvidence permissão. Normalmente, isso é uma prova da origem do código e assinaturas digitais no assembly. Evidência sobre a origem geralmente inclui Url, Site, e Zone evidências. Assinaturas consultem Editor de software (assinatura AuthentiCode 509v3) e identidades de nome forte. Os dois tipos de identidade de baseado em assinatura digital são criados em assembly, mas devem ser validados e passados para a diretiva por host; Quando carregado, o sistema de segurança verifica a assinatura. O sistema cria a evidência apropriada e passa para a diretiva somente se a assinatura correspondente é válida.

  • Assembly evidenceé parte do próprio assembly. Os desenvolvedores ou administradores podem anexar evidências personalizadas ao assembly para estender o conjunto de evidência de diretiva. A evidência de assembly só pode ser adicionada ao tempo de geração de assembly, o que ocorre antes do assembly é assinado. A diretiva padrão do sistema de segurança ignora evidência do assembly fornecido, mas a diretiva pode ser estendida para aceitá-lo.

O exemplo de código a seguir demonstra como criar uma nova Evidence classes com provas de host e evidências do assembly.



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

Com suporte em: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core não compatível), Windows Server 2008 R2 (Server Core não compatível com SP1 ou posterior), Windows Server 2003 SP2

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos de sistema do .NET Framework.

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.
Mostrar: