X509FindType Enumeração

Definição

Especifica o tipo de valor que o método Find(X509FindType, Object, Boolean) pesquisa.

public enum class X509FindType
public enum X509FindType
type X509FindType = 
Public Enum X509FindType
Herança
X509FindType

Campos

Nome Valor Description
FindByThumbprint 0

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que representa a impressão digital do certificado.

FindBySubjectName 1

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que represente o nome da entidade do certificado. Essa é uma pesquisa menos específica do que a fornecida pelo valor de FindBySubjectDistinguishedName enumeração. Usando o FindBySubjectName valor, o Find(X509FindType, Object, Boolean) método executa uma comparação de cadeia de caracteres que não diferencia maiúsculas de minúsculas usando o valor fornecido. Por exemplo, se você passar "MyCert" para o Find(X509FindType, Object, Boolean) método, ele encontrará todos os certificados com o nome da entidade que contém essa cadeia de caracteres, independentemente de outros valores de assunto. Pesquisar por nome diferenciado é uma pesquisa mais precisa.

FindBySubjectDistinguishedName 2

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que representa o nome diferenciado da entidade do certificado. Essa é uma pesquisa mais específica do que a fornecida pelo valor de FindBySubjectName enumeração. Usando o FindBySubjectDistinguishedName valor, o Find(X509FindType, Object, Boolean) método executa uma comparação de cadeia de caracteres que não diferencia maiúsculas de minúsculas para todo o nome diferenciado. Pesquisar pelo nome do assunto é uma pesquisa menos precisa.

FindByIssuerName 3

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que represente o nome do emissor do certificado. Essa é uma pesquisa menos específica do que a fornecida pelo valor de FindByIssuerDistinguishedName enumeração. Usando o FindByIssuerName valor, o Find(X509FindType, Object, Boolean) método executa uma comparação de cadeia de caracteres que não diferencia maiúsculas de minúsculas usando o valor fornecido. Por exemplo, se você passar "MyCA" para o Find(X509FindType, Object, Boolean) método, ele encontrará todos os certificados com o nome do emissor que contém essa cadeia de caracteres, independentemente de outros valores do emissor.

FindByIssuerDistinguishedName 4

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que representa o nome diferenciado do emissor do certificado. Essa é uma pesquisa mais específica do que a fornecida pelo valor de FindByIssuerName enumeração. Usando o FindByIssuerDistinguishedName valor, o Find(X509FindType, Object, Boolean) método executa uma comparação de cadeia de caracteres que não diferencia maiúsculas de minúsculas para todo o nome diferenciado. Pesquisar pelo nome do emissor é uma pesquisa menos precisa.

FindBySerialNumber 5

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que represente o número de série do certificado, conforme exibido pela caixa de diálogo do certificado, mas sem os espaços ou conforme retornado pelo GetSerialNumberString() método.

FindByTimeValid 6

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser um DateTime valor no horário local. Você pode usar Now para localizar todos os certificados válidos no momento.

FindByTimeNotYetValid 7

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser um DateTime valor no horário local. O valor não precisa estar no futuro. Por exemplo, você pode usar FindByTimeNotYetValid para localizar certificados que se tornaram válidos no ano atual realizando a interseção dos resultados de uma Find(X509FindType, Object, Boolean) operação para FindByTimeNotYetValid o último dia do ano passado com os resultados de uma Find(X509FindType, Object, Boolean) operação para FindByTimeValidNow.

FindByTimeExpired 8

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser um DateTime valor no horário local. Por exemplo, você pode encontrar todos os certificados que serão válidos até o final do ano eliminando os resultados de uma Find(X509FindType, Object, Boolean) operação do FindByTimeExpired último dia do ano dos resultados de uma Find(X509FindType, Object, Boolean) operação para Now.

FindByTemplateName 9

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que represente o nome do modelo do certificado, como "ClientAuth". Um nome de modelo é uma extensão X509 versão 3 que especifica os usos do certificado.

FindByApplicationPolicy 10

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que represente o nome amigável da política de aplicativo ou o identificador de objeto (OID ou Oid) do certificado. Por exemplo, "Criptografando o sistema de arquivos" ou "1.3.6.1.4.1.311.10.3.4" pode ser usado. Para um aplicativo que será localizado, o valor de OID deve ser usado, pois o nome amigável é localizado.

FindByCertificatePolicy 11

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que represente o nome amigável ou o identificador de objeto (OID ou Oid) da política de certificado. A prática recomendada é usar o OID, como "1.3.6.1.4.1.311.10.3.4". Para um aplicativo que será localizado, a OID deve ser usada, pois o nome amigável é localizado.

FindByExtension 12

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que descreva a extensão a ser encontrada. O OID (identificador de objeto) é mais comumente usado para direcionar o Find(X509FindType, Object, Boolean) método para pesquisar todos os certificados que têm uma extensão correspondente a esse valor OID.

FindByKeyUsage 13

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que represente o uso da chave ou um inteiro que represente uma máscara de bits contendo todos os usos de chave solicitados. Para o valor da cadeia de caracteres, apenas um uso de chave por vez pode ser especificado, mas o Find(X509FindType, Object, Boolean) método pode ser usado em uma sequência em cascata para obter a interseção dos usos solicitados. Por exemplo, o findValue parâmetro pode ser definido como "KeyEncipherment" ou um inteiro (0x30 indica "KeyEncipherment" e "DataEncipherment"). Os valores da X509KeyUsageFlags enumeração também podem ser usados.

FindBySubjectKeyIdentifier 14

O findValue parâmetro para o Find(X509FindType, Object, Boolean) método deve ser uma cadeia de caracteres que representa o identificador de chave do assunto em hexadecimal, como "F3E815D45E83B8477B9284113C64EF208E897112", conforme exibido na interface do usuário.

Exemplos

O exemplo a seguir abre o repositório de certificados pessoal do usuário atual, localiza apenas certificados válidos, permite que o usuário selecione um certificado e grava informações de certificado no console. A saída depende do certificado selecionado.

using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;

class CertSelect
{
    static void Main()
    {
        X509Store store = new X509Store("MY",StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

        X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
        X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid,DateTime.Now,false);
        X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection);
        Console.WriteLine("Number of certificates: {0}{1}",scollection.Count,Environment.NewLine);

        foreach (X509Certificate2 x509 in scollection)
        {
            try
            {
                byte[] rawdata = x509.RawData;
                Console.WriteLine("Content Type: {0}{1}",X509Certificate2.GetCertContentType(rawdata),Environment.NewLine);
                Console.WriteLine("Friendly Name: {0}{1}",x509.FriendlyName,Environment.NewLine);
                Console.WriteLine("Certificate Verified?: {0}{1}",x509.Verify(),Environment.NewLine);
                Console.WriteLine("Simple Name: {0}{1}",x509.GetNameInfo(X509NameType.SimpleName,true),Environment.NewLine);
                Console.WriteLine("Signature Algorithm: {0}{1}",x509.SignatureAlgorithm.FriendlyName,Environment.NewLine);
                Console.WriteLine("Public Key: {0}{1}",x509.PublicKey.Key.ToXmlString(false),Environment.NewLine);
                Console.WriteLine("Certificate Archived?: {0}{1}",x509.Archived,Environment.NewLine);
                Console.WriteLine("Length of Raw Data: {0}{1}",x509.RawData.Length,Environment.NewLine);
                X509Certificate2UI.DisplayCertificate(x509);
                x509.Reset();
            }
            catch (CryptographicException)
            {
                Console.WriteLine("Information could not be written out for this certificate.");
            }
        }
        store.Close();
    }
}
Imports System.Security.Cryptography
Imports System.Security.Permissions
Imports System.IO
Imports System.Security.Cryptography.X509Certificates

Class CertSelect

    Shared Sub Main()

        Dim store As New X509Store("MY", StoreLocation.CurrentUser)
        store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)

        Dim collection As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection)
        Dim fcollection As X509Certificate2Collection = CType(collection.Find(X509FindType.FindByTimeValid, DateTime.Now, False), X509Certificate2Collection)
        Dim scollection As X509Certificate2Collection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select", "Select a certificate from the following list to get information on that certificate", X509SelectionFlag.MultiSelection)
        Console.WriteLine("Number of certificates: {0}{1}", scollection.Count, Environment.NewLine)
         
        For Each x509 As X509Certificate2 In scollection
            Try
                Dim rawdata As Byte() = x509.RawData
                Console.WriteLine("Content Type: {0}{1}", X509Certificate2.GetCertContentType(rawdata), Environment.NewLine)
                Console.WriteLine("Friendly Name: {0}{1}", x509.FriendlyName, Environment.NewLine)
                Console.WriteLine("Certificate Verified?: {0}{1}", x509.Verify(), Environment.NewLine)
                Console.WriteLine("Simple Name: {0}{1}", x509.GetNameInfo(X509NameType.SimpleName, True), Environment.NewLine)
                Console.WriteLine("Signature Algorithm: {0}{1}", x509.SignatureAlgorithm.FriendlyName, Environment.NewLine)
                Console.WriteLine("Public Key: {0}{1}", x509.PublicKey.Key.ToXmlString(False), Environment.NewLine)
                Console.WriteLine("Certificate Archived?: {0}{1}", x509.Archived, Environment.NewLine)
                Console.WriteLine("Length of Raw Data: {0}{1}", x509.RawData.Length, Environment.NewLine)
                X509Certificate2UI.DisplayCertificate(x509)
                x509.Reset()         
             Catch cExcept As CryptographicException
                 Console.WriteLine("Information could not be written out for this certificate.")
             End Try
        Next x509

        store.Close()
    End Sub
End Class

Comentários

X509FindType identifica o tipo de valor fornecido no findValue parâmetro para o Find método. Você pode usar para pesquisar X509FindType uma X509Certificate2 coleção por nome da entidade, impressão digital, número de série, intervalo de datas válido ou outro valor.

Você pode usar uma combinação de tipos de FindByTime valor para localizar certificados válidos em um determinado intervalo de tempo. A união de certificados retornados usando FindByTimeValid, FindByTimeNotYetValid e FindByTimeExpired para um determinado tempo representa todos os certificados na coleção consultada.

Aplica-se a