estructura CERT_STORE_PROV_FIND_INFO (wincrypt.h)

Muchas de las funciones de devolución de llamada del proveedor de almacén usan la estructura CERT_STORE_PROV_FIND_INFO . Contiene criterios de búsqueda para buscar un certificado, una lista de revocación de certificados (CRL) o una lista de confianza de certificados (CTL) en un almacén de certificados.

Sintaxis

typedef struct _CERT_STORE_PROV_FIND_INFO {
  DWORD      cbSize;
  DWORD      dwMsgAndCertEncodingType;
  DWORD      dwFindFlags;
  DWORD      dwFindType;
  const void *pvFindPara;
} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;

Miembros

cbSize

Tamaño de la estructura.

dwMsgAndCertEncodingType

Especifica el tipo de codificación utilizado para los mensajes y certificados. Los tipos de codificación de certificados y mensajes se pueden combinar con una operación OR bit a bit. Estos son los tipos de codificación definidos:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

dwFindFlags

Se usa con algunos valores dwFindType para modificar los criterios de búsqueda. Para la mayoría de los valores dwFindType , dwFindFlags no se usa y debe establecerse en cero.

dwFindType

Especifica el tipo de búsqueda que se está realizando. El tipo de búsqueda determina el tipo de datos, el contenido y el uso de pvFindPara. Los valores dwFindType definidos actualmente y el tipo de datos que requiere cada uno para pvFindPara son los siguientes.

Valor Significado
CERT_FIND_ANY
NULL; pvFindPara no se usa
No se usan criterios de búsqueda. Devuelve el siguiente certificado del almacén.
CERT_FIND_CERT_ID
estructura de CERT_ID
Busca el certificado identificado por el CERT_ID especificado.
CERT_FIND_CTL_USAGE
estructura de CTL_USAGE
Busca un certificado que tenga una extensión szOID_ENHANCED_KEY_USAGE o un CERT_CTL_PROP_ID que coincida con el miembro pszUsageIdentifier de la estructura CTL_USAGE .
CERT_FIND_ENHKEY_USAGE
estructura de CERT_ENHKEY_USAGE
Busca un certificado en el almacén que tenga una extensión de uso de clave mejorada o una propiedad de uso de clave mejorada y un identificador de uso que coincida con el miembro pszUsageIdentifier en la estructura CERT_ENHKEY_USAGE .

Un certificado tiene una extensión de uso de clave mejorada si tiene una estructura de CERT_EXTENSION con el miembro pszObjId establecido en szOID_ENHANCED_KEY_USAGE. Un certificado tiene una propiedad de uso de clave mejorada si se establece su identificador de CERT_ENHKEY_USAGE_PROP_ID.

Si pvFindPara es NULL o el miembro cUsageIdentifier de CERT_ENHKEY_USAGE es cero, cualquier certificado que tenga la extensión de uso de clave mejorada o la propiedad de uso de clave mejorada cumpla los criterios de selección.

Si pvFindPara es NULL o el miembro cUsageIdentifier de la estructura CERT_ENHKEY_USAGE es cero, cualquier certificado que tenga un uso mejorado de clave es una coincidencia.

Si CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG se establece en dwFindFlags, los certificados sin la extensión de uso de claves o la propiedad también son coincidencias. Establecer esta marca tiene prioridad sobre pasar NULL en pvFindPara.

Si se establece CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG, solo se realiza una coincidencia en la extensión de uso de claves.

Para obtener información sobre las modificaciones de marcas en los criterios de búsqueda, vea Comentarios.

CERT_FIND_EXISTING
estructura de CERT_CONTEXT
Busca un certificado que coincida exactamente con el contexto de certificado especificado.
CERT_FIND_HASH
estructura de CRYPT_HASH_BLOB
Busca un certificado con un hash SHA1 que coincida con el hash de la estructura CRYPT_HASH_BLOB .
CERT_FIND_ISSUER_ATTR
estructura de CERT_RDN
Busque un certificado con atributos de emisor especificados que coincidan con los atributos de la estructura CERT_RDN . Si se establecen estos valores, la función compara los atributos del emisor en un certificado con elementos de la matriz CERT_RDN_ATTR de esta estructura CERT_RDN . Las comparaciones recorren en iteración los atributos de CERT_RDN_ATTR que buscan una coincidencia con los atributos del emisor del certificado.

Si el miembro pszObjId de CERT_RDN_ATTR es NULL, se omite el identificador del objeto de atributo.

Si el miembro dwValueType de CERT_RDN_ATTR es CERT_RDN_ANY_TYPE, se omite el tipo de valor.

Si el miembro pbData de CERT_RDN_VALUE_BLOB es NULL, cualquier valor es una coincidencia.

Actualmente, solo se admite una coincidencia exacta que distingue mayúsculas de minúsculas. Para obtener información sobre las opciones Unicode, vea Comentarios. Cuando se establecen estos valores, la búsqueda está restringida a certificados cuyo tipo de codificación coincide con dwMsgAndCertEncodingType.

CERT_FIND_ISSUER_NAME
estructura de CERT_NAME_BLOB
Busque un certificado con una coincidencia exacta del nombre completo del emisor con el nombre en CERT_NAME_BLOB. La búsqueda está restringida a certificados que coinciden con dwMsgAndCertEncodingType.
CERT_FIND_ISSUER_OF
estructura de CERT_CONTEXT
Busca un certificado con un emisor que coincida con el emisor en CERT_CONTEXT.

En lugar de usar la función CertFindCertificateInStore con este valor, use la función CertGetCertificateChain .

CERT_FIND_ISSUER_STR
Cadena ancha terminada en NULL (Unicode)
Busque un certificado que contenga la cadena de nombre del emisor especificada. El miembro emisor del certificado se convierte en una cadena de nombre del tipo adecuado utilizando el formato adecuado de CertNameToStr con el formato CERT_SIMPLE_NAME_STR. A continuación, se realiza una coincidencia de subcadena sin distinción entre mayúsculas y minúsculas dentro de una cadena. Cuando se establece este valor, la búsqueda está restringida a certificados cuyo tipo de codificación coincide con dwMsgAndCertEncodingType.
CERT_FIND_KEY_IDENTIFIER
estructura de CRYPT_HASH_BLOB
Busca un certificado con una propiedad CERT_KEY_IDENTIFIER_PROP_ID que coincida con el identificador de clave en CRYPT_HASH_BLOB.
CERT_FIND_KEY_SPEC
DWORD que contiene una especificación de clave
Busca un certificado que tenga una propiedad CERT_KEY_SPEC_PROP_ID que coincida con la especificación de clave en pvFindPara.
CERT_FIND_MD5_HASH
estructura de CRYPT_HASH_BLOB
Busca un certificado con un hash MD5 que coincida con el hash de CRYPT_HASH_BLOB.
CERT_FIND_PROPERTY
DWORD que contiene un identificador de propiedad
Busca un certificado con una propiedad que coincida con el identificador de propiedad especificado por DWORD en pvFindPara.
CERT_FIND_PUBLIC_KEY
estructura de CERT_PUBLIC_KEY_INFO
Busca un certificado con una clave pública que coincida con la clave pública en la estructura CERT_PUBLIC_KEY_INFO .
CERT_FIND_SHA1_HASH
estructura de CRYPT_HASH_BLOB
Busca un certificado con un hash SHA1 que coincida con el hash de la estructura CRYPT_HASH_BLOB .
CERT_FIND_SIGNATURE_HASH
estructura de CRYPT_HASH_BLOB
Busca un certificado con un hash de firma que coincida con el hash de firma en la estructura CRYPT_HASH_BLOB .
CERT_FIND_SUBJECT_ATTR
estructura de CERT_RDN
Busca un certificado con atributos de asunto especificados que coincidan con los atributos de la estructura CERT_RDN . Si se establecen valores RDN, la función compara los atributos del asunto en un certificado con elementos de la matriz CERT_RDN_ATTR de esta estructura CERT_RDN . Las comparaciones recorren en iteración los atributos de CERT_RDN_ATTR buscando una coincidencia con los atributos del firmante del certificado.

Si el miembro pszObjId de CERT_RDN_ATTR es NULL, se omite el identificador del objeto de atributo.

Si el miembro dwValueType de CERT_RDN_ATTR es CERT_RDN_ANY_TYPE, se omite el tipo de valor.

Si el miembro pbData de CERT_RDN_VALUE_BLOB es NULL, cualquier valor es una coincidencia.

Actualmente, solo se admite una coincidencia exacta que distingue mayúsculas de minúsculas.

Para obtener información sobre las opciones Unicode, vea Comentarios. Cuando se establecen estos valores, la búsqueda está restringida a certificados cuyo tipo de codificación coincide con dwMsgAndCertEncodingType.

CERT_FIND_SUBJECT_CERT
estructura de CERT_INFO
Busca un certificado con un emisor y un número de serie que coincidan con el emisor y el número de serie en la estructura CERT_INFO .
CERT_FIND_SUBJECT_NAME
estructura de CERT_NAME_BLOB
Busca un certificado con una coincidencia exacta del nombre completo del firmante con el nombre en la estructura CERT_NAME_BLOB . La búsqueda está restringida a certificados que coinciden con el valor de dwMsgAndCertEncodingType.
CERT_FIND_SUBJECT_STR
Cadena ancha terminada en NULL (Unicode)
Busca un certificado que contenga la cadena de nombre del firmante especificada. El miembro firmante del certificado se convierte en una cadena de nombre del tipo adecuado con el formato CertNameToStr adecuado como CERT_SIMPLE_NAME_STR. A continuación, se realiza una coincidencia de subcadena sin distinción entre mayúsculas y minúsculas dentro de una cadena. Cuando se establece este valor, la búsqueda está restringida a certificados cuyo tipo de codificación coincide con dwMsgAndCertEncodingType.
 
Nota Hay formas alternativas del valor de dwFindType que pasan una cadena en pvFindPara. Un formulario usa una cadena Unicode y la otra una cadena ASCII . Los valores que terminan en "_W" o sin un sufijo usan Unicode. Los valores que terminan con "_A" usan cadenas ASCII .
 

pvFindPara

Apunta a un elemento de datos o estructura que se va a usar con el tipo de búsqueda indicado por el valor de dwFindType.

Comentarios

El miembro dwFindFlags se usa para modificar los criterios de algunos tipos de búsqueda.

El valor dwFindFlags de CERT_UNICODE_IS_RDN_ATTRS_FLAG solo se usa con los valores de CERT_FIND_SUBJECT_ATTR y CERT_FIND_ISSUER_ATTR para dwFindType. CERT_UNICODE_IS_RDN_ATTRS_FLAG debe establecerse si la estructura de CERT_RDN_ATTR a la que apunta pvFindPara se inicializó con cadenas Unicode. Antes de realizar cualquier comparación, la cadena que se va a hacer coincidir se convierte mediante X509_UNICODE_NAME para proporcionar comparaciones Unicode.

Los siguientes valores dwFindFlags solo se usan con el valor de CERT_FIND_ENKEY_USAGE para dwFindType.

Valor Significado
CERT_FIND_OR_ENHKEY_USAGE_FLAG Los criterios de búsqueda se pueden modificar estableciendo una o varias marcas. De forma predeterminada, si el miembro pszUsageIdentifier de la estructura de CERT_ENHKEY_USAGE a la que apunta pvFindPara debe coincidir, cada identificador debe coincidir para satisfacer los criterios de búsqueda. Sin embargo, si se establece CERT_FIND_OR_ENHKEY_USAGE_FLAG, se puede establecer una coincidencia en todos los identificadores combinados mediante una operación OR bit a bit; por lo tanto, la coincidencia con cualquiera de los identificadores es suficiente.
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG Cuando se establece esta marca, además de coincidencias habituales, cualquier certificado que no tenga la extensión de uso de clave mejorada ni la propiedad de uso de clave mejorada cumpla los criterios de búsqueda.
CERT_FIND_NO_ENHKEY_USAGE_FLAG Cuando se establece esta marca, solo los certificados que no tienen un uso mejorado de clave ni la propiedad de uso de clave mejorada son coincidencias. Esta configuración de marca tiene prioridad sobre pvFindPara , siendo NULL.
CERT_FIND_VALID_ENHKEY_USAGE_FLAG Cuando se establece esta marca, la función solo coincide con los certificados que son válidos para el uso especificado. De forma predeterminada, para que coincida, un certificado debe ser válido para todos los usos.

CERT_FIND_OR_ENHKEY_USAGE_FLAG también se puede establecer si el certificado solo debe ser válido para uno de los usos especificados. Tenga en cuenta que se llama a CertGetValidUsages para obtener la lista de usos válidos para el certificado. Solo se pueden aplicar CERT_FIND_OR_ENHKEY_USAGE_FLAG cuando se establece CERT_FIND_VALID_ENHKEY_USAGE_FLAG.

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG Cuando se establece esta marca, el proceso de coincidencia solo implica los identificadores de uso de la extensión. Si pvFindPara es NULL o el miembro cUsageIdentifier de la estructura de CERT_ENHKEY_USAGE a la que apunta pvFindPara es cero, cualquier certificado que tenga una extensión de uso de clave mejorada es una coincidencia. Si también se establece CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG, cualquier certificado sin la extensión de uso de clave mejorada también es una coincidencia. Si también se establece CERT_FIND_NO_ENHKEY_USAGE_FLAG, solo coinciden los certificados sin la extensión de uso de claves mejorada.
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG Cuando se establece esta marca, el proceso de coincidencia solo implica identificadores de uso que son propiedades. Si pvFindPara es NULL o cUsageIdentifier se establece en cero, cualquier certificado que tenga una propiedad de uso de clave mejorada es una coincidencia. Si también se establece CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG, cualquier certificado sin la propiedad de uso de clave mejorada también es una coincidencia. Si se establece CERT_FIND_NO_ENHKEY_USAGE_FLAG, solo los certificados sin la propiedad de uso de clave mejorada son coincidencias.
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG Solo se usa con los valores CERT_FIND_SUBJECT_ATTR y CERT_FIND_ISSUER-ATTR de dwFindType. De forma predeterminada, se realiza una coincidencia exacta y distingue mayúsculas de minúsculas. Si se establece esta marca, la coincidencia no distingue mayúsculas de minúsculas.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado wincrypt.h