Udostępnij za pośrednictwem


X509FindType Wyliczenie

Definicja

Określa typ wartości Find(X509FindType, Object, Boolean) wyszukiwanej przez metodę.

public enum class X509FindType
public enum X509FindType
type X509FindType = 
Public Enum X509FindType
Dziedziczenie
X509FindType

Pola

FindByApplicationPolicy 10

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym przyjazną nazwę zasad aplikacji lub identyfikator obiektu (OID lub Oid) certyfikatu. Można na przykład użyć polecenia "Szyfrowanie systemu plików" lub "1.3.6.1.4.1.311.10.3.4". W przypadku aplikacji, która zostanie zlokalizowana, należy użyć wartości identyfikatora OID, ponieważ przyjazna nazwa jest zlokalizowana.

FindByCertificatePolicy 11

Parametr findValue metody Find(X509FindType, Object, Boolean) musi być ciągiem reprezentującym przyjazną nazwę lub identyfikator obiektu (OID lub Oid) zasad certyfikatu. Najlepszym rozwiązaniem jest użycie OID, takiego jak "1.3.6.1.4.1.311.10.3.4". W przypadku aplikacji, która zostanie zlokalizowana, należy użyć identyfikatora OID, ponieważ przyjazna nazwa jest zlokalizowana.

FindByExtension 12

Parametr findValue metody Find(X509FindType, Object, Boolean) musi być ciągiem opisującym rozszerzenie do znalezienia. Identyfikator obiektu (OID) jest najczęściej używany do kierowania Find(X509FindType, Object, Boolean) metody do wyszukiwania wszystkich certyfikatów, które mają rozszerzenie zgodne z tą wartością identyfikatora OID.

FindByIssuerDistinguishedName 4

Parametr findValue metody Find(X509FindType, Object, Boolean) musi być ciągiem reprezentującym nazwę wyróżniającą wystawcy certyfikatu. Jest to bardziej szczegółowe wyszukiwanie niż podane przez FindByIssuerName wartość wyliczenia. FindByIssuerDistinguishedName Przy użyciu wartości Find(X509FindType, Object, Boolean) metoda wykonuje porównanie ciągów bez uwzględniania wielkości liter dla całej nazwy wyróżniającej. Wyszukiwanie według nazwy wystawcy jest mniej precyzyjnym wyszukiwaniem.

FindByIssuerName 3

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym nazwę wystawcy certyfikatu. Jest to mniej specyficzne wyszukiwanie niż podane przez FindByIssuerDistinguishedName wartość wyliczenia. FindByIssuerName Używając wartości, Find(X509FindType, Object, Boolean) metoda wykonuje porównanie ciągu bez uwzględniania wielkości liter przy użyciu podanej wartości. Jeśli na przykład przekażesz metodę Find(X509FindType, Object, Boolean) "MyCA", wszystkie certyfikaty będą znajdować wszystkie certyfikaty o nazwie wystawcy zawierającej ten ciąg, niezależnie od innych wartości wystawcy.

FindByKeyUsage 13

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym użycie klucza lub liczbą całkowitą reprezentującą maskę bitową zawierającą wszystkie żądane użycie kluczy. Dla wartości ciągu można określić tylko jedno użycie klucza w danym momencie, ale Find(X509FindType, Object, Boolean) można użyć metody w sekwencji kaskadowej w celu uzyskania przecięcia żądanych użycia. Na przykład findValue parametr można ustawić na "KeyEncipherment" lub liczbę całkowitą (0x30 wskazuje "KeyEncipherment" i "DataEncipherment"). Można również użyć wartości wyliczenia X509KeyUsageFlags .

FindBySerialNumber 5

findValue Parametr Find(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym numer seryjny certyfikatu wyświetlany w oknie dialogowym certyfikatu, ale bez spacji lub zwracanych przez metodęGetSerialNumberString().

FindBySubjectDistinguishedName 2

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym nazwę wyróżniającą podmiot certyfikatu. Jest to bardziej szczegółowe wyszukiwanie niż podane przez FindBySubjectName wartość wyliczenia. FindBySubjectDistinguishedName Używając wartości, Find(X509FindType, Object, Boolean) metoda wykonuje porównanie ciągu bez uwzględniania wielkości liter dla całej nazwy wyróżniającej. Wyszukiwanie według nazwy podmiotu jest mniej precyzyjne.

FindBySubjectKeyIdentifier 14

findValue Parametr Find(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym identyfikator klucza podmiotu w szesnastkowym, takim jak "F3E815D45E83B8477B9284113C64EF208E897112", jak pokazano w interfejsie użytkownika.

FindBySubjectName 1

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym nazwę podmiotu certyfikatu. Jest to mniej specyficzne wyszukiwanie niż podane przez FindBySubjectDistinguishedName wartość wyliczenia. FindBySubjectName Używając wartości, Find(X509FindType, Object, Boolean) metoda wykonuje porównanie ciągu bez uwzględniania wielkości liter przy użyciu podanej wartości. Jeśli na przykład przekażesz metodę Find(X509FindType, Object, Boolean) "MyCert", wszystkie certyfikaty będą znajdować wszystkie certyfikaty o nazwie podmiotu zawierającej ten ciąg, niezależnie od innych wartości podmiotu. Wyszukiwanie według nazwy wyróżniającej jest bardziej precyzyjne.

FindByTemplateName 9

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym nazwę szablonu certyfikatu, na przykład "ClientAuth". Nazwa szablonu to rozszerzenie X509 w wersji 3, które określa użycie certyfikatu.

FindByThumbprint 0

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być ciągiem reprezentującym odcisk palca certyfikatu.

FindByTimeExpired 8

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być wartością DateTime w czasie lokalnym. Na przykład można znaleźć wszystkie certyfikaty, które będą ważne do końca roku, eliminując wyniki Find(X509FindType, Object, Boolean) operacji FindByTimeExpired ostatniego dnia roku z wyników Find(X509FindType, Object, Boolean) operacji dla Now.

FindByTimeNotYetValid 7

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być wartością DateTime w czasie lokalnym. Wartość nie musi być w przyszłości. Na przykład można użyć FindByTimeNotYetValid polecenia , aby znaleźć certyfikaty, które stały się ważne w bieżącym roku, wykonując przecięcie Find(X509FindType, Object, Boolean) wyników operacji dla FindByTimeNotYetValid ostatniego dnia ubiegłego roku z wynikami Find(X509FindType, Object, Boolean) operacji dla FindByTimeValidNowelementu .

FindByTimeValid 6

Parametr findValueFind(X509FindType, Object, Boolean) metody musi być wartością DateTime w czasie lokalnym. Możesz użyć Now polecenia , aby znaleźć wszystkie aktualnie prawidłowe certyfikaty.

Przykłady

Poniższy przykład otwiera osobisty magazyn certyfikatów bieżącego użytkownika, znajduje tylko prawidłowe certyfikaty, umożliwia użytkownikowi wybranie certyfikatu, a następnie zapisanie informacji o certyfikacie w konsoli. Dane wyjściowe zależą od wybranego certyfikatu.

#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

Uwagi

X509FindType identyfikuje typ wartości podanej w parametrze findValueFind metody . Za pomocą X509FindType funkcji wyszukiwania kolekcji można wyszukiwać X509Certificate2 według nazwy podmiotu, odcisku palca, numeru seryjnego, prawidłowego zakresu dat lub inną wartość.

Możesz użyć kombinacji FindByTime typów wartości, aby znaleźć certyfikaty, które są prawidłowe w danym zakresie czasu. Związek certyfikatów zwróconych przy użyciu elementu FindByTimeValid, FindByTimeNotYetValid i FindByTimeExpired dla danego czasu reprezentuje wszystkie certyfikaty w kolekcji zapytanej.

Dotyczy