Função CertVerifyRevocation (wincrypt.h)

A função CertVerifyRevocation verifica a revogação status dos certificados contidos na matriz rgpvContext. Se um certificado na lista for revogado, nenhuma verificação adicional será feita. Essa matriz pode ser uma cadeia de certificados propagando para cima de uma entidade final para a autoridade raiz, mas essa natureza da lista de certificados não é necessária ou assumida.

Sintaxe

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 o tipo de codificação usado. Atualmente, apenas X509_ASN_ENCODING e PKCS_7_ASN_ENCODING estão sendo usados; no entanto, tipos de codificação adicionais podem ser adicionados no futuro. Para qualquer tipo de codificação atual, use X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] dwRevType

Indica o tipo da estrutura de contexto passada em rgpvContext. Atualmente, apenas CERT_CONTEXT_REVOCATION_TYPE, a revogação de certificados, é definida.

[in] cContext

Contagem de elementos na matriz rgpvContext .

[in] rgpvContext

Quando dwRevType é CERT_CONTEXT_REVOCATION_TYPE, rgpvContext é uma matriz de ponteiros para estruturas de CERT_CONTEXT . Esses contextos devem conter informações suficientes para permitir que as DLLs de revogação instaláveis ou registradas localizem o servidor de revogação. Normalmente, essas informações seriam transmitidas em uma extensão como a extensão CRLDistributionsPoints definida pela IETF (Internet Engineering Task Force) no PKIX Parte 1.

Para eficiência, quanto mais contextos forem passados ao mesmo tempo, melhor.

[in] dwFlags

Indica as necessidades especiais de processamento. Esse parâmetro pode ser um dos sinalizadores a seguir.

Valor Significado
CERT_VERIFY_REV_CHAIN_FLAG
A verificação da cadeia de certificados é feita supondo que cada certificado, exceto o primeiro certificado, seja o emissor do certificado que o precede. Se dwRevType não for CERT_CONTEXT_REVOCATION_TYPE, nenhuma suposição será feita sobre a ordem dos contextos.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
Impede que o manipulador de revogação acesse todos os recursos baseados em rede para verificação de revogação.
CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
Quando definido, dwUrlRetrievalTimeout é o tempo limite cumulativo em todas as recuperações de transmissão de URL.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
Quando definida, essa função usa apenas o protocolo OCSP (certificado status online) para verificação de revogação. Se o certificado não tiver URLs do OCSP AIA, o membro dwError do parâmetro pRevStatus será definido como CRYPT_E_NOT_IN_REVOCATION_DATABASE.

[in, optional] pRevPara

Opcionalmente, defina para ajudar a localizar o emissor. Para obter detalhes, consulte a estrutura CERT_REVOCATION_PARA .

[in, out] pRevStatus

Somente o membro cbSize do CERT_REVOCATION_STATUS apontado por pRevStatus precisa ser definido antes que CertVerifyRevocation seja chamado.

Se a função retornar FALSE, os membros dessa estrutura conterão informações de status de erro. Para obter mais informações, consulte CERT_REVOCATION_STATUS. Para obter uma descrição de como pRevStatus é atualizado quando um problema de verificação de revogação é encontrado, consulte Comentários.

Retornar valor

Se a função verificar com êxito todos os contextos e nenhum tiver sido revogado, a função retornará TRUE. Se a função falhar, ela retornará FALSE e atualizará a estrutura CERT_REVOCATION_STATUS apontada por pRevStatus , conforme descrito em CERT_REVOCATION_STATUS.

Quando o manipulador de revogação de qualquer um dos contextos retorna FALSE devido a um erro, o membro dwError na estrutura apontada por pRevStatus será definido pelo manipulador para especificar qual erro foi encontrado. GetLastError retorna um código de erro igual ao erro especificado no membro dwError da estrutura CERT_REVOCATION_STATUS . GetLastError pode ser um dos valores a seguir.

Valor Descrição
CRYPT_E_NO_REVOCATION_CHECK
Uma função de revogação instalada ou registrada não pôde fazer uma revogação marcar no contexto.
CRYPT_E_NO_REVOCATION_DLL
Nenhuma DLL instalada ou registrada foi encontrada que foi capaz de verificar a revogação.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
O contexto a ser verificado não foi encontrado no banco de dados do servidor de revogação.
CRYPT_E_REVOCATION_OFFLINE
Não foi possível se conectar ao servidor de revogação.
CRYPT_E_REVOKED
O contexto foi revogado. dwReason em pRevStatus contém o motivo da revogação.
ERROR_SUCCESS
O contexto era bom.
E_INVALIDARG
cbSize em pRevStatus é menor que sizeof(CERT_REVOCATION_STATUS). Observe que dwError em pRevStatus não está atualizado para esse erro.

Comentários

O exemplo a seguir mostra como pRevStatus é atualizado quando um problema de verificação de revogação é encontrado:

Considere o caso em que cContext é quatro:

Se CertVerifyRevocation puder verificar se rgpvContext[0] e rgpvContext[1] não foram revogados, mas não podem marcar rgpvContext[2], o membro pRevStatusdwIndex é definido como dois, indicando que o contexto no índice dois tem o problema, o membro dwError de pRevStatus é definido como CRYPT_E_NO_REVOCATION_CHECK e FALSE é retornado.

Se rgpvContext[2] for considerado revogado, o membro dwIndex de pRevStatus será definido como dois e o membro dwError de pRevStatus será definido como CRYPT_E_REVOKED, dwReason será atualizado e FALSE será retornado.

Em ambos os casos, rgpvContext[0] e rgpvContext[1] são verificados para não serem revogados, rgpvContext[2] é o último índice de matriz verificado e rgpvContext[3] não foi verificado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

CERT_CONTEXT

CERT_REVOCATION_PARA

CERT_REVOCATION_STATUS

CertVerifyCRLTimeValidity

CertVerifyTimeValidity

CertVerifyValidityNesting

Funções Gerenciamento de Dados