Función CryptQueryObject (wincrypt.h)

Importante Esta API está en desuso. El software nuevo y existente debe empezar a usar las API cryptography Next Generation. Microsoft puede quitar esta API en futuras versiones.
 
La función CryptQueryObject recupera información sobre el contenido de un objeto de API de criptografía, como un certificado, una lista de revocación de certificados o una lista de confianza de certificados. El objeto puede residir en una estructura en memoria o estar contenido en un archivo.

Sintaxis

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 el tipo del objeto que se va a consultar. Debe ser uno de los siguientes valores.

Valor Significado
CERT_QUERY_OBJECT_BLOB
El objeto se almacena en una estructura en memoria.
CERT_QUERY_OBJECT_FILE
El objeto se almacena en un archivo.

[in] pvObject

Puntero al objeto que se va a consultar. El tipo de puntero de datos depende del contenido del parámetro dwObjectType .

valor dwObjectType Significado
CERT_QUERY_OBJECT_BLOB
Este parámetro es un puntero a un CERT_BLOB, o una estructura similar, que contiene el objeto que se va a consultar.
CERT_QUERY_OBJECT_FILE
Este parámetro es un puntero a una cadena Unicode terminada en null que contiene la ruta de acceso y el nombre del archivo que se va a consultar.

[in] dwExpectedContentTypeFlags

Indica el tipo de contenido esperado. Puede ser uno de los siguientes valores.

Valor Significado
CERT_QUERY_CONTENT_FLAG_ALL
El contenido puede ser cualquier tipo. Esto no incluye la marca CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD .

Si se especifica esta marca, esta función intentará obtener información sobre el objeto, intentando diferentes tipos de contenido hasta que se encuentre el tipo de contenido adecuado o se agoten los tipos de contenido. Esto es obviamente ineficaz, por lo que esta marca solo debe usarse si no se conoce el tipo de contenido.

CERT_QUERY_CONTENT_FLAG_CERT
El contenido es un único certificado.
CERT_QUERY_CONTENT_FLAG_CERT_PAIR
El contenido es una notación de sintaxis abstracta uno (ASN.1) codificada X509_CERT_PAIR (un par de certificados codificado que contiene certificados cruzados reenviados, inversos o reenviados).
CERT_QUERY_CONTENT_FLAG_CRL
El contenido es una única CRL.
CERT_QUERY_CONTENT_FLAG_CTL
El contenido es un único CTL.
CERT_QUERY_CONTENT_FLAG_PFX
El contenido es un paquete PFX (PKCS #12), pero esta función no la cargará. Puede usar la función PFXImportCertStore para cargarla en un almacén.
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
El contenido es un paquete PFX (PKCS #12) y esta función se cargará según las condiciones especificadas en la nota siguiente.
Nota  

Si el paquete PFX contiene una contraseña incrustada que no es una cadena vacía o NULL, y la contraseña no se protegió en una entidad de seguridad de Active Directory (AD) que incluya al usuario que realiza la llamada, esta función no podrá descifrar el paquete PFX. Sin embargo, el paquete se puede descifrar si la contraseña usada cuando se creó el paquete PFX se cifró en una entidad de seguridad de AD y el usuario, como parte de esa entidad de seguridad, tiene permiso para descifrar la contraseña. Para obtener más información, vea el parámetro pvPara y la marca PKCS12_PROTECT_TO_DOMAIN_SIDS de la función PFXExportCertStoreEx .

Puede proteger las contraseñas PFX en una entidad de seguridad de AD a partir de Windows 8 y Windows Server 2012.

 
Windows Server 2003 y Windows XP: Este valor no se admite.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
El contenido es un mensaje firmado PKCS #7.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
El contenido es un mensaje PKCS #7 firmado incrustado.
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
El contenido es un mensaje PKCS #7 sin firmar.
CERT_QUERY_CONTENT_FLAG_PKCS10
El contenido es un mensaje PKCS #10.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
El contenido es un certificado único serializado.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
El contenido es una CRL única serializada.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
El contenido se serializa con un solo CTL.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
El contenido es un almacén serializado.

[in] dwExpectedFormatTypeFlags

Indica el formato esperado del tipo devuelto. Puede ser uno de los siguientes valores.

Valor Significado
CERT_QUERY_FORMAT_FLAG_ALL
El contenido se puede devolver en cualquier formato.
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
El contenido debe devolverse en formato codificado hexadecimal ASCII con un prefijo "{ASN}".
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
El contenido debe devolverse en formato codificado en Base64.
CERT_QUERY_FORMAT_FLAG_BINARY
El contenido debe devolverse en formato binario.

[in] dwFlags

Este parámetro está reservado para uso futuro y debe establecerse en cero.

[out] pdwMsgAndCertEncodingType

Puntero a un valor DWORD que recibe el tipo de codificación usada en el mensaje. Si esta información no es necesaria, establezca este parámetro en NULL.

Este parámetro puede recibir una combinación de uno o varios de los valores siguientes.

Valor Significado
PKCS_7_ASN_ENCODING
65536 (0x10000)
Especifica la codificación de mensajes PKCS 7.
X509_ASN_ENCODING
1 (0x1)
Especifica la codificación de certificados X.509.

[out] pdwContentType

Puntero a un valor DWORD que recibe el tipo real del contenido. Si esta información no es necesaria, establezca este parámetro en NULL. El tipo de contenido devuelto puede ser uno de los siguientes valores.

Valor Significado
CERT_QUERY_CONTENT_CERT
El contenido es un único certificado.
CERT_QUERY_CONTENT_CERT_PAIR
El contenido es un X509_CERT_pair codificado asn.1.
CERT_QUERY_CONTENT_CRL
El contenido es una única CRL.
CERT_QUERY_CONTENT_CTL
El contenido es un único CTL.
CERT_QUERY_CONTENT_PFX
El contenido es un paquete PFX (PKCS #12). Esta función solo comprueba que el objeto es un paquete PKCS #12. El paquete PKCS #12 no se carga en un almacén de certificados.
CERT_QUERY_CONTENT_PFX_AND_LOAD
El contenido es un paquete PFX (PKCS #12) y se ha cargado en un almacén de certificados.

Windows Server 2003 y Windows XP: Este valor no se admite.

CERT_QUERY_CONTENT_PKCS7_SIGNED
El contenido es un mensaje firmado PKCS #7.
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
El contenido es un mensaje PKCS #7 firmado incrustado.
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
El contenido es un mensaje PKCS #7 sin firmar.
CERT_QUERY_CONTENT_PKCS10
El contenido es un mensaje PKCS #10.
CERT_QUERY_CONTENT_SERIALIZED_CERT
El contenido es un certificado único serializado.
CERT_QUERY_CONTENT_SERIALIZED_CRL
El contenido es una CRL única serializada.
CERT_QUERY_CONTENT_SERIALIZED_CTL
El contenido es un CTL único serializado.
CERT_QUERY_CONTENT_SERIALIZED_STORE
El contenido es un almacén serializado.

[out] pdwFormatType

Puntero a un valor DWORD que recibe el tipo de formato real del contenido. Si no se necesita esta información, establezca este parámetro en NULL. El tipo de formato devuelto puede ser uno de los valores siguientes.

Valor Significado
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
El contenido está en formato hexadecimal ASCII con un prefijo "{ASN}".
CERT_QUERY_FORMAT_BASE64_ENCODED
El contenido está en formato codificado en Base64.
CERT_QUERY_FORMAT_BINARY
El contenido está en formato binario.

[out] phCertStore

Puntero a un valor HCERTSTORE que recibe un identificador de un almacén de certificados que incluye todos los certificados, CRL y CTL del objeto .

Este parámetro solo recibe un identificador de almacén de certificados cuando el parámetro dwContentType recibe uno de los valores siguientes. Este parámetro recibe NULL para todos los demás tipos de contenido.

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

Cuando haya terminado de usar el identificador, libere el identificador pasando el identificador a la función CertCloseStore .

Si no se necesita esta información, establezca este parámetro en NULL.

[out] phMsg

Puntero a un valor HCRYPTMSG que recibe el identificador de un mensaje abierto.

Este parámetro solo recibe un identificador de mensaje cuando el parámetro dwContentType recibe uno de los valores siguientes. Este parámetro recibe NULL para todos los demás tipos de contenido.

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_PKCS7_UNSIGNED

Cuando haya terminado de usar el identificador, libere el identificador pasando el identificador a la función CryptMsgClose .

Si no se necesita esta información, establezca este parámetro en NULL.

[out] ppvContext

Puntero a un puntero que recibe información adicional sobre el objeto.

El formato de estos datos depende del valor recibido por el parámetro dwContentType . En la tabla siguiente se muestra el formato de los datos para el valor dwContentType especificado.

valor dwContentType Significado
CERT_QUERY_CONTENT_CERT
Este parámetro recibe un puntero a una estructura CERT_CONTEXT . Cuando haya terminado de usar la estructura , libere este puntero a la función CertFreeCertificateContext .
CERT_QUERY_CONTENT_CRL
Este parámetro recibe un puntero a una estructura CRL_CONTEXT . Cuando haya terminado de usar la estructura , libere este puntero a la función CertFreeCRLContext .
CERT_QUERY_CONTENT_CTL
Este parámetro recibe un puntero a una estructura CTL_CONTEXT . Cuando haya terminado de usar la estructura , libere este puntero a la función CertFreeCTLContext .
CERT_QUERY_CONTENT_SERIALIZED_CERT
Este parámetro recibe un puntero a una estructura CERT_CONTEXT . Cuando haya terminado de usar la estructura , libere este puntero a la función CertFreeCertificateContext .
CERT_QUERY_CONTENT_SERIALIZED_CRL
Este parámetro recibe un puntero a una estructura CRL_CONTEXT . Cuando haya terminado de usar la estructura , libere este puntero a la función CertFreeCRLContext .
CERT_QUERY_CONTENT_SERIALIZED_CTL
Este parámetro recibe un puntero a una estructura CTL_CONTEXT . Cuando haya terminado de usar la estructura , libere este puntero a la función CertFreeCTLContext .
 

Si no se necesita esta información, establezca este parámetro en NULL.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError.

Requisitos

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

Consulte también

Funciones de Administración de datos