Fonction CryptQueryObject (wincrypt.h)

Important Cette API est déconseillée. Les logiciels nouveaux et existants doivent commencer à utiliser les API de nouvelle génération de chiffrement. Microsoft peut supprimer cette API dans les versions ultérieures.
 
La fonction CryptQueryObject récupère des informations sur le contenu d’un objet d’API de chiffrement, comme un certificat, une liste de révocation de certificats ou une liste d’approbation de certificat. L’objet peut résider dans une structure en mémoire ou être contenu dans un fichier.

Syntaxe

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
);

Paramètres

[in] dwObjectType

Indique le type de l’objet à interroger. Il doit s’agir de l’une des valeurs suivantes.

Valeur Signification
CERT_QUERY_OBJECT_BLOB
L’objet est stocké dans une structure en mémoire.
CERT_QUERY_OBJECT_FILE
L’objet est stocké dans un fichier.

[in] pvObject

Pointeur vers l’objet à interroger. Le type de pointeur de données dépend du contenu du paramètre dwObjectType .

valeur dwObjectType Signification
CERT_QUERY_OBJECT_BLOB
Ce paramètre est un pointeur vers une structure CERT_BLOB ou similaire qui contient l’objet à interroger.
CERT_QUERY_OBJECT_FILE
Ce paramètre est un pointeur vers une chaîne Unicode terminée par null qui contient le chemin d’accès et le nom du fichier à interroger.

[in] dwExpectedContentTypeFlags

Indique le type de contenu attendu. Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
CERT_QUERY_CONTENT_FLAG_ALL
Le contenu peut être n’importe quel type. Cela n’inclut pas l’indicateur CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD .

Si cet indicateur est spécifié, cette fonction tente d’obtenir des informations sur l’objet, en essayant différents types de contenu jusqu’à ce que le type de contenu approprié soit trouvé ou que les types de contenu soient épuisés. Cela est évidemment inefficace. Cet indicateur ne doit donc être utilisé que si le type de contenu n’est pas connu.

CERT_QUERY_CONTENT_FLAG_CERT
Le contenu est un certificat unique.
CERT_QUERY_CONTENT_FLAG_CERT_PAIR
Le contenu est une X509_CERT_PAIR encodée ASN.1 ( Abstract Syntax Notation One ) (une paire de certificats encodée qui contient des certificats croisés en avant, en arrière ou inversé).
CERT_QUERY_CONTENT_FLAG_CRL
Le contenu est une seule liste de révocation de révocation de certificats.
CERT_QUERY_CONTENT_FLAG_CTL
Le contenu est une seule CTL.
CERT_QUERY_CONTENT_FLAG_PFX
Le contenu est un paquet PFX (PKCS #12), mais il ne sera pas chargé par cette fonction. Vous pouvez utiliser la fonction PFXImportCertStore pour le charger dans un magasin.
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
Le contenu est un paquet PFX (PKCS #12) qui sera chargé par cette fonction sous réserve des conditions spécifiées dans la note suivante.
Remarque  

Si le paquet PFX contient un mot de passe incorporé qui n’est pas une chaîne vide ou NULL, et que le mot de passe n’a pas été protégé pour un principal Active Directory (AD) qui inclut l’utilisateur appelant, cette fonction ne sera pas en mesure de déchiffrer le paquet PFX. Le paquet peut toutefois être déchiffré si le mot de passe utilisé lors de la création du paquet PFX a été chiffré sur un principal AD et que l’utilisateur, dans le cadre de ce principal, a l’autorisation de déchiffrer le mot de passe. Pour plus d’informations, consultez le paramètre pvPara et l’indicateur PKCS12_PROTECT_TO_DOMAIN_SIDS de la fonction PFXExportCertStoreEx .

Vous pouvez protéger les mots de passe PFX sur un principal AD à partir de Windows 8 et Windows Server 2012.

 
Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
Le contenu est un message signé PKCS #7.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
Le contenu est un message signé PKCS #7 incorporé.
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
Le contenu est un message non signé PKCS #7.
CERT_QUERY_CONTENT_FLAG_PKCS10
Le contenu est un message PKCS #10.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
Le contenu est un certificat unique sérialisé.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
Le contenu est une seule liste de révocation de révocation de certificats sérialisée.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
Le contenu est sérialisé avec une seule CTL.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
Le contenu est un magasin sérialisé.

[in] dwExpectedFormatTypeFlags

Indique le format attendu du type retourné. Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
CERT_QUERY_FORMAT_FLAG_ALL
Le contenu peut être retourné dans n’importe quel format.
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
Le contenu doit être retourné au format hexadécimal ASCII avec un préfixe « {ASN} ».
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
Le contenu doit être retourné au format encodé en Base64.
CERT_QUERY_FORMAT_FLAG_BINARY
Le contenu doit être retourné au format binaire.

[in] dwFlags

Ce paramètre est réservé à une utilisation ultérieure et doit être défini sur zéro.

[out] pdwMsgAndCertEncodingType

Pointeur vers une valeur DWORD qui reçoit le type d’encodage utilisé dans le message. Si ces informations ne sont pas nécessaires, définissez ce paramètre sur NULL.

Ce paramètre peut recevoir une combinaison d’une ou plusieurs des valeurs suivantes.

Valeur Signification
PKCS_7_ASN_ENCODING
65536 (0x10000)
Spécifie l’encodage des messages PKCS 7.
X509_ASN_ENCODING
1 (0x1)
Spécifie l’encodage du certificat X.509.

[out] pdwContentType

Pointeur vers une valeur DWORD qui reçoit le type réel du contenu. Si ces informations ne sont pas nécessaires, définissez ce paramètre sur NULL. Le type de contenu retourné peut être l’une des valeurs suivantes.

Valeur Signification
CERT_QUERY_CONTENT_CERT
Le contenu est un certificat unique.
CERT_QUERY_CONTENT_CERT_PAIR
Le contenu est une X509_CERT_pair encodée ASN.1.
CERT_QUERY_CONTENT_CRL
Le contenu est une seule liste de révocation de révocation de certificats.
CERT_QUERY_CONTENT_CTL
Le contenu est une seule CTL.
CERT_QUERY_CONTENT_PFX
Le contenu est un paquet PFX (PKCS #12). Cette fonction vérifie uniquement que l’objet est un paquet PKCS #12. Le paquet PKCS #12 n’est pas chargé dans un magasin de certificats.
CERT_QUERY_CONTENT_PFX_AND_LOAD
Le contenu est un paquet PFX (PKCS #12) qui a été chargé dans un magasin de certificats.

Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.

CERT_QUERY_CONTENT_PKCS7_SIGNED
Le contenu est un message signé PKCS #7.
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
Le contenu est un message signé PKCS #7 incorporé.
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
Le contenu est un message non signé PKCS #7.
CERT_QUERY_CONTENT_PKCS10
Le contenu est un message PKCS #10.
CERT_QUERY_CONTENT_SERIALIZED_CERT
Le contenu est un certificat unique sérialisé.
CERT_QUERY_CONTENT_SERIALIZED_CRL
Le contenu est une seule liste de révocation de révocation de certificats sérialisée.
CERT_QUERY_CONTENT_SERIALIZED_CTL
Le contenu est une seule CTL sérialisée.
CERT_QUERY_CONTENT_SERIALIZED_STORE
Le contenu est un magasin sérialisé.

[out] pdwFormatType

Pointeur vers une valeur DWORD qui reçoit le type de format réel du contenu. Si ces informations ne sont pas nécessaires, définissez ce paramètre sur NULL. Le type de format retourné peut être l’une des valeurs suivantes.

Valeur Signification
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
Le contenu est au format hexadécimal ASCII avec un préfixe « {ASN} ».
CERT_QUERY_FORMAT_BASE64_ENCODED
Le contenu est au format encodé en Base64.
CERT_QUERY_FORMAT_BINARY
Le contenu est au format binaire.

[out] phCertStore

Pointeur vers une valeur HCERTSTORE qui reçoit un handle vers un magasin de certificats qui inclut tous les certificats, LISTES de contrôle d’accès et CTL de l’objet.

Ce paramètre reçoit uniquement un handle de magasin de certificats lorsque le paramètre dwContentType reçoit l’une des valeurs suivantes. Ce paramètre reçoit la valeur NULL pour tous les autres types de contenu.

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

Une fois que vous avez terminé d’utiliser le handle, libérez-le en passant le handle à la fonction CertCloseStore .

Si ces informations ne sont pas nécessaires, définissez ce paramètre sur NULL.

[out] phMsg

Pointeur vers une valeur HCRYPTMSG qui reçoit le handle d’un message ouvert.

Ce paramètre reçoit uniquement un handle de message lorsque le paramètre dwContentType reçoit l’une des valeurs suivantes. Ce paramètre reçoit la valeur NULL pour tous les autres types de contenu.

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_PKCS7_UNSIGNED

Une fois que vous avez terminé d’utiliser le handle, libérez-le en passant le handle à la fonction CryptMsgClose .

Si ces informations ne sont pas nécessaires, définissez ce paramètre sur NULL.

[out] ppvContext

Pointeur vers un pointeur qui reçoit des informations supplémentaires sur l’objet.

Le format de ces données dépend de la valeur reçue par le paramètre dwContentType . Le tableau suivant répertorie le format des données pour la valeur dwContentType spécifiée.

valeur dwContentType Signification
CERT_QUERY_CONTENT_CERT
Ce paramètre reçoit un pointeur vers une structure CERT_CONTEXT . Lorsque vous avez terminé d’utiliser la structure, libérez-la en passant ce pointeur vers la fonction CertFreeCertificateContext .
CERT_QUERY_CONTENT_CRL
Ce paramètre reçoit un pointeur vers une structure CRL_CONTEXT . Lorsque vous avez terminé d’utiliser la structure, libérez-la en passant ce pointeur vers la fonction CertFreeCRLContext .
CERT_QUERY_CONTENT_CTL
Ce paramètre reçoit un pointeur vers une structure CTL_CONTEXT . Une fois la structure terminée, libérez-la en passant ce pointeur vers la fonction CertFreeCTLContext .
CERT_QUERY_CONTENT_SERIALIZED_CERT
Ce paramètre reçoit un pointeur vers une structure CERT_CONTEXT . Lorsque vous avez terminé d’utiliser la structure, libérez-la en passant ce pointeur vers la fonction CertFreeCertificateContext .
CERT_QUERY_CONTENT_SERIALIZED_CRL
Ce paramètre reçoit un pointeur vers une structure CRL_CONTEXT . Lorsque vous avez terminé d’utiliser la structure, libérez-la en passant ce pointeur vers la fonction CertFreeCRLContext .
CERT_QUERY_CONTENT_SERIALIZED_CTL
Ce paramètre reçoit un pointeur vers une structure CTL_CONTEXT . Une fois la structure terminée, libérez-la en passant ce pointeur vers la fonction CertFreeCTLContext .
 

Si ces informations ne sont pas nécessaires, définissez ce paramètre sur NULL.

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

Gestion des données Functions