X509FindType Enumerazione

Definizione

Specifica il tipo di valore cercato dal metodo Find(X509FindType, Object, Boolean).

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

Campi

FindByApplicationPolicy 10

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

FindByCertificatePolicy 11

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

FindByExtension 12

Il parametro findValue per il metodo Find(X509FindType, Object, Boolean) deve essere una stringa che descrive l'estensione da trovare. L'identificatore dell'oggetto (OID, Object Identifier) viene comunemente utilizzato per indicare al metodo Find(X509FindType, Object, Boolean) di cercare tutti i certificati che presentano un'estensione corrispondente a quel valore OID.

FindByIssuerDistinguishedName 4

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

FindByIssuerName 3

Il parametro findValue per il metodo Find(X509FindType, Object, Boolean) deve essere una stringa che rappresenta il nome dell'emittente del certificato. Si tratta di una ricerca meno specifica rispetto a quella fornita dal valore di enumerazione FindByIssuerDistinguishedName. Utilizzando il valore FindByIssuerName, il metodo Find(X509FindType, Object, Boolean) esegue un confronto tra stringhe senza distinzione tra maiuscole e minuscole utilizzando il valore fornito. Ad esempio, se si passa "NomeCA" al metodo Find(X509FindType, Object, Boolean), verranno trovati tutti i certificati con il nome dell'emittente del certificato che contengono tale stringa, indipendentemente dagli altri valori relativi all'emittente.

FindByKeyUsage 13

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

FindBySerialNumber 5

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

FindBySubjectDistinguishedName 2

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

FindBySubjectKeyIdentifier 14

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

FindBySubjectName 1

Il parametro findValue per il metodo Find(X509FindType, Object, Boolean) deve essere una stringa che rappresenta il nome dell'oggetto del certificato. Si tratta di una ricerca meno specifica rispetto a quella fornita dal valore di enumerazione FindBySubjectDistinguishedName. Utilizzando il valore FindBySubjectName, il metodo Find(X509FindType, Object, Boolean) esegue un confronto tra stringhe senza distinzione tra maiuscole e minuscole utilizzando il valore fornito. Ad esempio, se si passa "NomeCert" al metodo Find(X509FindType, Object, Boolean), verranno trovati tutti i certificati con il nome dell'oggetto che contengono tale stringa, indipendentemente dagli altri valori relativi all'oggetto. La ricerca eseguita tramite il nome distinto è una ricerca più precisa.

FindByTemplateName 9

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

FindByThumbprint 0

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

FindByTimeExpired 8

Il parametro findValue per il metodo Find(X509FindType, Object, Boolean) deve essere un valore DateTime espresso nell'ora locale. È possibile ad esempio trovare tutti i certificati validi fino al termine dell'anno corrente eliminando i risultati di un'operazione Find(X509FindType, Object, Boolean) per l'elemento FindByTimeExpired dell'ultimo giorno dell'anno dai risultati di un'operazione Find(X509FindType, Object, Boolean) per Now.

FindByTimeNotYetValid 7

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

FindByTimeValid 6

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

Esempio

L'esempio seguente apre l'archivio certificati personale 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.dll>
#using <System.Security.dll>

using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Permissions;
using namespace System::IO;
using namespace System::Security::Cryptography::X509Certificates;
int main()
{
   try
   {
      X509Store ^ store = gcnew X509Store( "MY",StoreLocation::CurrentUser );
      store->Open( static_cast<OpenFlags>(OpenFlags::ReadOnly | OpenFlags::OpenExistingOnly) );
      X509Certificate2Collection ^ collection = dynamic_cast<X509Certificate2Collection^>(store->Certificates);
      X509Certificate2Collection ^ fcollection = dynamic_cast<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 );
      System::Collections::IEnumerator^ myEnum = scollection->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         X509Certificate2 ^ x509 = safe_cast<X509Certificate2 ^>(myEnum->Current);
         array<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( "Private Key: {0}{1}", x509->PrivateKey->ToXmlString( false ), 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 );
         x509->Reset();
      }
      store->Close();
   }
   catch ( CryptographicException^ ) 
   {
      Console::WriteLine( "Information could not be written out for this certificate." );
   }

}
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 specificato 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 FindByTime tipi valore per trovare i certificati validi in un determinato intervallo di tempo. L'unione dei certificati restituiti usando FindByTimeValid, FindByTimeNotYetValid e FindByTimeExpired per un determinato momento rappresenta tutti i certificati nella raccolta di query.

Si applica a