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 |
---|---|
|
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. |
|
Impede que o manipulador de revogação acesse todos os recursos baseados em rede para verificação de revogação. |
|
Quando definido, dwUrlRetrievalTimeout é o tempo limite cumulativo em todas as recuperações de transmissão de URL. |
|
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 |
---|---|
|
Uma função de revogação instalada ou registrada não pôde fazer uma revogação marcar no contexto. |
|
Nenhuma DLL instalada ou registrada foi encontrada que foi capaz de verificar a revogação. |
|
O contexto a ser verificado não foi encontrado no banco de dados do servidor de revogação. |
|
Não foi possível se conectar ao servidor de revogação. |
|
O contexto foi revogado. dwReason em pRevStatus contém o motivo da revogação. |
|
O contexto era bom. |
|
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 |