Função CryptQueryObject (wincrypt.h)

Importante Essa API foi preterida. O software novo e existente deve começar a usar APIs de Criptografia de Próxima Geração. A Microsoft pode remover essa API em versões futuras.
 
A função CryptQueryObject recupera informações sobre o conteúdo de um objeto de API de criptografia, como um certificado, uma lista de revogação de certificados ou uma lista de confiança de certificado. O objeto pode residir em uma estrutura na memória ou estar contido em um arquivo.

Sintaxe

BOOL CryptQueryObject(
  [in]  DWORD      dwObjectType,
  [in]  const void *pvObject,
  [in]  DWORD      dwExpectedContentTypeFlags,
  [in]  DWORD      dwExpectedFormatTypeFlags,
  [in]  DWORD      dwFlags,
  [out] DWORD      *pdwMsgAndCertEncodingType,
  [out] DWORD      *pdwContentType,
  [out] DWORD      *pdwFormatType,
  [out] HCERTSTORE *phCertStore,
  [out] HCRYPTMSG  *phMsg,
  [out] const void **ppvContext
);

Parâmetros

[in] dwObjectType

Indica o tipo do objeto a ser consultado. Esse deve ser um dos valores a seguir.

Valor Significado
CERT_QUERY_OBJECT_BLOB
O objeto é armazenado em uma estrutura na memória.
CERT_QUERY_OBJECT_FILE
O objeto é armazenado em um arquivo.

[in] pvObject

Um ponteiro para o objeto a ser consultado. O tipo de ponteiro de dados depende do conteúdo do parâmetro dwObjectType .

valor dwObjectType Significado
CERT_QUERY_OBJECT_BLOB
Esse parâmetro é um ponteiro para uma estrutura CERT_BLOB ou semelhante que contém o objeto a ser consultado.
CERT_QUERY_OBJECT_FILE
Esse parâmetro é um ponteiro para uma cadeia de caracteres Unicode terminada em nulo que contém o caminho e o nome do arquivo a ser consultado.

[in] dwExpectedContentTypeFlags

Indica o tipo de conteúdo esperado. Esse pode ser um dos valores a seguir.

Valor Significado
CERT_QUERY_CONTENT_FLAG_ALL
O conteúdo pode ser qualquer tipo. Isso não inclui o sinalizador CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD .

Se esse sinalizador for especificado, essa função tentará obter informações sobre o objeto, tentando tipos de conteúdo diferentes até que o tipo de conteúdo adequado seja encontrado ou os tipos de conteúdo sejam esgotados. Isso é obviamente ineficiente, portanto, esse sinalizador só deve ser usado se o tipo de conteúdo não for conhecido.

CERT_QUERY_CONTENT_FLAG_CERT
O conteúdo é um único certificado.
CERT_QUERY_CONTENT_FLAG_CERT_PAIR
O conteúdo é uma notação de sintaxe abstrata uma (ASN.1) codificada X509_CERT_PAIR (um par de certificados codificado que contém certificados cruzados encaminhados, reversos ou encaminhados e reversos).
CERT_QUERY_CONTENT_FLAG_CRL
O conteúdo é uma única CRL.
CERT_QUERY_CONTENT_FLAG_CTL
O conteúdo é uma única CTL.
CERT_QUERY_CONTENT_FLAG_PFX
O conteúdo é um pacote PFX (PKCS nº 12), mas não será carregado por essa função. Você pode usar a função PFXImportCertStore para carregá-la em um repositório.
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
O conteúdo é um pacote PFX (PKCS #12) e será carregado por essa função sujeito às condições especificadas na observação a seguir.
Observação  

Se o pacote PFX contiver uma senha inserida que não seja uma cadeia de caracteres vazia ou NULL e a senha não estiver protegida para uma entidade de segurança do Active Directory (AD) que inclua o usuário que está chamando, essa função não poderá descriptografar o pacote PFX. No entanto, o pacote poderá ser descriptografado se a senha usada quando o pacote PFX foi criado for criptografada para uma entidade de segurança do AD e o usuário, como parte dessa entidade de segurança, tiver permissão para descriptografar a senha. Para obter mais informações, consulte o parâmetro pvPara e o sinalizador PKCS12_PROTECT_TO_DOMAIN_SIDS da função PFXExportCertStoreEx .

Você pode proteger senhas PFX para uma entidade de segurança do AD começando em Windows 8 e Windows Server 2012.

 
Windows Server 2003 e Windows XP: Não há suporte para esse valor.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
O conteúdo é uma mensagem assinada PKCS nº 7.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
O conteúdo é uma mensagem assinada PKCS nº 7 inserida.
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
O conteúdo é uma mensagem sem sinal PKCS nº 7.
CERT_QUERY_CONTENT_FLAG_PKCS10
O conteúdo é uma mensagem PKCS nº 10.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
O conteúdo é um certificado único serializado.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
O conteúdo é uma CRL única serializada.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
O conteúdo é uma CTL única serializada.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
O conteúdo é um repositório serializado.

[in] dwExpectedFormatTypeFlags

Indica o formato esperado do tipo retornado. Esse pode ser um dos valores a seguir.

Valor Significado
CERT_QUERY_FORMAT_FLAG_ALL
O conteúdo pode ser retornado em qualquer formato.
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
O conteúdo deve ser retornado no formato codificado em hexadecimais ASCII com um prefixo "{ASN}".
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
O conteúdo deve ser retornado no formato codificado em Base64.
CERT_QUERY_FORMAT_FLAG_BINARY
O conteúdo deve ser retornado em formato binário.

[in] dwFlags

Esse parâmetro é reservado para uso futuro e deve ser definido como zero.

[out] pdwMsgAndCertEncodingType

Um ponteiro para um valor DWORD que recebe o tipo de codificação usado na mensagem. Se essas informações não forem necessárias, defina esse parâmetro como NULL.

Esse parâmetro pode receber uma combinação de um ou mais dos valores a seguir.

Valor Significado
PKCS_7_ASN_ENCODING
65536 (0x10000)
Especifica a codificação de mensagens PKCS 7.
X509_ASN_ENCODING
1 (0x1)
Especifica a codificação de certificado X.509.

[out] pdwContentType

Um ponteiro para um valor DWORD que recebe o tipo real do conteúdo. Se essas informações não forem necessárias, defina esse parâmetro como NULL. O tipo de conteúdo retornado pode ser um dos valores a seguir.

Valor Significado
CERT_QUERY_CONTENT_CERT
O conteúdo é um único certificado.
CERT_QUERY_CONTENT_CERT_PAIR
O conteúdo é um X509_CERT_pair codificado em ASN.1.
CERT_QUERY_CONTENT_CRL
O conteúdo é uma única CRL.
CERT_QUERY_CONTENT_CTL
O conteúdo é uma única CTL.
CERT_QUERY_CONTENT_PFX
O conteúdo é um pacote PFX (PKCS nº 12). Essa função verifica apenas se o objeto é um pacote PKCS nº 12. O pacote PKCS nº 12 não é carregado em um repositório de certificados.
CERT_QUERY_CONTENT_PFX_AND_LOAD
O conteúdo é um pacote PFX (PKCS nº 12) e foi carregado em um repositório de certificados.

Windows Server 2003 e Windows XP: Não há suporte para esse valor.

CERT_QUERY_CONTENT_PKCS7_SIGNED
O conteúdo é uma mensagem assinada PKCS nº 7.
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
O conteúdo é uma mensagem assinada PKCS nº 7 inserida.
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
O conteúdo é uma mensagem sem sinal PKCS nº 7.
CERT_QUERY_CONTENT_PKCS10
O conteúdo é uma mensagem PKCS nº 10.
CERT_QUERY_CONTENT_SERIALIZED_CERT
O conteúdo é um certificado único serializado.
CERT_QUERY_CONTENT_SERIALIZED_CRL
O conteúdo é uma CRL única serializada.
CERT_QUERY_CONTENT_SERIALIZED_CTL
O conteúdo é uma CTL única serializada.
CERT_QUERY_CONTENT_SERIALIZED_STORE
O conteúdo é um repositório serializado.

[out] pdwFormatType

Um ponteiro para um valor DWORD que recebe o tipo de formato real do conteúdo. Se essas informações não forem necessárias, defina esse parâmetro como NULL. O tipo de formato retornado pode ser um dos valores a seguir.

Valor Significado
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
O conteúdo está no formato codificado em hexadecimais ASCII com um prefixo "{ASN}".
CERT_QUERY_FORMAT_BASE64_ENCODED
O conteúdo está no formato codificado em Base64.
CERT_QUERY_FORMAT_BINARY
O conteúdo está em formato binário.

[out] phCertStore

Um ponteiro para um valor HCERTSTORE que recebe um identificador para um repositório de certificados que inclui todos os certificados, CRLs e CTLs no objeto .

Esse parâmetro recebe apenas um identificador de repositório de certificados quando o parâmetro dwContentType recebe um dos valores a seguir. Esse parâmetro recebe NULL para todos os outros tipos de conteúdo.

CERT_QUERY_CONTENT_CERT

CERT_QUERY_CONTENT_CRL

CERT_QUERY_CONTENT_CTL

CERT_QUERY_CONTENT_PFX_AND_LOAD

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_SERIALIZED_CERT

CERT_QUERY_CONTENT_SERIALIZED_CRL

CERT_QUERY_CONTENT_SERIALIZED_CTL

CERT_QUERY_CONTENT_SERIALIZED_STORE

Quando terminar de usar o identificador, libere-o passando o identificador para a função CertCloseStore .

Se essas informações não forem necessárias, defina esse parâmetro como NULL.

[out] phMsg

Um ponteiro para um valor HCRYPTMSG que recebe o identificador de uma mensagem aberta.

Esse parâmetro recebe apenas um identificador de mensagem quando o parâmetro dwContentType recebe um dos valores a seguir. Esse parâmetro recebe NULL para todos os outros tipos de conteúdo.

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_PKCS7_UNSIGNED

Quando terminar de usar o identificador, libere-o passando o identificador para a função CryptMsgClose .

Se essas informações não forem necessárias, defina esse parâmetro como NULL.

[out] ppvContext

Um ponteiro para um ponteiro que recebe informações adicionais sobre o objeto.

O formato desses dados depende do valor recebido pelo parâmetro dwContentType . A tabela a seguir lista o formato dos dados para o valor dwContentType especificado.

valor dwContentType Significado
CERT_QUERY_CONTENT_CERT
Esse parâmetro recebe um ponteiro para uma estrutura de CERT_CONTEXT . Quando terminar de usar a estrutura, libere-a passando esse ponteiro para a função CertFreeCertificateContext .
CERT_QUERY_CONTENT_CRL
Esse parâmetro recebe um ponteiro para uma estrutura de CRL_CONTEXT . Quando terminar de usar a estrutura, libere-a passando esse ponteiro para a função CertFreeCRLContext .
CERT_QUERY_CONTENT_CTL
Esse parâmetro recebe um ponteiro para uma estrutura de CTL_CONTEXT . Quando terminar de usar a estrutura, libere-a passando esse ponteiro para a função CertFreeCTLContext .
CERT_QUERY_CONTENT_SERIALIZED_CERT
Esse parâmetro recebe um ponteiro para uma estrutura de CERT_CONTEXT . Quando terminar de usar a estrutura, libere-a passando esse ponteiro para a função CertFreeCertificateContext .
CERT_QUERY_CONTENT_SERIALIZED_CRL
Esse parâmetro recebe um ponteiro para uma estrutura de CRL_CONTEXT . Quando terminar de usar a estrutura, libere-a passando esse ponteiro para a função CertFreeCRLContext .
CERT_QUERY_CONTENT_SERIALIZED_CTL
Esse parâmetro recebe um ponteiro para uma estrutura de CTL_CONTEXT . Quando terminar de usar a estrutura, libere-a passando esse ponteiro para a função CertFreeCTLContext .
 

Se essas informações não forem necessárias, defina esse parâmetro como NULL.

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero.

Se a função falhar, ela retornará zero. Para obter informações de erro estendidas, chame GetLastError.

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

Funções Gerenciamento de Dados