Поделиться через


X509FindType Перечисление

Определение

Задает тип значения, поиск которого выполняется с помощью метода Find(X509FindType, Object, Boolean).

public enum class X509FindType
public enum X509FindType
type X509FindType = 
Public Enum X509FindType
Наследование
X509FindType

Поля

FindByApplicationPolicy 10

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей либо понятное имя политики применения, либо идентификатор объекта (OID или Oid) сертификата. Например, могут использоваться "Шифрованная файловая система" или "1.3.6.1.4.1.311.10.3.4". Для приложения, которое будет локализовано, необходимо использовать значение идентификатора объекта, так как понятное имя локализуется.

FindByCertificatePolicy 11

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей либо понятное имя, либо идентификатор объекта (OID или Oid) политики сертификата. Рекомендуется использовать идентификатор объекта, например, "1.3.6.1.4.1.311.10.3.4". Для приложения, которое будет локализовано, необходимо использовать идентификатор объекта, так как понятное имя локализуется.

FindByExtension 12

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, описывающей искомое расширение. Идентификатор объекта, как правило, используется для направления метода Find(X509FindType, Object, Boolean) для поиска всех сертификатов, у которых расширение соответствует данному значению идентификатора объекта.

FindByIssuerDistinguishedName 4

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей различающееся имя поставщика сертификата. Это более определенный поиск по сравнению с использованием значения перечисления FindByIssuerName. Используя значение FindByIssuerDistinguishedName, метод Find(X509FindType, Object, Boolean) выполняет сравнение строк с учетом регистра для всего различающегося имени. Поиск по имени поставщика является менее точным.

FindByIssuerName 3

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей имя поставщика сертификата. Это менее определенный поиск по сравнению с использованием значения перечисления FindByIssuerDistinguishedName. Используя значение FindByIssuerName, метод Find(X509FindType, Object, Boolean) выполняет сравнение строк с учетом регистра с помощью предоставленного значения. Например, при передаче строки "MyCA" в метод Find(X509FindType, Object, Boolean), будут найдены все сертификаты, содержащие эту строку, вне зависимости от других значений поставщика.

FindByKeyUsage 13

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть либо строкой, представляющей использование ключа, либо целым числом, представляющим битовую маску с содержанием всех запрошенных использований ключа. Для значения строки может быть одновременно указано только одно использование ключа, но метод Find(X509FindType, Object, Boolean) может использоваться в каскадной последовательности для получения пересечения использований. Например, для параметра findValue можно установить значение "KeyEncipherment" или целое число (0x30 обозначает "KeyEncipherment" и "DataEncipherment"). Могут также использоваться значения перечисления X509KeyUsageFlags.

FindBySerialNumber 5

Параметр findValue метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей серийный номер сертификата, как показано диалоговым окном сертификата, но без пробелов, или как возвращается методом GetSerialNumberString().

FindBySubjectDistinguishedName 2

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей различающееся имя субъекта сертификата. Это более определенный поиск по сравнению с использованием значения перечисления FindBySubjectName. Используя значение FindBySubjectDistinguishedName, метод Find(X509FindType, Object, Boolean) выполняет сравнение строк с учетом регистра для всего различающегося имени. Поиск по имени субъекта является менее точным.

FindBySubjectKeyIdentifier 14

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей идентификатор ключа субъекта, например "F3E815D45E83B8477B9284113C64EF208E897112", как отображено в интерфейсе пользователя.

FindBySubjectName 1

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей имя субъекта сертификата. Это менее определенный поиск по сравнению с использованием значения перечисления FindBySubjectDistinguishedName. Используя значение FindBySubjectName, метод Find(X509FindType, Object, Boolean) выполняет сравнение строк с учетом регистра с помощью предоставленного значения. Например, при передаче строки "MyCert" в метод Find(X509FindType, Object, Boolean), будут найдены все сертификаты, содержащие эту строку, вне зависимости от других значений субъекта. Поиск по различающемуся имени является более точным.

FindByTemplateName 9

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей имя шаблона сертификата, например "ClientAuth". Имя шаблона представляет собой расширение X509 версии 3, указывающее использования сертификата.

FindByThumbprint 0

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть строкой, представляющей отпечаток сертификата.

FindByTimeExpired 8

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть значением DateTime местного времени. К примеру, вы можете найти все сертификаты, которые будут действительны до конца года, отделив результаты операции Find(X509FindType, Object, Boolean) для FindByTimeExpired в последний день года от результатов операции Find(X509FindType, Object, Boolean) для Now.

FindByTimeNotYetValid 7

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть значением DateTime местного времени. Значение не обязательно должно быть в будущем. К примеру, ожно ипольоватьFindByTimeNotYetValid, чтобы найти сертификаты, которые стали действительны в течение текущего года, взяв пересечение результатов операции Find(X509FindType, Object, Boolean) для FindByTimeNotYetValid последнего дня последнего года с результатами операции Find(X509FindType, Object, Boolean) для FindByTimeValid для Now.

FindByTimeValid 6

Параметр findValue для метода Find(X509FindType, Object, Boolean) должен быть значением DateTime местного времени. Можно использовать свойство Now для поиска всех действительный в данный момент сертификатов.

Примеры

В следующем примере открывается хранилище личных сертификатов текущего пользователя, выполняется поиск только допустимых сертификатов, пользователь может выбрать сертификат, а затем записывается информация о сертификате в консоль. Выходные данные зависят от выбранного сертификата.

#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

Комментарии

X509FindType определяет тип значения, указанного в параметре findValueFind метода . Вы можете использовать для X509FindType поиска X509Certificate2 в коллекции по имени субъекта, отпечатку, серийному номеру, допустимому диапазону дат или другому значению.

Вы можете использовать сочетание типов значений FindByTime для поиска сертификатов, действительных в заданном диапазоне времени. Объединение сертификатов, возвращенных с помощью FindByTimeValid, FindByTimeNotYetValid и FindByTimeExpired за заданное время, представляет все сертификаты в запрашиваемой коллекции.

Применяется к