Fonction CertGetCertificateContextProperty (wincrypt.h)

La fonction CertGetCertificateContextProperty récupère les informations contenues dans une propriété étendue d’un contexte de certificat.

Syntaxe

BOOL CertGetCertificateContextProperty(
  [in]      PCCERT_CONTEXT pCertContext,
  [in]      DWORD          dwPropId,
  [out]     void           *pvData,
  [in, out] DWORD          *pcbData
);

Paramètres

[in] pCertContext

Pointeur vers la structure CERT_CONTEXT du certificat qui contient la propriété à récupérer.

[in] dwPropId

Propriété à récupérer. Les identificateurs actuellement définis et le type de données à retourner dans pvData sont répertoriés dans le tableau suivant.

CERT_ACCESS_STATE_PROP_ID

Type de données de pvData : pointeur vers une valeur DWORD .

Retourne une valeur DWORD qui indique si les opérations d’écriture dans le certificat sont conservées. La valeur DWORD n’est pas définie si le certificat se trouve dans un magasin de mémoire ou dans un magasin basé sur le Registre ouvert en lecture seule.

CERT_AIA_URL_RETRIEVED_PROP_ID

Cet identificateur est réservé.

CERT_ARCHIVED_KEY_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne un hachage de clé chiffrée précédemment enregistré pour le contexte de certificat.

CERT_ARCHIVED_PROP_ID

Type de données de pvData : NULL. Si la fonction CertGetCertificateContextProperty retourne true, l’ID de propriété spécifié existe pour le CERT_CONTEXT.

Indique que le certificat est ignoré pendant les énumérations. Un certificat avec ce jeu de propriétés est trouvé avec des opérations de recherche explicites, telles que celles utilisées pour rechercher un certificat avec un hachage spécifique ou un numéro de série. Aucune donnée dans pvData n’est associée à cette propriété.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Cet identificateur est réservé.

CERT_AUTO_ENROLL_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne une chaîne Unicode terminée par un caractère Null qui nomme le type de certificat pour lequel le certificat a été inscrit automatiquement.

CERT_AUTO_ENROLL_RETRY_PROP_ID

Cet identificateur est réservé.

CERT_BACKED_UP_PROP_ID

Cet identificateur est réservé.

CERT_CA_DISABLE_CRL_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Désactive la récupération de liste de révocation de certificats (CRL) pour les certificats utilisés par l’autorité de certification . Si le certificat d’autorité de certification contient cette propriété, il doit également inclure la propriété CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID .

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Contient la liste des URL OCSP (Certificat status Protocol) en ligne à utiliser pour les certificats émis par le certificat d’autorité de certification. Le contenu du tableau est les octets encodés asn.1 ( Abstract Syntax Notation One ) d’une structure X509_AUTHORITY_INFO_ACCESSpszAccessMethod est défini sur szOID_PKIX_OCSP.

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Emplacement des certificats croisés. Actuellement, cet identificateur s’applique uniquement aux certificats et non aux listes de certificats ou aux listes d’approbation de certificats (CTL).

Le tableau BYTE contient une structure CROSS_CERT_DIST_POINTS_INFO encodée asN.1 à l’aide de la fonction CryptDecodeObject avec une valeur X509_CROSS_CERT_DIST_POINTS pour le paramètre lpszStuctType .

CERT_CTL_USAGE_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne un tableau d’octets qui contiennent une structure CTL_USAGE encodée en ASN.1.

CERT_DATE_STAMP_PROP_ID

Type de données de pvData : pointeur vers une structure FILETIME .

Heure à laquelle le certificat a été ajouté au magasin.

CERT_DESCRIPTION_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne la propriété affichée par l’interface utilisateur du certificat. Cette propriété permet à l’utilisateur de décrire l’utilisation du certificat.

CERT_EFS_PROP_ID

Cet identificateur est réservé.

CERT_ENHKEY_USAGE_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne un tableau d’octets qui contiennent une structure CERT_ENHKEY_USAGE encodée en ASN.1. Cette structure contient un tableau d’identificateurs d’objet (OID) d’utilisation de clé améliorée, chacun spécifiant une utilisation valide du certificat.

CERT_ENROLLMENT_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Informations d’inscription de la demande en attente qui contient RequestID, CADNSName, CAName et DisplayName. Le format des données est défini comme suit.

Octets Contenu
4 premiers octets ID de demande en attente
4 octets suivants TAILLE CADNSName, en caractères, y compris le caractère null de fin, suivi de la chaîne CADNSName avec caractère null de fin
4 octets suivants Taille caName, en caractères, y compris le caractère null de fin, suivi de la chaîne CAName avec caractère null de fin
4 octets suivants Taille de DisplayName, en caractères, y compris le caractère null de fin, suivi de la chaîne DisplayName avec caractère null de fin
 

CERT_EXTENDED_ERROR_INFO_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne une chaîne de caractères Unicode terminée par null qui contient des informations d’erreur étendues pour le contexte de certificat.

CERT_FORTEZZA_DATA_PROP_ID

Cet identificateur est réservé.

CERT_FRIENDLY_NAME_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne une chaîne de caractères Unicode terminée par une valeur Null qui contient le nom d’affichage du certificat.

CERT_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne le hachage SHA1. Si le hachage n’existe pas, il est calculé à l’aide de la fonction CryptHashCertificate .

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

Type de données de pvData : pointeur vers un type de données HCRYPTPROV_OR_NCRYPT_KEY_HANDLE .

Retourne le HCRYPTPROV ou NCRYPT_KEY_HANDLE choix.

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Retourne le handle de clé DE l’API de chiffrement (CAPI) associé au certificat. L’appelant est chargé de libérer le handle. Il ne sera pas libéré lorsque le contexte est libéré. La valeur de la propriété est supprimée une fois retournée. Si vous appelez cette propriété sur un contexte qui a une clé CNG, CRYPT_E_NOT_FOUND est retourné.

CERT_IE30_RESERVED_PROP_ID

Cet identificateur est réservé.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Hachage MD5 de la clé publique associée à la clé privée utilisée pour signer ce certificat.

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Hachage MD5 du nom de l’émetteur et du numéro de série de ce certificat.

CERT_KEY_CONTEXT_PROP_ID

Type de données de pvData : pointeur vers une structure de CERT_KEY_CONTEXT .

Retourne une structure CERT_KEY_CONTEXT .

CERT_KEY_IDENTIFIER_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

S’il n’existe pas, recherche l’extension szOID_SUBJECT_KEY_IDENTIFIER. En cas d’échec, un hachage SHA1 est effectué sur le membre SubjectPublicKeyInfo du certificat pour produire les valeurs d’identificateur.

CERT_KEY_PROV_HANDLE_PROP_ID

Type de données de pvData : pointeur vers une valeur HCRYPTPROV .

Retourne le handle du fournisseur obtenu à partir de CERT_KEY_CONTEXT_PROP_ID.

CERT_KEY_PROV_INFO_PROP_ID

Type de données de pvData : pointeur vers une structure CRYPT_KEY_PROV_INFO .

Retourne un pointeur vers une structure CRYPT_KEY_PROV_INFO .

CERT_KEY_SPEC_PROP_ID

Type de données de pvData : pointeur vers une valeur DWORD .

Retourne une valeur DWORD qui spécifie la clé privée obtenue à partir de CERT_KEY_CONTEXT_PROP_ID si elle existe. Sinon, si CERT_KEY_PROV_INFO_PROP_ID existe, il s’agit de la source du dwKeySpec.

CERT_MD5_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne le hachage MD5. Si le hachage n’existe pas, il est calculé à l’aide de la fonction CryptHashCertificate .

CERT_NCRYPT_KEY_HANDLE_PROP_ID

Type de données de pvData : pointeur vers un type de données NCRYPT_KEY_HANDLE .

Retourne un CERT_NCRYPT_KEY_SPEC choix, le cas échéant.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Retourne le handle de clé CNG associé au certificat. L’appelant est chargé de libérer le handle. Il ne sera pas libéré lorsque le contexte est libéré. La valeur de la propriété est supprimée une fois retournée. Si vous appelez cette propriété sur un contexte qui a une clé héritée (CAPI), CRYPT_E_NOT_FOUND est retourné.

CERT_NEW_KEY_PROP_ID

Cet identificateur est réservé.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne la structure de CERT_ALT_NAME_INFO encodée ASN.1.

CERT_NEXT_UPDATE_LOCATION_PROP_ID est actuellement utilisé uniquement avec les listes de contrôle d’accès partagé.

CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID

Cet identificateur est réservé.

CERT_OCSP_CACHE_PREFIX_PROP_ID

Cet identificateur est réservé.

CERT_OCSP_RESPONSE_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne une réponse OCSP encodée pour ce certificat.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Type de données de pvData : pointeur vers une chaîne Unicode terminée par null.

Renvoie une chaîne L « <PUBKEY>/<BITLENGTH> » représentant l’algorithme de clé publique et la longueur de bits du certificat. Les algorithmes PUBKEY> suivants< sont pris en charge :

  • L"RSA » (BCRYPT_RSA_ALGORITHM)
  • L"DSA » (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA » (SSL_ECDSA_ALGORITHM)
Windows 8 et Windows Server 2012 : la prise en charge de cette propriété commence.

CERT_PUBKEY_ALG_PARA_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Pour les clés publiques qui prennent en charge l’héritage des paramètres d’algorithme, retourne les paramètres de l’algorithme PublicKey encodés en ASN.1. Pour Digital Signature Standard (DSS), retourne les paramètres encodés à l’aide de la fonction CryptEncodeObject . Cette propriété est utilisée uniquement si CMS_PKCS7 est défini.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Cet identificateur est réservé.

CERT_PVK_FILE_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne une chaîne de caractères larges Unicode terminée par null qui contient le nom de fichier qui contient la clé privée associée à la clé publique du certificat.

CERT_RENEWAL_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne le hachage du certificat renouvelé.

CERT_REQUEST_ORIGINATOR_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne une chaîne Unicode terminée par null qui contient le nom de l’ordinateur DNS pour l’origine de la demande de contexte de certificat.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne un pointeur vers une structure de CERT_POLICIES_INFO encodée qui contient les stratégies d’application du certificat racine pour le contexte. Cette propriété peut être décodée à l’aide de la fonction CryptDecodeObject avec le paramètre lpszStructType défini sur X509_CERT_POLICIES et le paramètre dwCertEncodingType défini sur une combinaison de X509_ASN_ENCODINGPKCS_7_ASN_ENCODINGOR au niveau du bit.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Cet identificateur est réservé.

CERT_SHA1_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne le hachage SHA1. Si le hachage n’existe pas, il est calculé à l’aide de la fonction CryptHashCertificate .

CERT_SIGN_HASH_CNG_ALG_PROP_ID

Type de données de pvData : pointeur vers une chaîne Unicode terminée par une valeur Null.

Retourne la chaîne L"<SIGNATURE>/<HASH> » représentant la signature de certificat. La <valeur SIGNATURE> identifie l’algorithme de clé publique CNG. Les algorithmes suivants sont pris en charge :

  • L"RSA » (BCRYPT_RSA_ALGORITHM)
  • L"DSA » (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA » (SSL_ECDSA_ALGORITHM)
La <valeur HASH> identifie l’algorithme de hachage CNG. Les algorithmes suivants sont pris en charge :
  • L"MD5 » (BCRYPT_MD5_ALGORITHM)
  • L"SHA1 » (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256 » (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384 » (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512 » (BCRYPT_SHA512_ALGORITHM)
Voici quelques exemples courants :
  • L"RSA/SHA1 »
  • L"RSA/SHA256 »
  • L"ECDSA/SHA256 »
Windows 7 et Windows Server 2008 R2 : La prise en charge de cette propriété commence.

CERT_SIGNATURE_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne le hachage de signature. Si le hachage n’existe pas, il est calculé à l’aide de la fonction CryptHashToBeSigned . La longueur du hachage est de 20 octets pour SHA et de 16 pour MD5.

CERT_SMART_CARD_DATA_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne un pointeur vers des données smart carte encodées. Avant d’appeler CertGetCertificateContextProperty, vous pouvez utiliser cette constante pour récupérer un certificat smart carte à l’aide de la fonction CertFindCertificateInStore avec le paramètre pvFindPara défini sur CERT_SMART_CARD_DATA_PROP_ID et le paramètre dwFindType défini sur CERT_FIND_PROPERTY.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne un pointeur vers une structure CRYPT_SMART_CARD_ROOT_INFO encodée.

CERT_SOURCE_LOCATION_PROP_ID

Cet identificateur est réservé.

CERT_SOURCE_URL_PROP_ID

Cet identificateur est réservé.

CERT_SUBJECT_DISABLE_CRL_PROP_ID

Cet identificateur est réservé.

CERT_SUBJECT_INFO_ACCESS_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne l’extension d’accès aux informations du sujet du contexte de certificat sous forme de structure CERT_SUBJECT_INFO_ACCESS encodée.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne un hachage MD5 du nom d’objet encodé du contexte de certificat.

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Cet identificateur est réservé.

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

Type de données de pvData : pointeur vers une valeur DWORD .

Retourne la longueur, en bits, de la clé publique dans le certificat.

Windows 8 et Windows Server 2012 : la prise en charge de cette propriété commence.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Type de données de pvData : pointeur vers un tableau de valeurs BYTE . La taille de ce tableau est spécifiée dans le paramètre pcbData .

Retourne le hachage MD5 de la clé publique de ce certificat.

Pour tous les identificateurs de propriété définis par l’utilisateur, pvData pointe vers un tableau de valeurs BYTE .

Pour plus d’informations sur chaque identificateur de propriété, consultez la documentation sur le paramètre dwPropId dans CertSetCertificateContextProperty.

[out] pvData

Pointeur vers une mémoire tampon pour recevoir les données déterminées par dwPropId. Les structures pointées par les membres d’une structure retournée sont également retournées après la structure de base. Par conséquent, la taille contenue dans pcbData dépasse souvent la taille de la structure de base.

Ce paramètre peut être NULL pour définir la taille des informations à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération de données de longueur inconnue.

[in, out] pcbData

Pointeur vers une valeur DWORD qui spécifie la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre pvData . Lorsque la fonction retourne, la valeur DWORD contient le nombre d’octets à stocker dans la mémoire tampon.

Pour obtenir la taille requise d’une mémoire tampon au moment de l’exécution, transmettez NULL pour le paramètre pvData et définissez la valeur pointée par ce paramètre sur zéro. Si le paramètre pvData n’est pas NULL et que la taille spécifiée dans pcbData est inférieure au nombre d’octets requis pour contenir les données, la fonction échoue, GetLastError retourne ERROR_MORE_DATA et la taille requise est placée dans la variable pointée par le paramètre pcbData .

Note Lors du traitement des données retournées dans la mémoire tampon, les applications doivent utiliser la taille réelle des données retournées. La taille réelle peut être légèrement inférieure à la taille de la mémoire tampon spécifiée lors de l’entrée. (Lors de l’entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour garantir que les données de sortie les plus volumineuses possibles tiennent dans la mémoire tampon.) En sortie, la variable pointée par ce paramètre est mise à jour pour refléter la taille réelle des données copiées dans la mémoire tampon.
 

Valeur retournée

Si la fonction réussit, la fonction retourne TRUE.

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

Certains codes d’erreur possibles suivent.

Code de retour Description
CRYPT_E_NOT_FOUND
Le certificat n’a pas la propriété spécifiée.
ERROR_MORE_DATA
Si la mémoire tampon spécifiée par le paramètre pvData n’est pas assez grande pour contenir les données retournées, la fonction définit le code ERROR_MORE_DATA et stocke la taille de mémoire tampon requise, en octets, dans la variable pointée par pcbData.
 

Les erreurs de la fonction appelée CryptHashCertificate peuvent être propagées à cette fonction.

Remarques

Les propriétés ne sont pas stockées dans un certificat. En règle générale, ils sont associés à un certificat après la réception de la réponse du certificat, puis enregistrés avec le certificat dans le magasin. Pour des raisons de sécurité, nous vous recommandons de valider les valeurs des propriétés avant de les enregistrer et d’enregistrer uniquement les propriétés d’information telles que la valeur CERT_FRIENDLY_NAME_PROP_ID dans les magasins d’utilisateurs. Tous les autres types de propriétés doivent être enregistrés dans les magasins d’ordinateurs locaux.

Votre code peut utiliser une macro pour évaluer la classe de hachage d’un contexte de certificat. Pour plus d’informations, consultez CertSetCertificateContextProperty.

Exemples

Pour obtenir des exemples qui utilisent cette fonction, consultez Exemple de programme C : obtention et définition des propriétés de certificat et Exemple de programme C : Liste des certificats dans un Magasin.

Configuration requise

   
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

CERT_KEY_CONTEXT

CertCreateCertificateContext

CertSetCertificateContextProperty

CryptHashCertificate

CryptHashToBeSigned

Fonctions de propriété étendues