X509FindType Enumerazione

Definizione

Specifica il tipo di valore che il metodo Find(X509FindType, Object, Boolean) cerca.

public enum class X509FindType
public enum X509FindType
type X509FindType = 
Public Enum X509FindType
Ereditarietà
X509FindType

Campi

Nome Valore Descrizione
FindByThumbprint 0

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta l'identificazione personale del certificato.

FindBySubjectName 1

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il nome del soggetto del certificato. Si tratta di una ricerca meno specifica di quella fornita dal valore di FindBySubjectDistinguishedName enumerazione . Usando il FindBySubjectName valore , il Find(X509FindType, Object, Boolean) metodo esegue un confronto tra stringhe senza distinzione tra maiuscole e minuscole usando il valore fornito. Ad esempio, se si passa "MyCert" al Find(X509FindType, Object, Boolean) metodo , verranno visualizzati tutti i certificati con il nome soggetto contenente tale stringa, indipendentemente dagli altri valori oggetto. La ricerca in base al nome distinto è una ricerca più precisa.

FindBySubjectDistinguishedName 2

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il nome distinto del soggetto del certificato. Si tratta di una ricerca più specifica di quella fornita dal valore di FindBySubjectName enumerazione . Usando il FindBySubjectDistinguishedName valore , il Find(X509FindType, Object, Boolean) metodo esegue un confronto tra stringhe senza distinzione tra maiuscole e minuscole per l'intero nome distinto. La ricerca in base al nome del soggetto è una ricerca meno precisa.

FindByIssuerName 3

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il nome dell'autorità emittente del certificato. Si tratta di una ricerca meno specifica di quella fornita dal valore di FindByIssuerDistinguishedName enumerazione . Usando il FindByIssuerName valore , il Find(X509FindType, Object, Boolean) metodo esegue un confronto tra stringhe senza distinzione tra maiuscole e minuscole usando il valore fornito. Ad esempio, se si passa "MyCA" al Find(X509FindType, Object, Boolean) metodo , verranno visualizzati tutti i certificati con il nome dell'autorità di certificazione contenente tale stringa, indipendentemente dagli altri valori dell'autorità di certificazione.

FindByIssuerDistinguishedName 4

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il nome distinto dell'autorità emittente del certificato. Si tratta di una ricerca più specifica di quella fornita dal valore di FindByIssuerName enumerazione . Usando il FindByIssuerDistinguishedName valore , il Find(X509FindType, Object, Boolean) metodo esegue un confronto tra stringhe senza distinzione tra maiuscole e minuscole per l'intero nome distinto. La ricerca in base al nome dell'autorità emittente è una ricerca meno precisa.

FindBySerialNumber 5

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il numero di serie del certificato visualizzato dalla finestra di dialogo del certificato, ma senza spazi o come restituito dal GetSerialNumberString() metodo .

FindByTimeValid 6

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere un DateTime valore nell'ora locale. È possibile usare Now per trovare tutti i certificati attualmente validi.

FindByTimeNotYetValid 7

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere un DateTime valore nell'ora locale. Il valore non deve essere in futuro. Ad esempio, è possibile usare FindByTimeNotYetValid per trovare i certificati che sono diventati validi nell'anno corrente prendendo l'intersezione dei risultati di un'operazione Find(X509FindType, Object, Boolean) per FindByTimeNotYetValid l'ultimo giorno dell'anno precedente con i risultati di un'operazione Find(X509FindType, Object, Boolean) per FindByTimeValid .Now

FindByTimeExpired 8

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere un DateTime valore nell'ora locale. Ad esempio, è possibile trovare tutti i certificati che saranno validi fino alla fine dell'anno eliminando i risultati di un'operazione Find(X509FindType, Object, Boolean) per FindByTimeExpired l'ultimo giorno dell'anno dai risultati di un'operazione Find(X509FindType, Object, Boolean) per Now.

FindByTemplateName 9

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il nome del modello del certificato, ad esempio "ClientAuth". Un nome di modello è un'estensione X509 versione 3 che specifica gli usi del certificato.

FindByApplicationPolicy 10

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il nome descrittivo dei criteri dell'applicazione o l'identificatore dell'oggetto (OID o Oid) del certificato. Ad esempio, è possibile usare "Encrypting File System" o "1.3.6.1.4.1.311.10.3.4". Per un'applicazione che verrà localizzata, è necessario usare il valore OID, perché il nome descrittivo è localizzato.

FindByCertificatePolicy 11

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta il nome descrittivo o l'identificatore dell'oggetto (OID o Oid) dei criteri del certificato. La procedura consigliata consiste nell'usare l'OID, ad esempio "1.3.6.1.4.1.311.10.3.4". Per un'applicazione che verrà localizzata, è necessario usare l'OID perché il nome descrittivo è localizzato.

FindByExtension 12

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che descrive l'estensione da trovare. L'identificatore di oggetto (OID) viene usato più comunemente per indirizzare il Find(X509FindType, Object, Boolean) metodo alla ricerca di tutti i certificati con estensione corrispondente al valore OID.

FindByKeyUsage 13

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta l'utilizzo della chiave o un numero intero che rappresenta una maschera di bit contenente tutti gli utilizzi delle chiavi richieste. Per il valore stringa, è possibile specificare un solo utilizzo della chiave alla volta, ma il Find(X509FindType, Object, Boolean) metodo può essere usato in una sequenza a catena per ottenere l'intersezione degli utilizzi richiesti. Ad esempio, il findValue parametro può essere impostato su "KeyEncipherment" o su un numero intero (0x30 indica "KeyEncipherment" e "DataEncipherment"). È anche possibile utilizzare i valori dell'enumerazione X509KeyUsageFlags .

FindBySubjectKeyIdentifier 14

Il findValue parametro per il Find(X509FindType, Object, Boolean) metodo deve essere una stringa che rappresenta l'identificatore della chiave del soggetto in formato esadecimale, ad esempio "F3E815D45E83B8477B9284113C64EF208E897112", come visualizzato nell'interfaccia utente.

Esempio

L'esempio seguente apre l'archivio certificati personali dell'utente corrente, trova solo certificati validi, consente all'utente di selezionare un certificato e quindi scrive le informazioni sul certificato nella console. L'output dipende dal certificato selezionato.

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

Commenti

X509FindType identifica il tipo di valore fornito nel findValue parametro per il Find metodo . È possibile usare X509FindType per cercare una X509Certificate2 raccolta in base al nome del soggetto, all'identificazione personale, al numero di serie, all'intervallo di date valido o ad altro valore.

È possibile usare una combinazione di tipi valore FindByTime per trovare i certificati validi in un determinato intervallo di tempo. L'unione dei certificati restituiti utilizzando FindByTimeValid, FindByTimeNotYetValid e FindByTimeExpired per un determinato periodo di tempo rappresenta tutti i certificati nell'insieme sottoposto a query.

Si applica a