X509FindType Výčet

Definice

Určuje typ hodnoty, kterou Find(X509FindType, Object, Boolean) metoda hledá.

public enum class X509FindType
public enum X509FindType
type X509FindType = 
Public Enum X509FindType
Dědičnost
X509FindType

Pole

FindByApplicationPolicy 10

Parametrem findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec představující popisný název zásad aplikace nebo identifikátor objektu (OID nebo Oid) certifikátu. Můžete použít například "Encrypting File System" nebo "1.3.6.1.4.1.311.10.3.4". Pro aplikaci, která bude lokalizována, musí být použita hodnota OID, protože popisný název je lokalizován.

FindByCertificatePolicy 11

Parametrem findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec představující popisný název nebo identifikátor objektu (OID nebo Oid) zásady certifikátu. Osvědčeným postupem je použít identifikátor OID, například 1.3.6.1.4.1.311.10.3.4. Pro aplikaci, která bude lokalizována, musí být použit identifikátor OID, protože popisný název je lokalizován.

FindByExtension 12

Parametrem findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec popisující rozšíření, které se má najít. Identifikátor objektu (OID) se nejčastěji používá k nasměrování Find(X509FindType, Object, Boolean) metody k vyhledání všech certifikátů, které mají příponu odpovídající hodnotě OID.

FindByIssuerDistinguishedName 4

Parametr findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec představující rozlišující název vystavitele certifikátu. Jedná se o konkrétnější vyhledávání, než které poskytuje hodnota výčtu FindByIssuerName . FindByIssuerDistinguishedName Pomocí hodnoty Find(X509FindType, Object, Boolean) metoda provede porovnání řetězců bez rozlišování velkých a malých písmen pro celý rozlišující název. Hledání podle názvu vystavitele je méně přesné.

FindByIssuerName 3

Parametr findValue metody Find(X509FindType, Object, Boolean) musí být řetězec představující název vystavitele certifikátu. Jedná se o méně specifické hledání, než které poskytuje hodnota výčtu FindByIssuerDistinguishedName . FindByIssuerName Pomocí hodnoty Find(X509FindType, Object, Boolean) metoda provede porovnání řetězců bez rozlišování velkých a malých písmen pomocí zadané hodnoty. Pokud například metodě předáte "MyCA" Find(X509FindType, Object, Boolean) , najde všechny certifikáty s názvem vystavitele obsahujícím tento řetězec bez ohledu na jiné hodnoty vystavitele.

FindByKeyUsage 13

Parametrem findValue metody Find(X509FindType, Object, Boolean) musí být buď řetězec představující použití klíče, nebo celé číslo představující bitovou masku obsahující všechna požadovaná použití klíče. Pro řetězcovou hodnotu lze zadat pouze jedno použití klíče najednou, ale metodu Find(X509FindType, Object, Boolean) lze použít v kaskádové sekvenci k získání průniku požadovaných použití. Parametr může být například findValue nastaven na "KeyEncipherment" nebo celé číslo (0x30 označuje "KeyEncipherment" a "DataEncipherment"). Lze také použít hodnoty výčtu X509KeyUsageFlags .

FindBySerialNumber 5

Parametrem findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec, který představuje sériové číslo certifikátu, jak je zobrazeno v dialogovém okně certifikátu, ale bez mezer, nebo jak vrátí GetSerialNumberString() metoda.

FindBySubjectDistinguishedName 2

Parametrem findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec představující rozlišující název předmětu certifikátu. Jedná se o konkrétnější vyhledávání, než které poskytuje hodnota výčtu FindBySubjectName . FindBySubjectDistinguishedName Pomocí hodnoty Find(X509FindType, Object, Boolean) metoda provede porovnání řetězců bez rozlišování velkých a malých písmen pro celý rozlišující název. Hledání podle názvu subjektu je méně přesné.

FindBySubjectKeyIdentifier 14

Parametrem findValue metody Find(X509FindType, Object, Boolean) musí být řetězec představující identifikátor klíče subjektu v šestnáctkovém formátu, například "F3E815D45E83B8477B9284113C64EF208E8971112", jak je zobrazeno v uživatelském rozhraní.

FindBySubjectName 1

Parametr findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec představující název subjektu certifikátu. Jedná se o méně specifické hledání, než které poskytuje hodnota výčtu FindBySubjectDistinguishedName . FindBySubjectName Pomocí hodnoty Find(X509FindType, Object, Boolean) metoda provede porovnání řetězců bez rozlišování velkých a malých písmen pomocí zadané hodnoty. Pokud například metodě předáte "MyCert" Find(X509FindType, Object, Boolean) , najde všechny certifikáty s názvem subjektu obsahujícím tento řetězec bez ohledu na jiné hodnoty předmětu. Hledání podle rozlišujícího názvu je přesnější hledání.

FindByTemplateName 9

Parametrem findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec představující název šablony certifikátu, například ClientAuth. Název šablony je rozšíření X509 verze 3, které určuje použití certifikátu.

FindByThumbprint 0

Parametr findValue pro metodu Find(X509FindType, Object, Boolean) musí být řetězec představující kryptografický otisk certifikátu.

FindByTimeExpired 8

Parametr findValue pro metodu Find(X509FindType, Object, Boolean) musí být DateTime hodnota v místním čase. Můžete například najít všechny certifikáty, které budou platné do konce roku, a to tak, že z výsledků Find(X509FindType, Object, Boolean) operace Nowpro vyloučíte výsledky Find(X509FindType, Object, Boolean) operace pro FindByTimeExpired poslední den v roce.

FindByTimeNotYetValid 7

Parametr findValue pro metodu Find(X509FindType, Object, Boolean) musí být DateTime hodnota v místním čase. Hodnota nemusí být v budoucnu. Můžete například použít FindByTimeNotYetValid k vyhledání certifikátů, které se staly platnými v aktuálním roce, a to tak, že vezmete průsečík výsledků Find(X509FindType, Object, Boolean) operace pro FindByTimeNotYetValid poslední den v minulém roce s výsledky Find(X509FindType, Object, Boolean) operace pro FindByTimeValid .Now

FindByTimeValid 6

Parametr findValue pro metodu Find(X509FindType, Object, Boolean) musí být DateTime hodnota v místním čase. Můžete použít Now k vyhledání všech aktuálně platných certifikátů.

Příklady

Následující příklad otevře osobní úložiště certifikátů aktuálního uživatele, vyhledá pouze platné certifikáty, umožní uživateli vybrat certifikát a pak zapíše informace o certifikátu do konzoly. Výstup závisí na certifikátu, který vyberete.

#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

Poznámky

X509FindType určuje typ hodnoty zadané v parametru findValue pro metodu Find . Kolekci můžete použít X509FindType k vyhledávání X509Certificate2 podle názvu subjektu, kryptografického otisku, sériového čísla, platného rozsahu dat nebo jiné hodnoty.

K vyhledání certifikátů, které jsou platné v daném časovém rozsahu, můžete použít kombinaci FindByTime hodnotových typů. Sjednocení certifikátů vrácených pomocí funkcí FindByTimeValid, FindByTimeNotYetValid a FindByTimeExpired pro danou dobu představuje všechny certifikáty v dotazované kolekci.

Platí pro