Fonction CertAddCTLLinkToStore (wincrypt.h)
La fonction CertAddCTLLinkToStore ajoute un lien dans un magasin à un contexte de liste d’approbation de certificats (CTL) dans un autre magasin. Au lieu de créer et d’ajouter un doublon d’un contexte CTL, cette fonction ajoute un lien vers le contexte CTL d’origine.
Syntaxe
BOOL CertAddCTLLinkToStore(
[in] HCERTSTORE hCertStore,
[in] PCCTL_CONTEXT pCtlContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCTL_CONTEXT *ppStoreContext
);
Paramètres
[in] hCertStore
Handle du magasin de certificats où le lien doit être ajouté.
[in] pCtlContext
Pointeur vers la structure CTL_CONTEXT à lier.
[in] dwAddDisposition
Spécifie l’action à entreprendre si une CTL correspondante ou un lien vers une CTL correspondante existe déjà dans le magasin. Les valeurs de disposition actuellement définies et leurs utilisations sont les suivantes.
Valeur | Signification |
---|---|
|
N’effectue aucune case activée pour une CTL correspondante existante ou un lien vers une CTL correspondante. Une nouvelle CTL est toujours ajoutée au magasin. Cela peut entraîner des doublons dans un magasin. |
|
Si une CTL correspondante ou un lien vers une CTL correspondante existe, l’opération échoue. GetLastError retourne le code CRYPT_E_EXISTS. |
|
S’il existe une CTL correspondante ou un lien vers une CTL correspondante, les heures ThisUpdate sur les CTL sont comparées. Si la CTL existante a une durée ThisUpdate inférieure à l’heure ThisUpdate sur la nouvelle CTL, l’ancienne CTL ou le lien est remplacé comme avec CERT_STORE_ADD_REPLACE_EXISTING. Si la CTL existante a une durée ThisUpdate supérieure ou égale à l’heure ThisUpdate sur la CTL à ajouter, la fonction échoue avec GetLastError qui retourne le code CRYPT_E_EXISTS.
Si une CTL correspondante ou un lien vers une CTL correspondante est introuvable dans le magasin, une nouvelle CTL est ajoutée au magasin. |
|
L’action est la même que pour CERT_STORE_ADD_NEWER, sauf que si une ancienne CTL est remplacée, les propriétés de l’ancienne CTL sont incorporées dans la CTL de remplacement. |
|
S’il existe une CTL correspondante ou un lien vers une CTL correspondante, la CTL ou le lien existant est supprimé et une nouvelle CTL est créée et ajoutée au magasin. Si une CTL correspondante ou un lien vers une CTL correspondante n’existe pas, il en est ajouté une. |
|
Si une CTL correspondante existe dans le magasin, ce contexte existant est supprimé avant de créer et d’ajouter le nouveau contexte. Le contexte ajouté hérite des propriétés de la CTL existante. |
|
Si une CTL correspondante ou un lien vers une CTL correspondante existe, cette CTL existante est utilisée et les propriétés de la nouvelle CTL sont ajoutées. La fonction n’échoue pas, mais aucune nouvelle CTL n’est ajoutée. Si ppCertContext n’a pas la valeur NULL, le contexte existant est dupliqué.
Si une CTL correspondante ou un lien vers une CTL correspondante n’existe pas, une nouvelle CTL est ajoutée. |
[out, optional] ppStoreContext
Pointeur vers un pointeur vers une copie du lien créé. 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 CertFreeCTLContext.
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 une dwAddDisposition de CERT_STORE_ADD_NEW, la CTL existe déjà dans le magasin. |
|
La disposition d’ajout spécifiée par le paramètre dwAddDisposition n’est pas valide. |
Remarques
Étant donné que le lien fournit l’accès au contexte de la CTL d’origine, la définition d’une propriété étendue dans le contexte CTL lié modifie cette propriété étendue dans l’emplacement de la CTL d’origine et dans tout autre lien vers cette CTL.
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. Consultez également CertAddStoreToCollection.
Lorsque des liens sont utilisés et que CertCloseStore est appelé avec CERT_CLOSE_STORE_FORCE_FLAG, le magasin utilisant des liens doit être fermé avant la fermeture du magasin contenant 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 CTL du magasin de certificats, utilisez la fonction CertDeleteCTLFromStore .
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 |