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 findValueFind(X509FindType, Object, Boolean) metody 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 findValueFind(X509FindType, Object, Boolean) metody musí být řetězec představující popisný název nebo identifikátor objektu (OID nebo Oid) zásad 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 findValueFind(X509FindType, Object, Boolean) metody 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í této hodnotě OID.

FindByIssuerDistinguishedName 4

Parametrem findValueFind(X509FindType, Object, Boolean) metody musí být řetězec představující rozlišující název certifikátu vystavitele. Toto je konkrétnější hledání, než které poskytuje hodnota výčtu FindByIssuerName . FindByIssuerDistinguishedName Pomocí hodnoty Find(X509FindType, Object, Boolean) metoda provede porovnání řetězců nerozlišující malá a velká písmena pro celý rozlišující název. Hledání podle názvu vystavitele je méně přesné.

FindByIssuerName 3

Parametrem findValueFind(X509FindType, Object, Boolean) metody musí být řetězec představující název vystavitele certifikátu. Toto je 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, který obsahuje tento řetězec, bez ohledu na hodnoty ostatních vystavitelů.

FindByKeyUsage 13

Parametrem findValue metody Find(X509FindType, Object, Boolean) musí být ř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 lze například findValue nastavit na "KeyEncipherment" nebo celé číslo (0x30 označuje "KeyEncipherment" a "DataEncipherment"). Lze také použít hodnoty výčtu X509KeyUsageFlags .

FindBySerialNumber 5

Parametrem findValue metody Find(X509FindType, Object, Boolean) musí být řetězec, který představuje sériové číslo certifikátu zobrazeného v dialogovém okně certifikátu, ale bez mezer nebo vrácených metodou GetSerialNumberString() .

FindBySubjectDistinguishedName 2

Parametrem findValueFind(X509FindType, Object, Boolean) metody musí být řetězec představující rozlišující název předmětu certifikátu. Toto je konkrétnější hledání, než které poskytuje hodnota výčtu FindBySubjectName . FindBySubjectDistinguishedName Pomocí hodnoty Find(X509FindType, Object, Boolean) metoda provede porovnání řetězců nerozlišující malá a velká písmena 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é soustavě, například "F3E815D45E83B8477B9284113C64EF208E897112", jak se zobrazuje v uživatelském rozhraní.

FindBySubjectName 1

Parametrem findValueFind(X509FindType, Object, Boolean) metody musí být řetězec představující název subjektu certifikátu. Toto je 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 se všechny certifikáty s názvem subjektu, který obsahuje tento řetězec, bez ohledu na jiné hodnoty předmětu. Hledání podle rozlišujícího názvu je přesnější.

FindByTemplateName 9

Parametrem findValueFind(X509FindType, Object, Boolean) metody 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

Parametrem findValueFind(X509FindType, Object, Boolean) metody musí být řetězec představující kryptografický otisk certifikátu.

FindByTimeExpired 8

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

FindByTimeNotYetValid 7

Parametrem findValue metody Find(X509FindType, Object, Boolean) musí být DateTime hodnota v místním čase. Hodnota nemusí být v budoucnosti. Pomocí příkazu můžete FindByTimeNotYetValid například vyhledat certifikáty, které začaly platit v aktuálním roce, a to tak, že použijete průsečík výsledků Find(X509FindType, Object, Boolean) operace pro FindByTimeNotYetValid poslední den minulého roku s výsledky Find(X509FindType, Object, Boolean) operace pro FindByTimeValid .Now

FindByTimeValid 6

Parametrem findValue metody Find(X509FindType, Object, Boolean) musí být DateTime hodnota v místním čase. Pomocí příkazu Now můžete vyhledat všechny aktuálně platné certifikáty.

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 poté zapíše informace o certifikátu do konzoly nástroje . 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 . Pomocí příkazu X509FindType můžete kolekci X509Certificate2 vyhledat 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 typů hodnot. 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