Fonction CertAddCertificateLinkToStore (wincrypt.h)
La fonction CertAddCertificateLinkToStore ajoute un lien dans un magasin de certificats à un contexte de certificat dans un autre magasin. Au lieu de créer et d’ajouter un doublon du contexte de certificat, cette fonction ajoute un lien vers le certificat d’origine.
Syntaxe
BOOL CertAddCertificateLinkToStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCERT_CONTEXT *ppStoreContext
);
Paramètres
[in] hCertStore
Handle dans le magasin de certificats où le lien doit être ajouté.
[in] pCertContext
Pointeur vers la structure CERT_CONTEXT à lier.
[in] dwAddDisposition
Spécifie l’action si un certificat correspondant ou un lien vers un certificat correspondant existe déjà dans le magasin. Les valeurs de disposition actuellement définies et leurs utilisations sont les suivantes.
Valeur | Signification |
---|---|
|
La fonction n’effectue aucune case activée pour un certificat de correspondance existant ou un lien vers un certificat correspondant. Un nouveau certificat est toujours ajouté au magasin. Cela peut entraîner des doublons dans un magasin. |
|
S’il existe un certificat correspondant ou un lien vers un certificat correspondant, l’opération échoue. GetLastError retourne le code CRYPT_E_EXISTS. |
|
S’il existe un lien vers un certificat correspondant, ce lien existant est supprimé et un nouveau lien est créé et ajouté au magasin. S’il n’existe aucun certificat correspondant ou aucun lien vers un certificat correspondant, un certificat est ajouté. |
|
S’il existe un certificat correspondant ou un lien vers un certificat correspondant, le certificat existant est utilisé. La fonction n’échoue pas, mais aucun nouveau lien n’est ajouté. S’il n’existe aucun certificat correspondant ou aucun lien vers un certificat correspondant, un nouveau lien est ajouté. |
[out, optional] ppStoreContext
Pointeur vers un pointeur vers une copie du lien créé. Le paramètre ppStoreContext peut avoir la valeur NULL pour indiquer qu’une copie du lien n’est pas nécessaire. Si une copie du lien est créée, cette copie doit être libérée à l’aide de la fonction CertFreeCertificateContext .
Valeur retournée
Si la fonction réussit, la valeur de retour est TRUE.
Si la fonction échoue, la valeur de retour est FALSE. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Certains codes d’erreur possibles suivent.
Code de retour | Description |
---|---|
|
Pour un paramètre dwAddDisposition de CERT_STORE_ADD_NEW, le certificat existe déjà dans le magasin. |
|
Une valeur de disposition non valide a été spécifiée dans le paramètre dwAddDisposition . |
Remarques
Étant donné que le lien fournit l’accès au contexte de certificat d’origine, la définition d’une propriété étendue dans le contexte de certificat lié modifie cette propriété étendue dans l’emplacement d’origine du certificat et dans tout autre lien vers ce certificat.
Les liens ne peuvent pas être ajoutés à un magasin ouvert en tant que collection. Les magasins ouverts en tant que collections incluent tous les magasins ouverts avec CertOpenSystemStore ou CertOpenStore à l’aide de CERT_STORE_PROV_SYSTEM ou de CERT_STORE_PROV_COLLECTION. Pour plus d’informations, consultez CertAddStoreToCollection.
Si des liens sont utilisés et que CertCloseStore est appelé avec CERT_CLOSE_STORE_FORCE_FLAG, le magasin qui utilise des liens doit être fermé avant la fermeture du magasin qui contient les contextes d’origine. Si CERT_CLOSE_STORE_FORCE_FLAG n’est pas utilisé, les deux magasins peuvent être fermés dans l’un ou l’autre ordre.
Pour supprimer le lien de contexte de certificat du magasin de certificats, utilisez la fonction CertDeleteCertificateFromStore .
Exemples
Pour obtenir un exemple qui utilise cette fonction, consultez Exemple de programme C : opérations du magasin de certificats. Pour obtenir du code supplémentaire qui utilise cette fonction, consultez Exemple de programme C : Opérations de magasin de certificats de collection et frères.
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 |