CertAddSerializedElementToStore, fonction (wincrypt.h)

La fonction CertAddSerializedElementToStore ajoute un certificat sérialisé, une liste de révocation de certificats (CRL) ou un élément de liste d’approbation de certificats (CTL) au magasin. L’élément sérialisé contient le certificat encodé, la liste de révocation de certificats ou la CTL et ses propriétés étendues. Les propriétés étendues sont associées à un certificat et ne font pas partie d’un certificat tel qu’émis par une autorité de certification. Les propriétés étendues ne sont pas disponibles sur un certificat lorsqu’il est utilisé sur une plateforme non-Microsoft.

Syntaxe

BOOL CertAddSerializedElementToStore(
  [in]  HCERTSTORE hCertStore,
  [in]  const BYTE *pbElement,
  [in]  DWORD      cbElement,
  [in]  DWORD      dwAddDisposition,
  [in]  DWORD      dwFlags,
  [in]  DWORD      dwContextTypeFlags,
  [out] DWORD      *pdwContextType,
  [out] const void **ppvContext
);

Paramètres

[in] hCertStore

Handle d’un magasin de certificats dans lequel le certificat créé sera stocké. Si hCertStore a la valeur NULL, la fonction crée une copie d’un contexte de certificat, de liste de révocation de certificats ou de liste de révocation de certificats avec ses propriétés étendues, mais le certificat, la liste de révocation de certificats ou la CTL n’est conservé dans aucun magasin.

[in] pbElement

Pointeur vers une mémoire tampon qui contient les informations de certificat, de liste de révocation de certificats ou de liste de certificats à sérialiser et à ajouter au magasin de certificats.

[in] cbElement

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

[in] dwAddDisposition

Spécifie l’action à entreprendre si le certificat, la liste de révocation de certificats ou la liste de révocation de certificats existe déjà dans le magasin. Les valeurs de disposition actuellement définies sont indiquées dans le tableau suivant.

Valeur Signification
CERT_STORE_ADD_NEW
Si le certificat, la liste de révocation de certificats ou la CTL est nouveau, il est créé et conservé dans le magasin. L’opération échoue si un certificat, une liste de révocation de certificats ou une liste de révocation de certificats identiques existe déjà dans le magasin. Le dernier code d’erreur est défini sur CRYPT_E_EXISTS.
CERT_STORE_ADD_USE_EXISTING
Si le certificat, la liste de révocation de certificats ou la CTL est nouveau, il est ajouté au magasin. S’il existe déjà un certificat, une liste de révocation de certificats ou une liste de révocation de certificats identiques, l’élément existant est utilisé. Si ppvContext n’est pas NULL, le contexte existant est dupliqué. La fonction ajoute uniquement des propriétés qui n’existent pas déjà. Les propriétés de hachage SHA-1 et MD5 ne sont pas copiées.
CERT_STORE_ADD_REPLACE_EXISTING
Si un certificat, une liste de révocation de certificats ou une liste de certificats identiques existe déjà dans le magasin, le contexte de certificat, de liste de révocation de certificats ou de liste de révocation de certificats existant est supprimé avant de créer et d’ajouter le nouveau contexte.
CERT_STORE_ADD_ALWAYS
Aucune case activée n’est effectuée pour déterminer s’il existe déjà un certificat, une liste de révocation de certificats ou une CTL identiques. Un nouvel élément est toujours créé. Cela peut entraîner des doublons dans le magasin. Pour déterminer si l’élément existe déjà dans le magasin, appelez CertGetCRLFromStore ou CertGetSubjectCertificateFromStore.
CERT_STORE_ADD_NEWER
S’il existe une liste de révocation de certificats ou une liste de révocation de certificats correspondantes, la fonction compare les heures NotBefore sur la liste de révocation de certificats ou la liste de révocation de certificats correspondantes. Si la liste de révocation de certificats ou CTL existante a une durée NotBefore inférieure à l’heure NotBefore sur le nouvel élément, l’ancien élément ou lien est remplacé comme avec CERT_STORE_ADD_REPLACE_EXISTING. Si l’élément existant a une heure NotBefore supérieure ou égale à l’heure NotBefore sur l’élément à ajouter, la fonction échoue avec GetLastError qui retourne le code CRYPT_E_EXISTS.

Si une liste de révocation de certificats ou une CTL correspondante ou un lien vers une liste de révocation de certificats ou une liste de certificats correspondantes est introuvable dans le magasin, un nouvel élément est ajouté au magasin.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
L’action est la même que pour CERT_STORE_ADD_NEWER. Toutefois, si une liste de révocation de certificats ou une CTL plus anciennes est remplacée, les propriétés de l’élément plus ancien sont incorporées dans le remplacement.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Si un certificat correspondant existe dans le magasin, le contexte existant est supprimé avant de créer et d’ajouter le nouveau contexte. Le nouveau contexte ajouté hérite des propriétés du certificat existant.

[in] dwFlags

Réservé pour une utilisation ultérieure et doit être égal à zéro.

[in] dwContextTypeFlags

Spécifie les contextes qui peuvent être ajoutés. Par exemple, pour ajouter un certificat, une liste de révocation de certificats ou une CTL, définissez dwContextTypeFlagssur CERT_STORE_CERTIFICATE_CONTEXT_FLAG ou CERT_STORE_CRL_CONTEXT_FLAG.

Les indicateurs de type de contexte actuellement définis sont présentés dans le tableau suivant.

Valeur Signification
CERT_STORE_ALL_CONTEXT_FLAG
Ajoute n’importe quel contexte.
CERT_STORE_CERTIFICATE_CONTEXT_FLAG
Ajoute uniquement un contexte de certificat.
CERT_STORE_CRL_CONTEXT_FLAG
Ajoute uniquement un contexte de liste de révocation de certificats.
CERT_STORE_CTL_CONTEXT_FLAG
Ajoute uniquement un contexte CTL.

[out] pdwContextType

Pointeur vers le type de contexte de l’élément sérialisé ajouté. Il s’agit d’un paramètre facultatif qui peut être NULL, ce qui indique que l’application appelante ne nécessite pas le type de contexte .

Les types de contexte actuellement définis sont présentés dans le tableau suivant.

Valeur Signification
CERT_STORE_CERTIFICATE_CONTEXT
Certificats
CERT_STORE_CRL_CONTEXT
listes de révocation de certificats
CERT_STORE_CTL_CONTEXT
listes de certificats de confiance

[out] ppvContext

Pointeur vers un pointeur vers le contexte du certificat décodé, de la liste de révocation de certificats ou de la liste de révocation de certificats. Il s’agit d’un paramètre facultatif qui peut être NULL, ce qui indique que l’application appelante ne nécessite pas le contexte du certificat, de la liste de révocation de certificats ou de la CTL ajouté ou existant.

Si ppvContext n’a pas la valeur NULL, il doit s’agir de l’adresse d’un pointeur vers un CERT_CONTEXT, un CRL_CONTEXT ou un CTL_CONTEXT. Lorsque l’application a terminé avec le contexte, le contexte doit être libéré à l’aide de CertFreeCertificateContext pour un certificat, CertFreeCRLContext pour une liste de révocation de certificats ou CertFreeCTLContext pour une CTL.

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Certains codes d’erreur possibles suivent.

Code de retour Description
CRYPT_E_EXISTS
Si le paramètre dwAddDisposition est défini sur CERT_STORE_ADD_NEW, le certificat, la liste de révocation de certificats ou la CTL existe déjà dans le magasin.
E_INVALIDARG
Une valeur de disposition non valide a été spécifiée dans le paramètre dwAddDisposition .
 

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

CertSerializeCRLStoreElement

CertSerializeCertificateStoreElement

Fonctions de maintenance du magasin de certificats et de certificats