Partager via


CertGetCertificateContextProperty, fonction (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 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 de 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

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

CERT_ARCHIVED_PROP_ID

Type de données pvData: NULL . Si la fonction CertGetCertificateContextProperty retourne la valeur 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

Retourne une chaîne Unicode terminée par 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

Désactive récupération de liste de révocation de certificats (CRL) pour les certificats utilisés par l’autorité de certification (CA). 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

Contient la liste des URL de protocole d’état de certificat en ligne (OCSP) à utiliser pour les certificats émis par le certificat d’autorité de certification. Le contenu du tableau est la notation de syntaxe abstraite One (ASN.1) encodés en octets 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

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

Le tableau BYTE contient une structure CROSS_CERT_DIST_POINTS_INFO encodée asN.1 en utilisant 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

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

CERT_DATE_STAMP_PROP_ID

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

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

CERT_DESCRIPTION_PROP_ID

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

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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

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

CERT_ENROLLMENT_PROP_ID

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

Informations d’inscription de la requête en attente qui contient RequestID, CADNSName, CAName et DisplayName. Le format de 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 fin de caractère null
4 octets suivants Taille 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

Retourne une chaîne de caractères Unicode terminée par null qui contient le nom complet du certificat.

CERT_HASH_PROP_ID

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

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 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é d’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 propriété est supprimée après son retour. Si vous appelez cette propriété sur un contexte qui a une clé CNG, CRYPT_E_NOT_FOUND est retournée.

CERT_IE30_RESERVED_PROP_ID

Cet identificateur est réservé.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

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

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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

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 pvData: pointeur vers une structure de CERT_KEY_CONTEXT.

Retourne une structure CERT_KEY_CONTEXT.

CERT_KEY_IDENTIFIER_PROP_ID

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

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 pvData: pointeur vers une valeur HCRYPTPROV.

Retourne le handle de fournisseur obtenu à partir de CERT_KEY_CONTEXT_PROP_ID.

CERT_KEY_PROV_INFO_PROP_ID

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

Retourne un pointeur vers une structure CRYPT_KEY_PROV_INFO.

CERT_KEY_SPEC_PROP_ID

Type de données 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 s’il existe. Sinon, si CERT_KEY_PROV_INFO_PROP_ID existe, il s’agit de la source de la dwKeySpec.

CERT_MD5_HASH_PROP_ID

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

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 pvData: pointeur vers un type de données NCRYPT_KEY_HANDLE.

Retourne un choix CERT_NCRYPT_KEY_SPEC 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 propriété est supprimée après son retour. Si vous appelez cette propriété sur un contexte qui a une clé CAPI (héritée), CRYPT_E_NOT_FOUND est retournée.

CERT_NEW_KEY_PROP_ID

Cet identificateur est réservé.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

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

Retourne la structure CERT_ALT_NAME_INFO encodée ASN.1.

CERT_NEXT_UPDATE_LOCATION_PROP_ID est actuellement utilisé uniquement avec les listes CTL.

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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

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.

Retourne une chaîne L"<PUBKEY><BITLENGTH>" représentant l’algorithme de clé publique et la longueur du bit du certificat. Les algorithmes de <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 : prise en charge de cette propriété commence.

CERT_PUBKEY_ALG_PARA_PROP_ID

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

Pour les clés publiques qui prennent en charge l’héritage des paramètres d’algorithme, retourne les paramètres d’algorithme PublicKey codés 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éfinie.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Cet identificateur est réservé.

CERT_PVK_FILE_PROP_ID

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

Retourne une chaîne de caractères 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

Retourne le hachage du certificat renouvelé.

CERT_REQUEST_ORIGINATOR_PROP_ID

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

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

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

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

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_ENCODING ORPKCS_7_ASN_ENCODING.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Cet identificateur est réservé.

CERT_SHA1_HASH_PROP_ID

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

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

CERT_SHA1_SHA256_HASH_PROP_ID

Type de données pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est de 52 octets, 20 octets pour le hachage SHA1 et 32 octets pour le hachage SHA256.

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

CERT_SHA256_HASH_PROP_ID

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

Retourne le hachage SHA256. 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 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 des exemples courants :

  • L"RSA/SHA1 »
  • L"RSA/SHA256 »
  • L"ECDSA/SHA256 »

Windows 7 et Windows Server 2008 R2 : prise en charge de cette propriété commence.

CERT_SIGNATURE_HASH_PROP_ID

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

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 16 pour MD5.

CERT_SMART_CARD_DATA_PROP_ID

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

Retourne un pointeur vers les données de carte à puce encodées. Avant d’appeler CertGetCertificateContextProperty, vous pouvez utiliser cette constante pour récupérer un certificat de carte à puce à 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

Retourne un pointeur vers une structure de 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 pvData: pointeur vers un tableau de valeurs BYTE. La taille de ce tableau est spécifiée dans le paramètre ccpData.

Retourne l’extension d’accès aux informations de l’objet du contexte de certificat en tant que structure de CERT_SUBJECT_INFO_ACCESS encodée.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

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

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 pvData: pointeur vers une valeur de DWORD .

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

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

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

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

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, comme déterminé par dwPropId. Les structures pointées par les membres d’une structure retournée sont également retournées à la suite de la structure de base. Par conséquent, la taille contenue dans cciData 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 des 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 pointée par le paramètre pvData . Lorsque la fonction est retournée, 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, passez 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 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

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 s’assurer que les données de sortie les plus volumineuses possibles s’intègrent dans la mémoire tampon.) Lors de la 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 de retour

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.

Voici quelques codes d’erreur possibles :

Retourner le code 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 suffisamment volumineuse 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 wireData.

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

Remarques

Les propriétés ne sont pas stockées à l’intérieur d’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 de propriété 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 pour 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2003 [applications de bureau | Applications UWP]
plateforme cible Windows
d’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é étendue