Fonction CertAddEncodedCTLToStore (wincrypt.h)

La fonction CertAddEncodedCTLToStore crée un contexte de liste d’approbation de certificats (CTL) à partir d’une CTL encodée et l’ajoute au magasin de certificats. La fonction effectue une copie du contexte CTL avant de l’ajouter au magasin.

Syntaxe

BOOL CertAddEncodedCTLToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            DWORD         dwMsgAndCertEncodingType,
  [in]            const BYTE    *pbCtlEncoded,
  [in]            DWORD         cbCtlEncoded,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCTL_CONTEXT *ppCtlContext
);

Paramètres

[in] hCertStore

Handle d’un magasin de certificats.

[in] dwMsgAndCertEncodingType

Spécifie le type d’encodage utilisé. Les types d’encodage de certificat et de message doivent être spécifiés en les combinant avec une opération OR au niveau du bit, comme illustré dans l’exemple suivant :

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Les types d’encodage actuellement définis sont les suivants :

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCtlEncoded

Pointeur vers une mémoire tampon contenant la CTL encodée à ajouter au magasin de certificats.

[in] cbCtlEncoded

Taille, en octets, de la mémoire tampon pbCtlEncoded .

[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
CERT_STORE_ADD_ALWAYS
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.
CERT_STORE_ADD_NEW
Si une CTL correspondante ou un lien vers une CTL correspondante existe, l’opération échoue. GetLastError retourne le code CRYPT_E_EXISTS.
CERT_STORE_ADD_NEWER
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.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
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.
CERT_STORE_ADD_REPLACE_EXISTING
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.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
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.
CERT_STORE_ADD_USE_EXISTING
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] ppCtlContext

Pointeur vers un pointeur vers la structure de CTL_CONTEXT décodée. Peut avoir la valeur NULL indiquant que l’application appelante n’a pas besoin d’une copie de la CTL ajoutée ou existante. Si une copie est effectuée, elle 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
CRYPT_E_EXISTS
CERT_STORE_ADD_NEW est défini et la CTL existe déjà dans le magasin ; ou CERT_STORE_ADD_NEWER est défini et il existe une CTL dans le magasin avec une heure ThisUpdate supérieure ou égale à l’heure ThisUpdate sur la CTL à ajouter.
E_INVALIDARG
Une valeur de disposition non valide a été spécifiée dans le paramètre dwAddDisposition , ou un type d’encodage non valide a été spécifié. Actuellement, seuls les types d’encodage X509_ASN_ENCODING et PKCS_7_ASN_ENCODING sont pris en charge.
 

Si la fonction échoue, GetLastError peut renvoyer une erreur d’encodage/décodage asN.1 ( Abstract Syntax Notation One ). Pour plus d’informations sur ces erreurs, consultez Valeurs de retour d’encodage/décodage ASN.1.

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

CertAddCTLContextToStore

CertFreeCTLContext

Fonctions de liste d’approbation de certificats