次の方法で共有


X509FindType 列挙型

定義

Find(X509FindType, Object, Boolean) メソッドで検索する値の種類を指定します。

public enum class X509FindType
public enum X509FindType
type X509FindType = 
Public Enum X509FindType
継承
X509FindType

フィールド

FindByApplicationPolicy 10

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、アプリケーション ポリシーの表示名または証明書のオブジェクト識別子 (OID、または Oid) を表す文字列であることが必要です。 たとえば、"Encrypting File System" や "1.3.6.1.4.1.311.10.3.4" などを使用できます。 ローカライズを予定しているアプリケーションの場合、フレンドリ名がローカライズされることを考慮し、OID 値を使用する必要があります。

FindByCertificatePolicy 11

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、証明書ポリシーの表示名またはオブジェクト識別子 (OID、または Oid) を表す文字列であることが必要です。 できるだけ、"1.3.6.1.4.1.311.10.3.4" などの OID を使用することをお勧めします。 ローカライズを予定しているアプリケーションの場合、フレンドリ名がローカライズされることを考慮し、OID を使用する必要があります。

FindByExtension 12

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、検索する拡張機能を表す文字列であることが必要です。 Find(X509FindType, Object, Boolean) メソッドで特定の拡張機能を持つすべての証明書を検索する場合は、一致条件にオブジェクト識別子 (OID) を使用するのが一般的です。

FindByIssuerDistinguishedName 4

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、証明書発行者の識別名を表す文字列であることが必要です。 この検索は、FindByIssuerName 列挙値で提供される場合よりも、条件がはっきりします。 FindByIssuerDistinguishedName メソッドに Find(X509FindType, Object, Boolean) 値を使用した場合、識別名全体について、大文字と小文字を区別しない文字列比較が実行されます。 発行者名での検索は、これよりも条件があいまいになります。

FindByIssuerName 3

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、証明書の発行者名を表す文字列であることが必要です。 この検索は、FindByIssuerDistinguishedName 列挙値で提供される場合よりも、条件があいまいになります。 FindByIssuerName メソッドに Find(X509FindType, Object, Boolean) 値を使用した場合、指定した値に基づいて、大文字と小文字を区別しない文字列比較が実行されます。 たとえば、Find(X509FindType, Object, Boolean) メソッドに "MyCA" を指定した場合、発行者の他の値に関係なく、発行者名にこの文字列が使われている、すべての証明書が検索されます。

FindByKeyUsage 13

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターには、キーの使用目的を表す文字列を指定するか、要求されたキー使用目的をすべて満たしたビット マスクを整数で指定する必要があります。 文字列値の場合、同時に指定できるキーの使用目的は 1 つだけですが、Find(X509FindType, Object, Boolean) メソッドで検索範囲を段階的に狭めてゆくことにより、要求した使用目的を論理積的に得ることもできます。 たとえば、findValue パラメーターには、"KeyEncipherment" または整数値 (0x30 は "KeyEncipherment" および "DataEncipherment" に相当) を設定できるほか、 X509KeyUsageFlags 列挙型の値を使用することもできます。

FindBySerialNumber 5

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、証明書のダイアログ ボックスで表示される証明書のシリアル番号を表す文字列、または GetSerialNumberString() メソッドが返す文字列である必要があります。

FindBySubjectDistinguishedName 2

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、証明書サブジェクトの識別名を表す文字列であることが必要です。 この検索は、FindBySubjectName 列挙値で提供される場合よりも、条件がはっきりします。 FindBySubjectDistinguishedName メソッドに Find(X509FindType, Object, Boolean) 値を使用した場合、識別名全体について、大文字と小文字を区別しない文字列比較が実行されます。 サブジェクト名での検索は、これよりも条件があいまいになります。

FindBySubjectKeyIdentifier 14

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、サブジェクトのキー識別子 ("F3E815D45E83B8477B9284113C64EF208E897112" などの 16 進数で表される) を UI 上の文字列で指定する必要があります。

FindBySubjectName 1

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、証明書のサブジェクト名を表す文字列であることが必要です。 この検索は、FindBySubjectDistinguishedName 列挙値で提供される場合よりも、条件があいまいになります。 FindBySubjectName メソッドに Find(X509FindType, Object, Boolean) 値を使用した場合、指定した値に基づいて、大文字と小文字を区別しない文字列比較が実行されます。 たとえば、Find(X509FindType, Object, Boolean) メソッドに "MyCert" を指定した場合、サブジェクトの他の値に関係なく、サブジェクト名にこの文字列が使われている、すべての証明書が検索されます。 識別名での検索の方が、より具体的な条件になります。

FindByTemplateName 9

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、"ClientAuth" など、証明書のテンプレート名を表す文字列であることが必要です。 テンプレート名は、証明書の使用目的を指定する、X509 バージョン 3 の拡張機能です。

FindByThumbprint 0

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、証明書のサムプリントを表す文字列であることが必要です。

FindByTimeExpired 8

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、現地時間の DateTime 値であることが必要です。 たとえば、年末まで有効なすべての証明書を調べるには、Find(X509FindType, Object, Boolean)FindByTimeExpired 操作の結果から年の最後の日の Find(X509FindType, Object, Boolean)Now 操作の結果を除外します。

FindByTimeNotYetValid 7

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、現地時間の DateTime 値であることが必要です。 この値は将来存在する必要はありません。 たとえば、FindByTimeNotYetValid を使用して、現在の年に有効になった証明書を調べることができます。そのためには、去年の最後の日に対する Find(X509FindType, Object, Boolean)FindByTimeNotYetValid 操作の結果と、Find(X509FindType, Object, Boolean)FindByTimeValidNow 操作の結果との交差部分を求めます。

FindByTimeValid 6

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、現地時間の 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 は、 メソッドの パラメーターに指定された findValue 値の型を Find 識別します。 を使用 X509FindType して、サブジェクト名、拇印、シリアル番号、有効な日付範囲、またはその他の値でコレクションを検索 X509Certificate2 できます。

値型の組み合わせを使用して、特定の FindByTime 時間範囲内で有効な証明書を検索できます。 FindByTimeValid、FindByTimeNotYetValid、および FindByTimeExpired を使用して返される証明書の和集合は、クエリされたコレクション内のすべての証明書を表します。

適用対象