Função CertFindCRLInStore (wincrypt.h)

A função CertFindCRLInStore localiza o primeiro ou o próximo contexto de CRL ( lista de certificados revogados ) em um repositório de certificados que corresponde a um critério de pesquisa estabelecido pelo parâmetro dwFindType e pelo parâmetro pvFindPara associado. Essa função pode ser usada em um loop para localizar todos os contextos de CRL em um repositório de certificados que correspondam aos critérios de localização especificados.

Sintaxe

PCCRL_CONTEXT CertFindCRLInStore(
  [in] HCERTSTORE    hCertStore,
  [in] DWORD         dwCertEncodingType,
  [in] DWORD         dwFindFlags,
  [in] DWORD         dwFindType,
  [in] const void    *pvFindPara,
  [in] PCCRL_CONTEXT pPrevCrlContext
);

Parâmetros

[in] hCertStore

Um identificador do repositório de certificados a ser pesquisado.

[in] dwCertEncodingType

Esse parâmetro não é usado no momento. Ele deve ser definido como zero.

[in] dwFindFlags

Se dwFindType for CRL_FIND_ISSUED_BY, por padrão, somente a correspondência de nome do emissor será feita. Os sinalizadores a seguir podem ser usados para fazer filtragem adicional.

Valor Significado
CRL_FIND_ISSUED_BY_AKI_FLAG
Verifica se há uma CRL que tem uma extensão de AKI (Identificador de Chave de Autoridade). Se a CRL tiver uma AKI, somente uma CRL cuja AKI corresponda ao emissor será retornada.
Nota A extensão AKI tem o valor OID ( identificador de objeto ) szOID_AUTHORITY_KEY_IDENTIFIER2 e sua estrutura de dados correspondente.
 
CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
Use a chave pública no certificado do emissor para verificar a assinatura na CRL. Retorna apenas uma CRL que tem uma assinatura válida.
CRL_FIND_ISSUED_BY_DELTA_FLAG
Localiza e retorna uma CRL delta.
CRL_FIND_ISSUED_BY_BASE_FLAG
Localiza e retorna uma CRL base.
CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG
A assinatura é verificada quanto à força após a verificação bem-sucedida. Esse sinalizador só se aplica quando o parâmetro dwFindType é definido como CRL_FIND_ISSUED_FOR. Você também deve definir CRL_FIND_ISSUED_BY_SIGNATURE_FLAG. Se tiver êxito, as seguintes propriedades de assinatura forte serão definidas no contexto da CRL:
  • CERT_SIGN_HASH_CNG_ALG_PROP_ID
  • CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Windows 8 e Windows Server 2012: o suporte para esse sinalizador começa.

[in] dwFindType

Especifica o tipo de pesquisa que está sendo feita. O valor de dwFindType determina o tipo de dados, o conteúdo e o uso do parâmetro pvFindPara . Os tipos de pesquisa definidos atualmente e seus requisitos de pvFindPara são os seguintes.

Valor Significado
CRL_FIND_ANY
O parâmetro pvFindPara não é usado. Ele deve ser definido como NULL.
Nenhum critério de pesquisa. A próxima CRL no repositório é retornada.
CRL_FIND_ISSUED_BY
Um ponteiro para um CERT_CONTEXT.
Pesquisa a próxima CRL no repositório que corresponde ao emissor no CERT_CONTEXT.
CRL_FIND_EXISTING
Um ponteiro para um CRL_CONTEXT.
Pesquisa a próxima CRL que corresponde ao CRL_CONTEXT das seguintes maneiras:
  • Ambas são CRLs base ou delta.
  • Os BLOBs de nome do emissor para ambos são idênticos.
  • Se existirem, os BLOBs de extensão codificado por Authority/KeyIdentifier e IssuingDistributionPoint corresponderão.
CRL_FIND_ISSUED_FOR
Um ponteiro para um CRL_FIND_ISSUED_FOR_PARA.
Pesquisa a próxima CRL no repositório que corresponde ao emissor do certificado de entidade na estrutura CRL_FIND_ISSUED_FOR_PARA.

Se nenhuma CRL for encontrada, pesquisa a próxima CRL no repositório que corresponde ao emissor na estrutura CRL_FIND_ISSUED_FOR_PARA.

Nota Ao usar certificados cruzados, o nome da entidade no certificado do emissor pode não corresponder ao nome do emissor no certificado da entidade e à CRL correspondente.
 

[in] pvFindPara

Esse parâmetro é determinado pelo valor de dwFindType. Para obter detalhes, consulte a tabela anteriormente neste tópico.

[in] pPrevCrlContext

Um ponteiro para o último CRL_CONTEXT retornado por essa função. Deve ser NULL para obter a primeira CRL na loja atendendo aos critérios de pesquisa. As CRLs sucessivas que atendem aos critérios de pesquisa podem ser encontradas definindo pPrevCrlContext como o ponteiro PCCRL_CONTEXT retornado por uma chamada anterior para a função. O processo de pesquisa ignora todas as CRLs que não correspondem aos critérios de pesquisa ou que foram excluídas anteriormente do repositório por CertDeleteCRLFromStore. Essa função libera o CRL_CONTEXT referenciado por valores desse parâmetro que não são NULL.

Retornar valor

Se a função for bem-sucedida, a função retornará um ponteiro para um contexto de CRL somente leitura. Quando terminar de usar o contexto crl retornado, libere-o chamando a função CertFreeCRLContext ou libere-a implicitamente passando-a como o parâmetro pPrevCrlContext em uma chamada subsequente para a função CertFindCRLInStore .

Se a função falhar e uma CRL que corresponde aos critérios de pesquisa não for encontrada, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError. Alguns códigos de erro possíveis seguem.

Código de retorno Descrição
E_INVALIDARG
O identificador no parâmetro hCertStore não é o mesmo que no contexto crl apontado pelo parâmetro pPrevCrlContext ou um tipo de pesquisa que não é válido foi especificado no parâmetro dwFindType .
CRYPT_E_NOT_FOUND
Nenhuma CRL está no repositório, nenhuma CRL foi encontrada que correspondeu aos critérios de pesquisa ou o final da lista do repositório foi atingido.

Comentários

O ponteiro retornado é liberado quando passado como o parâmetro pPrevCrlContext em uma chamada subsequente para a função. Caso contrário, o ponteiro deve ser liberado explicitamente chamando CertFreeCRLContext. Um pPrevCrlContext que não é NULL é sempre liberado por CertFindCRLInStore usando uma chamada para CertFreeCRLContext, mesmo que haja um erro na função.

CertDuplicateCRLContext pode ser chamado para tornar uma duplicata do contexto retornado. O contexto de CRL retornado pode ser adicionado a um repositório de certificados diferente usando CertAddCRLContextToStore ou um link para esse contexto de CRL pode ser adicionado a um repositório de não coleção usando CertAddCRLLinkToStore.

Requisitos

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

Confira também

CRL_CONTEXT

CertAddCRLContextToStore

CertAddCRLLinkToStore

CertDeleteCRLFromStore

CertDuplicateCRLContext

CertFreeCRLContext

Funções de lista de revogação de certificados