X509FindType 列挙型

定義

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

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

フィールド

名前 説明
FindByThumbprint 0

Find(X509FindType, Object, Boolean) メソッドのfindValueパラメーターは、証明書の拇印を表す文字列である必要があります。

FindBySubjectName 1

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

FindBySubjectDistinguishedName 2

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

FindByIssuerName 3

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

FindByIssuerDistinguishedName 4

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

FindBySerialNumber 5

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

FindByTimeValid 6

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、ローカル時刻のDateTime値である必要があります。 Nowを使用して、現在有効なすべての証明書を検索できます。

FindByTimeNotYetValid 7

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、ローカル時刻のDateTime値である必要があります。 この値は将来である必要はありません。 たとえば、FindByTimeNotYetValidを使用して、昨年の最終日のFindByTimeNotYetValidFind(X509FindType, Object, Boolean)操作の結果と、NowFindByTimeValidFind(X509FindType, Object, Boolean)操作の結果の積集合を取得することで、現在の年に有効になった証明書を見つけることができます。

FindByTimeExpired 8

Find(X509FindType, Object, Boolean) メソッドの findValue パラメーターは、ローカル時刻のDateTime値である必要があります。 たとえば、NowFind(X509FindType, Object, Boolean)操作の結果から、その年の最終日のFindByTimeExpiredに対するFind(X509FindType, Object, Boolean)操作の結果を削除することで、年末まで有効になるすべての証明書を見つけることができます。

FindByTemplateName 9

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

FindByApplicationPolicy 10

Find(X509FindType, Object, Boolean) メソッドのfindValue パラメーターは、アプリケーション ポリシーのフレンドリ名または証明書のオブジェクト識別子 (OID、またはOid) を表す文字列である必要があります。 たとえば、"ファイル システムの暗号化" や "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 パラメーターは、検索する拡張機能を記述する文字列である必要があります。 オブジェクト識別子 (OID) は、その OID 値と一致する拡張機能を持つすべての証明書を検索するように Find(X509FindType, Object, Boolean) メソッドに指示するために最も一般的に使用されます。

FindByKeyUsage 13

Find(X509FindType, Object, Boolean) メソッドのfindValue パラメーターは、キー使用法を表す文字列か、要求されたすべてのキー使用法を含むビット マスクを表す整数である必要があります。 文字列値の場合、一度に指定できるキー使用法は 1 つだけですが、 Find(X509FindType, Object, Boolean) メソッドをカスケード シーケンスで使用して、要求された使用法の共通部分を取得できます。 たとえば、 findValue パラメーターを "KeyEncipherment" または整数に設定できます (0x30は "KeyEncipherment" と "DataEncipherment" を示します)。 X509KeyUsageFlags列挙体の値も使用できます。

FindBySubjectKeyIdentifier 14

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

次の例では、現在のユーザーの個人用証明書ストアを開き、有効な証明書のみを検索し、ユーザーが証明書を選択できるようにしてから、証明書情報をコンソールに書き込みます。 出力は、選択した証明書によって異なります。

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

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

適用対象