Fonction CertSetCertificateContextProperty (wincrypt.h)

La fonction CertSetCertificateContextProperty définit une propriété étendue pour un contexte de certificat spécifié.

Syntaxe

BOOL CertSetCertificateContextProperty(
  [in] PCCERT_CONTEXT pCertContext,
  [in] DWORD          dwPropId,
  [in] DWORD          dwFlags,
  [in] const void     *pvData
);

Paramètres

[in] pCertContext

Pointeur vers une structure CERT_CONTEXT .

[in] dwPropId

Propriété à définir. La valeur de dwPropId détermine le type et le contenu du paramètre pvData . Les identificateurs actuellement définis et leurs types pvData associés sont les suivants.

Notezque les CRYPT_HASH_BLOB et les CRYPT_DATA_BLOB sont décrits dans la rubrique CRYPT_INTEGER_BLOB .
 

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 une structure CRYPT_HASH_BLOB .

Cette propriété enregistre un hachage de clé chiffré pour le contexte de certificat.

CERT_ARCHIVED_PROP_ID

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

Indique que le certificat est ignoré pendant les énumérations. Un certificat avec ce jeu de propriétés est toujours trouvé avec des opérations de recherche explicites, telles que la recherche d’un certificat avec un hachage spécifique ou un numéro de série spécifique. Cette propriété peut être définie sur l’objet BLOB vide, {0,NULL}.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Cet identificateur est réservé.

CERT_AUTO_ENROLL_PROP_ID

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

Propriété définie après l’inscription d’un certificat à l’aide de l’inscription automatique. La structure CRYPT_DATA_BLOB pointée par pvData inclut un nom Unicode terminé par null du type de certificat pour lequel le certificat a été automatiquement inscrit. Tous les appels suivants à l’inscription automatique pour le certificat vérifient cette propriété pour déterminer si le certificat a été inscrit.

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 une structure CRYPT_DATA_BLOB .

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 une structure CRYPT_DATA_BLOB .

Contient la liste des URL ocsp (certificate 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 une structure CRYPT_DATA_BLOB .

Définit l’emplacement des certificats croisés. Cette valeur s’applique uniquement aux certificats et non aux listes de révocation de certificats (CRL) ou aux listes d’approbation de certificats (CTL). La structure CRYPT_DATA_BLOB contient une structure de CROSS_CERT_DIST_POINTS_INFO encodée ASN.1 (Abstract Syntax Notation One) encodée à l’aide de la fonction CryptEncodeObject 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 une structure CRYPT_DATA_BLOB .

La structure CRYPT_DATA_BLOB contient une structure CTL_USAGE encodée asN.1. Cette structure est encodée à l’aide de la fonction CryptEncodeObject avec la valeur X509_ENHANCED_KEY_USAGE définie.

CERT_DATE_STAMP_PROP_ID

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

Cette propriété définit l’heure à laquelle le certificat a été ajouté au magasin.

CERT_DESCRIPTION_PROP_ID

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

Propriété définie et 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 une structure CRYPT_DATA_BLOB .

Propriété qui indique que le paramètre pvData pointe vers une structure CRYPT_DATA_BLOB qui contient une structure CERT_ENHKEY_USAGE encodée ASN.1. Cette structure est encodée à l’aide de la fonction CryptEncodeObject avec la valeur X509_ENHANCED_KEY_USAGE définie.

CERT_ENROLLMENT_PROP_ID

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

Informations d’inscription de la demande 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 CADNSName size, 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 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 une structure CRYPT_DATA_BLOB .

Cette propriété définit une chaîne 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 une structure CRYPT_DATA_BLOB .

La structure CRYPT_DATA_BLOB contient le nom d’affichage du certificat.

CERT_HASH_PROP_ID

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

Cette propriété est implicitement définie par un appel à la fonction CertGetCertificateContextProperty .

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 .

Cette propriété appelle NCryptIsKeyHandle pour déterminer s’il s’agit d’un NCRYPT_KEY_HANDLE. Pour une NCRYPT_KEY_HANDLE, définit CERT_NCRYPT_KEY_HANDLE_PROP_ID ; sinon, il définit CERT_KEY_PROV_HANDLE_PROP_ID.

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Définit le handle de la clé CAPI associée au certificat.

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 une structure CRYPT_DATA_BLOB .

Cette propriété définit le hachageMD5 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 une structure CRYPT_DATA_BLOB .

La structure CRYPT_DATA_BLOB contient le 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 CERT_KEY_CONTEXT .

La structure spécifie la clé privée du certificat. Il contient à la fois la spécification HCRYPTPROV et la clé pour la clé privée. Pour plus d’informations sur le membre hCryptProv et les paramètres dwFlags , consultez CERT_KEY_PROV_HANDLE_PROP_ID, plus loin dans cette rubrique.

Note Plus CERT_KEY_CONTEXT membres de structure peuvent être ajoutés pour cette propriété. Si c’est le cas, la valeur du membre cbSize est ajustée en conséquence. Le membre cbSize doit être défini sur la taille de la structure CERT_KEY_CONTEXT .
 

CERT_KEY_IDENTIFIER_PROP_ID

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

Cette propriété est généralement définie implicitement par un appel à la fonction CertGetCertificateContextProperty .

CERT_KEY_PROV_HANDLE_PROP_ID

Type de données de pvData : valeur HCRYPTPROV .

Le handle HCRYPTPROV pour la clé privée du certificat est défini. Le membre hCryptProv de la structure CERT_KEY_CONTEXT est mis à jour s’il existe. S’il n’existe pas, il est créé avec dwKeySpec et initialisé par CERT_KEY_PROV_INFO_PROP_ID. Si CERT_STORE_NO_CRYPT_RELEASE_FLAG n’est pas défini, la valeur hCryptProv est implicitement libérée lorsque la propriété a la valeur NULL ou lors de la libération finale de la structure CERT_CONTEXT .

CERT_KEY_PROV_INFO_PROP_ID

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

La structure spécifie la clé privée du certificat.

CERT_KEY_SPEC_PROP_ID

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

Valeur DWORD qui spécifie la clé privée. Le membre dwKeySpec de la structure CERT_KEY_CONTEXT est mis à jour s’il existe. Si ce n’est pas le cas, il est créé avec hCryptProv défini sur zéro.

CERT_MD5_HASH_PROP_ID

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

Cette propriété est implicitement définie par un appel à la fonction CertGetCertificateContextProperty .

CERT_NCRYPT_KEY_HANDLE_PROP_ID

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

Cette propriété définit la NCRYPT_KEY_HANDLE de la clé privée du certificat et définit dwKeySpecsur CERT_NCRYPT_KEY_SPEC.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Définit le handle de la clé CNG associée au certificat.

CERT_NEW_KEY_PROP_ID

Cet identificateur est réservé.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

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

La structure CRYPT_DATA_BLOB contient une structure CERT_ALT_NAME_INFO encodée en ASN.1 qui est encodée à l’aide de la fonction CryptEncodeObject avec le jeu de valeurs X509_ALTERNATE_NAME.

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

Cette propriété définit la réponse OCSP (Online Certificate status Protocol) encodée à partir d’un CERT_SERVER_OCSP_RESPONSE_CONTEXT pour ce certificat.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

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

Cette propriété est implicitement définie en appelant la fonction CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cet identificateur n’est pas pris en charge.

CERT_PUBKEY_ALG_PARA_PROP_ID

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

Cette propriété est utilisée avec les clés publiques qui prennent en charge l’héritage des paramètres d’algorithme. L’objet BLOB de données contient les paramètres de l’algorithme PublicKey encodé en ASN.1. Pour DSS, il s’agit de paramètres encodés à l’aide de la fonction CryptEncodeObject . Elle 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 une structure CRYPT_DATA_BLOB .

La structure CRYPT_DATA_BLOB spécifie le nom d’un fichier qui contient la clé privée associée à la clé publique du certificat. À l’intérieur de la structure CRYPT_DATA_BLOB , le membre pbData est un pointeur vers une chaîne de caractères larges Unicode terminée par null, et le membre cbData indique la longueur de la chaîne.

CERT_RENEWAL_PROP_ID

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

Cette propriété spécifie le hachage du certificat renouvelé.

CERT_REQUEST_ORIGINATOR_PROP_ID

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

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

Retourne un pointeur vers une structure 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_SIGN_HASH_CNG_ALG_PROP_ID

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

Cette propriété est implicitement définie en appelant la fonction CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cet identificateur n’est pas pris en charge.

CERT_SHA1_HASH_PROP_ID

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

Cette propriété est implicitement définie par un appel à la fonction CertGetCertificateContextProperty .

CERT_SIGNATURE_HASH_PROP_ID

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

S’il n’existe pas de hachage de signature, il est calculé à l’aide de la fonction CryptHashToBeSigned . pvData pointe vers un hachage existant ou calculé. En règle générale, 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 une structure CRYPT_DATA_BLOB .

Cette propriété définit la propriété de données smart carte d’un contexte de certificat smart carte.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

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

Cette propriété définit la propriété d’informations d’un contexte de certificat racine carte intelligent.

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 une structure CRYPT_DATA_BLOB .

Cette propriété définit l’extension d’accès aux informations d’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 de pvData : pointeur vers une structure CRYPT_DATA_BLOB .

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 structure CRYPT_DATA_BLOB .

Cette propriété est implicitement définie en appelant la fonction CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cet identificateur n’est pas pris en charge.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

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

Cette propriété définit le hachage MD5 de la clé publique de ce certificat.

pvData est un pointeur vers une structure CRYPT_DATA_BLOB .

L’utilisateur peut définir des types dwPropId supplémentaires à l’aide de valeurs DWORD de CERT_FIRST_USER_PROP_ID à CERT_LAST_USER_PROP_ID. Pour tous les types dwPropId définis par l’utilisateur, pvData pointe vers une structure CRYPT_DATA_BLOB encodée.

[in] dwFlags

CERT_STORE_NO_CRYPT_RELEASE_FLAG peut être défini pour les propriétés CERT_KEY_PROV_HANDLE_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID dwPropId .

Si la valeur CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG est définie, toutes les erreurs d’écriture de fournisseur sont ignorées et les propriétés du contexte mis en cache sont toujours définies.

Si CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG est défini, aucun jeu de propriétés de contexte n’est conservé.

[in] pvData

Pointeur vers un type de données déterminé par la valeur de dwPropId.

Note Pour tout dwPropId, la définition de pvData sur NULL supprime la propriété .
 

Valeur retournée

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

Si la fonction échoue, la fonction retourne FALSE. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Un code d’erreur possible est le suivant.

Code de retour Description
E_INVALIDARG
La propriété n’est pas valide. L’identificateur spécifié était supérieur à 0x0000FFFF ou, pour la propriété CERT_KEY_CONTEXT_PROP_ID, un membre cbSize non valide a été spécifié dans la structure CERT_KEY_CONTEXT .

Remarques

Si une propriété existe déjà, son ancienne valeur est remplacée.

Votre code peut utiliser une macro pour évaluer la classe de hachage d’un contexte de certificat. L’en-tête Wincrypt.h définit les macros suivantes à cet effet. Ces macros sont utilisées en interne par la fonction CertSetCertificateContextProperty .

IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) Chaque macro prend la valeur dwPropId (X) comme entrée et l’évalue à une valeur booléenne. Le tableau suivant montre les valeurs dwPropId qui sont évaluées sur TRUE pour chaque macro.

Macro Évalue la valeur TRUE si dwPropId est
IS_CERT_HASH_PROP_ID(dwPropId)
CERT_SHA1_HASH_PROP_ID,
CERT_MD5_HASH_PROP_ID, ou
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID ou
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
IS_CHAIN_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID, ou
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

La macro IS_STRONG_SIGN_PROP_ID(x) prend la valeur TRUE si les propriétés CERT_SIGN_HASH_CNG_ALG_PROP_ID, CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID ou CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID sont définies dans le paramètre dwPropId .

Exemples

Pour obtenir un exemple qui utilise cette fonction, consultez Exemple de programme C : obtention et définition des propriétés de certificat.

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

CERT_ALT_NAME_INFO

CERT_CONTEXT

CERT_ENHKEY_USAGE

CERT_KEY_CONTEXT

CROSS_CERT_DIST_POINTS_INFO

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCertificateContextProperty

CertSetCRLContextProperty

CryptEncodeObject

CryptHashToBeSigned

Fonctions de propriété étendues