Compartir a través de


Función CertVerifyRevocation (wincrypt.h)

La función CertVerifyRevocation comprueba el estado de revocación de los certificados contenidos en la matriz rgpvContext . Si se encuentra un certificado en la lista que se va a revocar, no se realiza ninguna comprobación adicional. Esta matriz puede ser una cadena de certificados que se propagan hacia arriba desde una entidad final a la entidad raíz, pero esta naturaleza de la lista de certificados no es necesaria ni se supone.

Sintaxis

BOOL CertVerifyRevocation(
  [in]           DWORD                   dwEncodingType,
  [in]           DWORD                   dwRevType,
  [in]           DWORD                   cContext,
  [in]           PVOID []                rgpvContext,
  [in]           DWORD                   dwFlags,
  [in, optional] PCERT_REVOCATION_PARA   pRevPara,
  [in, out]      PCERT_REVOCATION_STATUS pRevStatus
);

Parámetros

[in] dwEncodingType

Especifica el tipo de codificación utilizado. Actualmente, solo se usan X509_ASN_ENCODING y PKCS_7_ASN_ENCODING; sin embargo, en el futuro se pueden agregar tipos de codificación adicionales. Para cualquier tipo de codificación actual, use X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] dwRevType

Indica el tipo de la estructura de contexto pasada en rgpvContext. Actualmente solo CERT_CONTEXT_REVOCATION_TYPE, se define la revocación de certificados.

[in] cContext

Recuento de elementos de la matriz rgpvContext .

[in] rgpvContext

Cuando dwRevType es CERT_CONTEXT_REVOCATION_TYPE, rgpvContext es una matriz de punteros a CERT_CONTEXT estructuras. Estos contextos deben contener información suficiente para permitir que los archivos DLL de revocación instalables o registrados encuentren el servidor de revocación. Esta información normalmente se transmitiría en una extensión como la extensión CRLDistributionsPoints definida por el Grupo de tareas de ingeniería de Internet (IETF) en la parte 1 de PKIX.

Para mejorar la eficacia, cuantos más contextos se pasen a la vez, mejor.

[in] dwFlags

Indica cualquier necesidad de procesamiento especial. Este parámetro puede ser una de las marcas siguientes.

Valor Significado
CERT_VERIFY_REV_CHAIN_FLAG
La comprobación de la cadena de certificados se realiza suponiendo que cada certificado excepto el primer certificado sea el emisor del certificado que lo precede. Si dwRevType no es CERT_CONTEXT_REVOCATION_TYPE, no se realiza ninguna suposición sobre el orden de los contextos.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
Impide que el controlador de revocación acceda a los recursos basados en red para la comprobación de revocación.
CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
Cuando se establece, dwUrlRetrievalTimeout es el tiempo de espera acumulado en todas las recuperaciones de conexión url.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
Cuando se establece, esta función solo usa el protocolo de estado de certificado en línea (OCSP) para la comprobación de revocación. Si el certificado no tiene direcciones URL de AIA de OCSP, el miembro dwError del parámetro pRevStatus se establece en CRYPT_E_NOT_IN_REVOCATION_DATABASE.

[in, optional] pRevPara

Opcionalmente, establezca para ayudar a encontrar el emisor. Para obtener más información, consulte la estructura CERT_REVOCATION_PARA .

[in, out] pRevStatus

Solo es necesario establecer el miembro cbSize del CERT_REVOCATION_STATUS al que apunta pRevStatus antes de llamar a CertVerifyRevocation .

Si la función devuelve FALSE, los miembros de esta estructura contendrán información de estado de error. Para obtener más información, consulte CERT_REVOCATION_STATUS. Para obtener una descripción de cómo se actualiza pRevStatus cuando se encuentra un problema de comprobación de revocación, vea Comentarios.

Valor devuelto

Si la función comprueba correctamente todos los contextos y ninguno se ha revocado, la función devuelve TRUE. Si se produce un error en la función, devuelve FALSE y actualiza la estructura de CERT_REVOCATION_STATUS a la que apunta pRevStatus como se describe en CERT_REVOCATION_STATUS.

Cuando el controlador de revocación de cualquiera de los contextos devuelve FALSE debido a un error, el controlador establecerá el miembro dwError en la estructura a la que apunta pRevStatus para especificar qué error se encontró. GetLastError devuelve un código de error igual al error especificado en el miembro dwError de la estructura CERT_REVOCATION_STATUS . GetLastError puede ser uno de los valores siguientes.

Valor Descripción
CRYPT_E_NO_REVOCATION_CHECK
Una función de revocación instalada o registrada no pudo realizar una comprobación de revocación en el contexto.
CRYPT_E_NO_REVOCATION_DLL
No se encontró ningún archivo DLL instalado o registrado que pudiera comprobar la revocación.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
No se encontró el contexto que se va a comprobar en la base de datos del servidor de revocación.
CRYPT_E_REVOCATION_OFFLINE
No era posible conectarse al servidor de revocación.
CRYPT_E_REVOKED
Se revocó el contexto. dwReason en pRevStatus contiene el motivo de la revocación.
ERROR_SUCCESS
El contexto era bueno.
E_INVALIDARG
cbSize en pRevStatus es menor que sizeof(CERT_REVOCATION_STATUS). Tenga en cuenta que dwError en pRevStatus no se actualiza para este error.

Comentarios

En el ejemplo siguiente se muestra cómo se actualiza pRevStatus cuando se encuentra un problema de comprobación de revocación:

Tenga en cuenta el caso en el que cContext es cuatro:

Si CertVerifyRevocation puede comprobar que rgpvContext[0] y rgpvContext[1] no se revocan, pero no pueden comprobar rgpvContext[2], el miembro pRevStatusdwIndex está establecido en dos, lo que indica que el contexto en el índice dos tiene el problema, el miembro dwError de pRevStatus se establece en CRYPT_E_NO_REVOCATION_CHECK y se devuelve FALSE .

Si se encuentra revocado rgpvContext[2], el miembro dwIndex de pRevStatus se establece en dos y el miembro dwError de pRevStatus se establece en CRYPT_E_REVOKED, dwReason se actualiza y se devuelve FALSE .

En cualquier caso, se comprueba que rgpvContext[0] y rgpvContext[1] no se revoquen, rgpvContext[2] es el último índice de matriz comprobado y rgpvContext[3] no se ha comprobado en absoluto.

Requisitos

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

Consulte también

CERT_CONTEXT

CERT_REVOCATION_PARA

CERT_REVOCATION_STATUS

CertVerifyCRLTimeValidity

CertVerifyTimeValidity

CertVerifyValidityNesting

funciones de Administración de datos