Bagikan melalui


X509FindType Enum

Definisi

Menentukan jenis nilai yang dicari Find(X509FindType, Object, Boolean) metode.

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

Bidang

FindByApplicationPolicy 10

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nama ramah kebijakan aplikasi atau pengidentifikasi objek (OID, atau Oid) sertifikat. Misalnya, "Mengenkripsi Sistem File" atau "1.3.6.1.4.1.311.10.3.4" dapat digunakan. Untuk aplikasi yang akan dilokalkan, nilai OID harus digunakan, karena nama yang mudah dilokalkan.

FindByCertificatePolicy 11

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nama yang mudah diingat atau pengidentifikasi objek (OID, atau Oid) dari kebijakan sertifikat. Praktik terbaik adalah menggunakan OID, seperti "1.3.6.1.4.1.311.10.3.4". Untuk aplikasi yang akan dilokalkan, OID harus digunakan, karena nama yang mudah dilokalkan.

FindByExtension 12

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang menjelaskan ekstensi untuk ditemukan. Pengidentifikasi objek (OID) paling umum digunakan untuk mengarahkan Find(X509FindType, Object, Boolean) metode untuk mencari semua sertifikat yang memiliki ekstensi yang cocok dengan nilai OID tersebut.

FindByIssuerDistinguishedName 4

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nama khusus penerbit sertifikat. Ini adalah pencarian yang lebih spesifik daripada yang disediakan oleh FindByIssuerName nilai enumerasi. FindByIssuerDistinguishedName Dengan menggunakan nilai , Find(X509FindType, Object, Boolean) metode melakukan perbandingan string yang tidak peka huruf besar/kecil untuk seluruh nama yang dibedakan. Mencari berdasarkan nama pengeluar sertifikat adalah pencarian yang kurang tepat.

FindByIssuerName 3

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nama penerbit sertifikat. Ini adalah pencarian yang kurang spesifik daripada yang disediakan oleh FindByIssuerDistinguishedName nilai enumerasi. FindByIssuerName Dengan menggunakan nilai , Find(X509FindType, Object, Boolean) metode melakukan perbandingan string yang tidak peka huruf besar/kecil menggunakan nilai yang disediakan. Misalnya, jika Anda meneruskan "MyCA" ke Find(X509FindType, Object, Boolean) metode , itu akan menemukan semua sertifikat dengan nama pengeluar sertifikat yang berisi string tersebut, terlepas dari nilai penerbit lainnya.

FindByKeyUsage 13

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili penggunaan kunci atau bilangan bulat yang mewakili masker bit yang berisi semua penggunaan kunci yang diminta. Untuk nilai string, hanya satu penggunaan kunci pada satu waktu yang dapat ditentukan, tetapi Find(X509FindType, Object, Boolean) metode dapat digunakan dalam urutan berjenjang untuk mendapatkan persimpangan penggunaan yang diminta. Misalnya, findValue parameter dapat diatur ke "KeyEncipherment" atau bilangan bulat (0x30 menunjukkan "KeyEncipherment" dan "DataEncipherment"). X509KeyUsageFlags Nilai enumerasi juga dapat digunakan.

FindBySerialNumber 5

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nomor seri sertifikat seperti yang ditampilkan oleh kotak dialog sertifikat, tetapi tanpa spasi, atau seperti yang dikembalikan oleh GetSerialNumberString() metode .

FindBySubjectDistinguishedName 2

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nama subjek yang dibedakan dari sertifikat. Ini adalah pencarian yang lebih spesifik daripada yang disediakan oleh FindBySubjectName nilai enumerasi. FindBySubjectDistinguishedName Dengan menggunakan nilai , Find(X509FindType, Object, Boolean) metode melakukan perbandingan string yang tidak peka huruf besar/kecil untuk seluruh nama yang dibedakan. Mencari berdasarkan nama subjek adalah pencarian yang kurang tepat.

FindBySubjectKeyIdentifier 14

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili pengidentifikasi kunci subjek dalam heksadesimal, seperti "F3E815D45E83B8477B9284113C64EF208E897112", seperti yang ditampilkan di UI.

FindBySubjectName 1

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nama subjek sertifikat. Ini adalah pencarian yang kurang spesifik daripada yang disediakan oleh FindBySubjectDistinguishedName nilai enumerasi. FindBySubjectName Dengan menggunakan nilai , Find(X509FindType, Object, Boolean) metode melakukan perbandingan string yang tidak peka huruf besar/kecil menggunakan nilai yang disediakan. Misalnya, jika Anda meneruskan "MyCert" ke Find(X509FindType, Object, Boolean) metode , itu akan menemukan semua sertifikat dengan nama subjek yang berisi string tersebut, terlepas dari nilai subjek lainnya. Mencari dengan nama yang dibedakan adalah pencarian yang lebih tepat.

FindByTemplateName 9

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili nama templat sertifikat, seperti "ClientAuth". Nama templat adalah ekstensi X509 versi 3 yang menentukan penggunaan sertifikat.

FindByThumbprint 0

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus berupa string yang mewakili thumbprint sertifikat.

FindByTimeExpired 8

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus merupakan DateTime nilai dalam waktu lokal. Misalnya, Anda dapat menemukan semua sertifikat yang akan berlaku hingga akhir tahun dengan menghilangkan hasil Find(X509FindType, Object, Boolean) operasi untuk FindByTimeExpired hari terakhir dalam setahun dari hasil Find(X509FindType, Object, Boolean) operasi untuk Now.

FindByTimeNotYetValid 7

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus merupakan DateTime nilai dalam waktu lokal. Nilai tidak harus di masa depan. Misalnya, Anda dapat menggunakan FindByTimeNotYetValid untuk menemukan sertifikat yang berlaku pada tahun ini dengan mengambil persimpangan hasil Find(X509FindType, Object, Boolean) operasi untuk FindByTimeNotYetValid hari terakhir tahun lalu dengan hasil Find(X509FindType, Object, Boolean) operasi untuk FindByTimeValid .Now

FindByTimeValid 6

Parameter findValue untuk Find(X509FindType, Object, Boolean) metode harus merupakan DateTime nilai dalam waktu lokal. Anda dapat menggunakan Now untuk menemukan semua sertifikat yang saat ini valid.

Contoh

Contoh berikut membuka penyimpanan sertifikat pribadi pengguna saat ini, hanya menemukan sertifikat yang valid, memungkinkan pengguna untuk memilih sertifikat, lalu menulis informasi sertifikat ke konsol. Output tergantung pada sertifikat yang Anda pilih.

#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

Keterangan

X509FindTypemengidentifikasi jenis nilai yang disediakan dalam findValue parameter untuk metode .Find Anda dapat menggunakan X509FindType untuk mencari X509Certificate2 koleksi berdasarkan nama subjek, thumbprint, nomor seri, rentang tanggal yang valid, atau nilai lainnya.

Anda dapat menggunakan kombinasi jenis FindByTime nilai untuk menemukan sertifikat yang valid dalam rentang waktu tertentu. Gabungan sertifikat yang dikembalikan menggunakan FindByTimeValid, FindByTimeNotYetValid, dan FindByTimeExpired untuk waktu tertentu mewakili semua sertifikat dalam koleksi yang dikueri.

Berlaku untuk