Función CertGetIssuerCertificateFromStore (wincrypt.h)
La función CertGetIssuerCertificateFromStore recupera el contexto del certificado del almacén de certificados para el primer o siguiente emisor del certificado de sujeto especificado. Se recomiendan las nuevas funciones de comprobación de la cadena de certificados en lugar del uso de esta función.
Sintaxis
PCCERT_CONTEXT CertGetIssuerCertificateFromStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pSubjectContext,
[in, optional] PCCERT_CONTEXT pPrevIssuerContext,
[in, out] DWORD *pdwFlags
);
Parámetros
[in] hCertStore
Identificador de un almacén de certificados.
[in] pSubjectContext
Puntero a una estructura de CERT_CONTEXT que contiene la información del asunto. Este parámetro se puede obtener de cualquier almacén de certificados o se puede crear mediante la aplicación que realiza la llamada mediante la función CertCreateCertificateContext .
[in, optional] pPrevIssuerContext
Puntero a una estructura de CERT_CONTEXT que contiene la información del emisor. Un emisor puede tener varios certificados, especialmente cuando un período de validez está a punto de cambiar. Este parámetro debe ser NULL en la llamada para obtener el primer certificado del emisor. Para obtener el siguiente certificado para el emisor, establezca pPrevIssuerContext en la estructura CERT_CONTEXT devuelta por la llamada anterior.
Esta función libera el CERT_CONTEXT al que hacen referencia los valores no NULL de este parámetro.
[in, out] pdwFlags
Las marcas siguientes habilitan las comprobaciones de comprobación en el certificado devuelto. Se pueden combinar mediante una operación OR bit a bit para habilitar varias comprobaciones.
Si una comprobación de un tipo habilitado se realiza correctamente, su marca se establece en cero. Si se produce un error, su marca permanece establecida tras la devolución. Para CERT_STORE_REVOCATION_FLAG, la comprobación se realiza correctamente si la función no encuentra una CRL relacionada con el certificado del firmante.
Si se establece CERT_STORE_REVOCATION_FLAG y el emisor no tiene una CRL en el almacén, CERT_STORE_NO_CRL_FLAG se establece y CERT_STORE_REVOCATION_FLAG permanece establecido.
Si se establece CERT_STORE_SIGNATURE_FLAG o CERT_STORE_REVOCATION_FLAG, CERT_STORE_NO_ISSUER_FLAG se establece si la función no encuentra un certificado de emisor en el almacén. Para obtener más información, consulte Comentarios.
En el caso de un error de comprobación de comprobación, todavía se devuelve un puntero al CERT_CONTEXT del emisor y No se actualiza GetLastError .
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un puntero a un emisor de solo lectura CERT_CONTEXT.
Si se produce un error en la función y no se encuentra el primer o siguiente certificado del emisor, el valor devuelto es NULL.
Solo se debe liberar la última estructura de CERT_CONTEXT devuelta llamando a CertFreeCertificateContext. Cuando el CERT_CONTEXT devuelto de una llamada a la función se proporciona como parámetro pPrevIssuerContext en una llamada posterior, el contexto se libera como parte de la acción de la función.
Para obtener información de error extendida, llame a GetLastError. Siguen algunos códigos de error posibles.
Código devuelto | Descripción |
---|---|
|
No se encontró ningún emisor para el certificado del firmante. |
|
El certificado del emisor es el mismo que el certificado del firmante. Es un certificado raíz autofirmado. |
|
El identificador del parámetro hCertStore no es el mismo que el del contexto de certificado al que apunta el parámetro pPrevIssuerContext o se estableció una marca no admitida en pdwFlags. |
Comentarios
El puntero devuelto se libera cuando se pasa como parámetro pPrevIssuerContext en una llamada posterior a la función. De lo contrario, el puntero debe liberarse explícitamente llamando a CertFreeCertificateContext. CertGetIssuerFromStore libera siempre un pPrevIssuerContext que no es NULL mediante una llamada a CertFreeCertificateContext, incluso si hay un error en la función.
Se puede llamar a CertDuplicateCertificateContext para hacer un duplicado del certificado del emisor.
Los valores hexadecimales de dwFlags se pueden combinar mediante una operación OR bit a bit para habilitar varias comprobaciones. Por ejemplo, para habilitar la validez de firma y hora, el valor 0x00000003 se pasa en dwFlags en la entrada. En este caso, si CERT_STORE_SIGNATURE_FLAG comprobación se realiza correctamente, pero CERT_STORE_TIME_VALIDITY_FLAG se produce un error en la comprobación, dwFlags devuelve como 0x00000002 en la salida.
Requisitos
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 |