Comparteix a través de


X509FindType Enumeración

Definición

Especifica el tipo de valor buscado por el método Find(X509FindType, Object, Boolean).

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

Campos

FindByApplicationPolicy 10

El parámetro findValue del método Find(X509FindType, Object, Boolean) debe ser una cadena que represente el nombre descriptivo de la directiva de aplicación o el identificador de objeto (OID o Oid) del certificado. Por ejemplo, se puede utilizar "Sistema de archivos de cifrado" o "1.3.6.1.4.1.311.10.3.4". Cuando se vaya a adaptar una aplicación, se deberá utilizar el valor OID, puesto que el nombre descriptivo también se adapta.

FindByCertificatePolicy 11

El parámetro findValue del método Find(X509FindType, Object, Boolean) debe ser una cadena que represente el nombre descriptivo o el identificador de objeto (OID o Oid) de la directiva del certificado. El procedimiento recomendado es utilizar el OID como, por ejemplo, "1.3.6.1.4.1.311.10.3.4". Cuando se vaya a adaptar una aplicación, se deberá utilizar el OID, puesto que el nombre descriptivo también se adapta.

FindByExtension 12

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que describa la extensión que se va a buscar. El identificador de objeto (OID) se utiliza normalmente para indicar al método Find(X509FindType, Object, Boolean) que busque todos los certificados que tengan una extensión que coincida con el valor de OID.

FindByIssuerDistinguishedName 4

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente el nombre distintivo del emisor del certificado. Esta es una búsqueda más concreta que la proporcionada por el valor de enumeración FindByIssuerName. Cuando se utiliza el valor FindByIssuerDistinguishedName, el método Find(X509FindType, Object, Boolean) realiza una comparación de cadenas de nombres distintivos, sin distinción de mayúsculas y minúsculas. La búsqueda por nombre de emisor proporciona resultados menos precisos.

FindByIssuerName 3

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente el nombre del emisor del certificado. Esta es una búsqueda menos concreta que la proporcionada por el valor de enumeración FindByIssuerDistinguishedName. Cuando se utiliza el valor FindByIssuerName, el método Find(X509FindType, Object, Boolean) realiza una comparación de cadenas, sin distinción de mayúsculas y minúsculas, con el valor proporcionado. Por ejemplo, si se pasa "MiEntidadEmisora" al método Find(X509FindType, Object, Boolean), se encontrarán todos los certificados cuyo nombre de emisor contenga esa cadena, sin que se tengan en cuenta otros valores del emisor.

FindByKeyUsage 13

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente el uso de la clave o un entero que represente una máscara de bits que contenga todos los usos de clave solicitados. Para el valor de cadena sólo se puede especificar un uso de clave al mismo tiempo, pero se puede utilizar el método Find(X509FindType, Object, Boolean) en una secuencia en cascada para obtener la intersección de los usos solicitados. Por ejemplo, el parámetro findValue se puede establecer en "KeyEncipherment" o en un entero (0x30 indica "KeyEncipherment" y "DataEncipherment"). También se pueden utilizar los valores de la enumeración X509KeyUsageFlags.

FindBySerialNumber 5

El parámetro findValue para el método Find(X509FindType, Object, Boolean) debe ser una cadena que representa el número de serie del certificado como se muestra en el cuadro de diálogo del certificado, pero sin espacios, o como el parámetro devuelto por el método GetSerialNumberString() .

FindBySubjectDistinguishedName 2

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente el nombre distintivo del sujeto del certificado. Esta es una búsqueda más concreta que la proporcionada por el valor de enumeración FindBySubjectName. Cuando se utiliza el valor FindBySubjectDistinguishedName, el método Find(X509FindType, Object, Boolean) realiza una comparación de cadenas de nombres distintivos, sin distinción de mayúsculas y minúsculas. La búsqueda por nombre de sujeto proporciona resultados menos precisos.

FindBySubjectKeyIdentifier 14

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente el identificador de clave de sujeto en formato hexadecimal, como "F3E815D45E83B8477B9284113C64EF208E897112", tal y como se muestra en la interfaz de usuario (UI).

FindBySubjectName 1

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente el nombre del sujeto del certificado. Esta es una búsqueda menos concreta que la proporcionada por el valor de enumeración FindBySubjectDistinguishedName. Cuando se utiliza el valor FindBySubjectName, el método Find(X509FindType, Object, Boolean) realiza una comparación de cadenas, sin distinción de mayúsculas y minúsculas, con el valor proporcionado. Por ejemplo, si se pasa "MiCertificado" al método Find(X509FindType, Object, Boolean), se encontrarán todos los certificados cuyo nombre de sujeto contenga esa cadena, sin que se tengan en cuenta otros valores del sujeto. La búsqueda por nombre distintivo proporciona resultados más precisos.

FindByTemplateName 9

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente el nombre de plantilla del certificado como, por ejemplo, "AutorizaciónCliente". Un nombre de plantilla es una extensión de la versión 3 de X509 que especifica los usos del certificado.

FindByThumbprint 0

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser una cadena que represente la huella digital del certificado.

FindByTimeExpired 8

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser un valor DateTime en hora local. Por ejemplo, puede encontrar todos los certificados que serán válidos hasta el fin del año eliminando los resultados de una operación Find(X509FindType, Object, Boolean) para FindByTimeExpired del último día del año de los resultados de una operación Find(X509FindType, Object, Boolean) para Now.

FindByTimeNotYetValid 7

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser un valor DateTime en hora local. El valor no tiene que ser necesariamente futuro. Por ejemplo, puede utilizar FindByTimeNotYetValid para encontrar certificados que eran válidos en el año actual tomando la intersección de los resultados de una operación Find(X509FindType, Object, Boolean) para FindByTimeNotYetValid durante el último día del año pasado con los resultados de una operación Find(X509FindType, Object, Boolean) para FindByTimeValid de Now.

FindByTimeValid 6

El parámetro findValue del método Find(X509FindType, Object, Boolean) deberá ser un valor DateTime en hora local. Puede utilizar Now para buscar todos los certificados actualmente válidos.

Ejemplos

En el ejemplo siguiente se abre el almacén de certificados personal del usuario actual, se buscan solo certificados válidos, se permite al usuario seleccionar un certificado y, a continuación, se escribe la información del certificado en la consola. La salida depende del certificado que seleccione.

#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

Comentarios

X509FindType identifica el tipo de valor proporcionado en el findValue parámetro para el Find método . Puede usar X509FindType para buscar en una X509Certificate2 colección por nombre de firmante, huella digital, número de serie, intervalo de fechas válido u otro valor.

Puede usar una combinación de tipos de valor para buscar certificados que son válidos en un intervalo de FindByTime tiempo determinado. La unión de certificados devueltos mediante FindByTimeValid, FindByTimeNotYetValid y FindByTimeExpired durante un tiempo determinado representa todos los certificados de la colección consultada.

Se aplica a