Función CertGetCRLContextProperty (wincrypt.h)

La función CertGetCRLContextProperty obtiene una propiedad extendida para el contexto de lista de revocación de certificados (CRL) especificado.

Sintaxis

BOOL CertGetCRLContextProperty(
  [in]      PCCRL_CONTEXT pCrlContext,
  [in]      DWORD         dwPropId,
  [out]     void          *pvData,
  [in, out] DWORD         *pcbData
);

Parámetros

[in] pCrlContext

Puntero a la estructura CRL_CONTEXT .

[in] dwPropId

Identifica la propiedad que se va a recuperar. Los identificadores definidos actualmente y el tipo de datos que se va a devolver en pvData se muestran en la tabla siguiente.

Valor Significado
CERT_ACCESS_STATE_PROP_ID
Tipo de datos para pvData: puntero a un DWORD

Devuelve un valor DWORD que indica si se conservan las operaciones de escritura en el certificado. El valor DWORD no se establece si el certificado está en un almacén de memoria o en un almacén basado en el Registro que se abre como de solo lectura.

CERT_ARCHIVED_PROP_ID
Tipo de datos para pvData: NULL

Indica que el certificado se omite durante las enumeraciones. Un certificado con este conjunto de propiedades se encuentra con operaciones de búsqueda explícitas, como las usadas para buscar un certificado con un hash específico o un número de serie. No hay datos en pvData asociados a esta propiedad.

CERT_AUTO_ENROLL_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve una cadena Unicode terminada en null que asigna un nombre al tipo de certificado para el que se ha inscrito automáticamente el certificado.

CERT_CTL_USAGE_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve una matriz de bytes que contiene una estructura de notación de sintaxis abstracta uno (ASN.1) codificada CTL_USAGE .

CERT_DESCRIPTION_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve la propiedad mostrada por la interfaz de usuario del certificado. Esta propiedad permite al usuario describir el uso del certificado.

CERT_ENHKEY_USAGE_PROP_ID
Tipo de datos para pvData:

Devuelve una matriz de bytes que contiene una estructura de CERT_ENHKEY_USAGE codificada en ASN.1.

CERT_FRIENDLY_NAME_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve una cadena de caracteres Unicode terminada en null que contiene el nombre para mostrar de la CRL.

CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID
Tipo de datos para pvData: puntero a una cadena Unicode terminada en null.

Devuelve una cadena que contiene un conjunto de pares de clave pública Y pares de longitud de bits de L"<PUBKEY>/<BITLENGTH>". El punto y coma, L";", se usa como delimitador.

El <valor PUBKEY> identifica el algoritmo de clave pública CNG. Se admiten los siguientes algoritmos:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Se devuelve un <par PUBKEY>/<BITLENGTH> para cada certificado de la cadena de emisor de CRL, excepto la hoja. Esta propiedad solo se establece cuando una respuesta OCSP con una cadena de firmante independiente se convierte en una CRL.
Nota Esta propiedad no se puede recuperar para un certificado de firmante OCSP delegado. Un certificado de firmante delegado se firma con la misma clave que se usa para firmar el certificado del firmante y se comprueba allí.
 
A continuación se muestra un ejemplo:

: L"RSA/2048; RSA/4096"

CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID
Tipo de datos para pvData: puntero a una cadena Unicode terminada en null.

Devuelve una cadena que contiene un conjunto de pares de algoritmos L"<SIGNATURE>/<HASH>". El punto y coma, L";", se usa como delimitador entre pares.

Esta propiedad solo se establece cuando una respuesta OCSP se convierte en una CRL. En el caso de un certificado de firmante OCSP delegado, solo se devuelve el par de algoritmos para el certificado de firmante. Para una cadena de certificados de firmante OCSP independiente, se devuelve un par de algoritmos para cada certificado de la cadena, excepto la raíz.

El <valor SIGNATURE> identifica el algoritmo de clave pública CNG. Se admiten los siguientes algoritmos:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
El <valor HASH> identifica el algoritmo hash CNG. Se admiten los siguientes algoritmos:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
Se muestra un ejemplo a continuación:
  • L"RSA/SHA256; RSA/SHA256"
CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Tipo de datos para pvData: puntero a un valor DWORD .

Devuelve la longitud, en bits, de la clave pública en el certificado del emisor crL. Esta propiedad también es aplicable a una respuesta OCSP que se ha convertido en una CRL.

Windows 8 y Windows Server 2012: comienza la compatibilidad con esta propiedad.

CERT_KEY_CONTEXT_PROP_ID
Tipo de datos para pvData: puntero a un CERT_KEY_CONTEXT

Devuelve una estructura de CERT_KEY_CONTEXT .

CERT_KEY_IDENTIFIER_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Si no existe, busca la extensión szOID_SUBJECT_KEY_IDENTIFIER. Si se produce un error, se realiza un hash SHA1 en el miembro SubjectPublicKeyInfo del certificado para generar los valores de identificador.

CERT_KEY_PROV_HANDLE_PROP_ID
Tipo de datos para pvData: puntero a un HCRYPTPROV

Devuelve el identificador de proveedor obtenido del CERT_KEY_CONTEXT_PROP_ID.

CERT_KEY_PROV_INFO_PROP_ID
Tipo de datos para pvData: puntero a un CRYPT_KEY_PROV_INFO

Devuelve un puntero a un CRYPT_KEY_PROV_INFO.

CERT_KEY_SPEC_PROP_ID
Tipo de datos para pvData: puntero a un DWORD

Devuelve un valor DWORD que especifica la clave privada obtenida de CERT_KEY_CONTEXT_PROP_ID propiedad si existe. De lo contrario, si CERT_KEY_PROV_INFO_PROP_ID existe, es el origen de dwKeySpec.

CERT_MD5_HASH_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve el hash MD5. Si el hash no existe, se calcula mediante CryptHashCertificate.

CERT_NEXT_UPDATE_LOCATION_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve la estructura de CERT_ALT_NAME_INFO codificada en ASN.1.

CERT_NEXT_UPDATE_LOCATION_PROP_ID solo se usa actualmente con CTL.

CERT_PVK_FILE_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve una cadena de caracteres anchos Unicode terminada en NULL que especifica el nombre de archivo que contiene la clave privada asociada a la clave pública del certificado.

CERT_SHA1_HASH_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve el hash SHA1. Si el hash no existe, se calcula mediante CryptHashCertificate.

CERT_SIGN_HASH_CNG_ALG_PROP_ID
Tipo de datos de pvData: puntero a una cadena Unicode terminada en null.

Devuelve la cadena L"<SIGNATURE>/<HASH>" que representa la firma del certificado. El <valor SIGNATURE> identifica el algoritmo de clave pública CNG. Se admiten los algoritmos siguientes:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
El <valor HASH> identifica el algoritmo hash CNG. Se admiten los algoritmos siguientes:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
A continuación se muestran ejemplos comunes:
  • L"RSA/SHA1"
  • L"RSA/SHA256"
  • L"ECDSA/SHA256"
Esta propiedad también es aplicable a una respuesta OCSP que se ha convertido en una CRL.

Windows 8 y Windows Server 2012: comienza la compatibilidad con esta propiedad.

CERT_SIGNATURE_HASH_PROP_ID
Tipo de datos para pvData: puntero a una matriz BYTE

Devuelve el hash de firma. Si el hash no existe, se calcula con CryptHashToBeSigned. La longitud del hash es de 20 bytes para SHA y 16 para MD5.

 

Para muchos identificadores de propiedad, pvData apunta a una matriz de bytes y no a un CRYPT_DATA_BLOB como señala el parámetro pvData en CertSetCRLContextProperty.

Para obtener más información sobre cada identificador de propiedad, consulte la documentación sobre el parámetro dwPropId en CertSetCertificateContextProperty.

[out] pvData

Puntero a un búfer para recibir los datos según lo determinado por dwPropId. Las estructuras a las que apuntan los miembros de una estructura devuelta también se devuelven después de la estructura base. Por lo tanto, el tamaño contenido en pcbData suele superar el tamaño de la estructura base.

Este parámetro puede ser NULL para establecer el tamaño de la información con fines de asignación de memoria. Para obtener más información, vea Recuperación de datos de longitud desconocida.

[in, out] pcbData

Puntero a un valor DWORD que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pvData . Cuando la función devuelve, el valor DWORD contiene el número de bytes que se almacenarán en el búfer.

Nota Al procesar los datos devueltos en el búfer, las aplicaciones deben usar el tamaño real de los datos devueltos. El tamaño real puede ser ligeramente menor que el tamaño del búfer especificado en la entrada. (En la entrada, los tamaños del búfer suelen especificarse lo suficientemente grandes como para asegurarse de que los datos de salida más grandes posibles se ajusten al búfer). En la salida, la variable a la que apunta este parámetro se actualiza para reflejar el tamaño real de los datos copiados en el búfer.
 

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es TRUE.

Si se produce un error en la función, el valor devuelto es FALSE.

Tenga en cuenta que los errores de la función llamada CryptHashCertificate se pueden propagar a esta función. Para obtener información de error extendida, llame a GetLastError. A continuación se indican algunos códigos de error posibles.

Código devuelto Descripción
CRYPT_E_NOT_FOUND
La CRL no tiene la propiedad especificada.
ERROR_MORE_DATA
Si el búfer especificado por el parámetro pvData no es lo suficientemente grande como para contener los datos devueltos, la función establece el código ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbData.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CertEnumCRLContextProperties

CertGetCertificateContextProperty

CryptHashCertificate

Funciones de propiedad extendidas