Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe Evidence

Define o conjunto de informações que constituem a entrada para 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 da 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.
Superior

  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 que indica se o conjunto de evidência é somente leitura.
Propriedade públicaCompatível com o XNA FrameworkIsSynchronizedObtém um valor que indica 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.
Superior

  NomeDescrição
Método públicoAddAssembly Obsoleta. Adiciona as evidências do assembly especificado para o conjunto de evidências.
Método públicoAddAssemblyEvidence<T>Adiciona um objeto de evidências do tipo especificado à lista de evidências fornecido pelo assembly.
Método públicoAddHost Obsoleta. Adiciona a evidência especificada fornecida pelo host para o conjunto de evidências.
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) Verifica se o objeto especificado é igual ao objeto atual. (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 a função de hash padrão. (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 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.)
Superior

  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úblicoAsQueryableConverts an IEnumerable to an IQueryable. (Definido por Queryable.)
Método de extensão públicoCompatível com o XNA FrameworkCast<TResult>Converte os elementos de IEnumerable o tipo especificado. (Definido por Enumerable.)
Método de extensão públicoCompatível com o XNA FrameworkOfType<TResult>Filtra os elementos de IEnumerable com base em um tipo especificado. (Definido por Enumerable.)
Superior

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ódigos se ele satisfaz a condição de membro do grupo de códigos. Evidência é o conjunto de entradas para a diretiva que condições de participação usam para determinar a quais grupos de código um assembly pertence.

O Evidence classe é um conjunto (consulte ICollection) que contém um conjunto de objetos que representam as evidências. Esta classe contém dois conjuntos que correspondem à fonte das evidências: host provas e evidências do assembly.

Diretiva pode obter evidências de duas fontes diferentes ao avaliar as permissões para o 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ências sobre a origem geralmente incluem 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 estão integrados ao 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 evidencefaz 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. Evidências assembly só podem ser adicionadas ao tempo de geração de assembly, o que ocorre antes que o 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 um novo Evidence classes com ambos hospedam evidências 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.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

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 do sistema do .NET Framework.

Quaisquer membros estático (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.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft