Fonction CertCreateSelfSignCertificate (wincrypt.h)

La fonction CertCreateSelfSignCertificate génère un certificat auto-signé et retourne un pointeur vers une structure CERT_CONTEXT qui représente le certificat.

Syntaxe

PCCERT_CONTEXT CertCreateSelfSignCertificate(
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]           PCERT_NAME_BLOB                 pSubjectIssuerBlob,
  [in]           DWORD                           dwFlags,
  [in, optional] PCRYPT_KEY_PROV_INFO            pKeyProvInfo,
  [in, optional] PCRYPT_ALGORITHM_IDENTIFIER     pSignatureAlgorithm,
  [in, optional] PSYSTEMTIME                     pStartTime,
  [in, optional] PSYSTEMTIME                     pEndTime,
  [optional]     PCERT_EXTENSIONS                pExtensions
);

Paramètres

[in, optional] hCryptProvOrNCryptKey

Handle d’un fournisseur de chiffrement utilisé pour signer le certificat créé. Si la valeur est NULL, les informations du paramètre pKeyProvInfo sont utilisées pour acquérir le handle nécessaire. Si pKeyProvInfo a également la valeur NULL, le type de fournisseur par défaut, PROV_RSA_FULL type de fournisseur, la spécification de clé par défaut, AT_SIGNATURE et un conteneur de clés nouvellement créé avec un nom de conteneur unique sont utilisés.

Ce handle doit être un handle HCRYPTPROV qui a été créé à l’aide de la fonction CryptAcquireContext ou un handle NCRYPT_KEY_HANDLE qui a été créé à l’aide de la fonction NCryptOpenKey . Les nouvelles applications doivent toujours passer le NCRYPT_KEY_HANDLE handle d’un fournisseur de services de chiffrement CNG (CSP).

[in] pSubjectIssuerBlob

Pointeur vers un objet BLOB qui contient le nom unique (DN) de l’objet du certificat. Ce paramètre ne peut pas avoir la valeur NULL. Au minimum, un pointeur vers un nom de domaine vide doit être fourni. Cet objet BLOB est normalement créé à l’aide de la fonction CertStrToName . Il peut également être créé à l’aide de la fonction CryptEncodeObject et en spécifiant le X509_NAME ou X509_UNICODE_NAME StructType.

[in] dwFlags

Ensemble d’indicateurs qui remplacent le comportement par défaut de cette fonction. Il peut s’agir de zéro ou d’une combinaison d’une ou plusieurs des valeurs suivantes.

Valeur Signification
CERT_CREATE_SELFSIGN_NO_KEY_INFO
2
Par défaut, le PCCERT_CONTEXT retourné fait référence aux clés privées en définissant le CERT_KEY_PROV_INFO_PROP_ID. Si vous ne souhaitez pas que le PCCERT_CONTEXT retourné référence des clés privées en définissant le CERT_KEY_PROV_INFO_PROP_ID, spécifiez CERT_CREATE_SELFSIGN_NO_KEY_INFO.
CERT_CREATE_SELFSIGN_NO_SIGN
1
Par défaut, le certificat en cours de création est signé. Si le certificat en cours de création n’est qu’un espace réservé factice, le certificat n’a peut-être pas besoin d’être signé. La signature du certificat est ignorée si CERT_CREATE_SELFSIGN_NO_SIGN est spécifié.

[in, optional] pKeyProvInfo

Pointeur vers une structure CRYPT_KEY_PROV_INFO . Avant la création d’un certificat, le fournisseur de solutions cloud est interrogé sur le fournisseur de clés, le type de fournisseur de clés et le nom du conteneur de clé . Si le fournisseur de solutions cloud interrogé ne prend pas en charge ces requêtes, la fonction échoue. Si le fournisseur par défaut ne prend pas en charge ces requêtes, une valeur pKeyProvInfo doit être spécifiée. RSA BASE prend en charge ces requêtes.

Si le paramètre pKeyProvInfo n’est pas NULL, les valeurs correspondantes sont définies dans la valeur CERT_KEY_PROV_INFO_PROP_ID du certificat généré. Vous devez vous assurer que tous les paramètres de la structure fournie sont correctement spécifiés.

[in, optional] pSignatureAlgorithm

Pointeur vers une structure CRYPT_ALGORITHM_IDENTIFIER . Si la valeur est NULL, l’algorithme par défaut, SHA1RSA, est utilisé.

[in, optional] pStartTime

Pointeur vers une structure SYSTEMTIME . Si la valeur est NULL, l’heure actuelle du système est utilisée par défaut.

[in, optional] pEndTime

Pointeur vers une structure SYSTEMTIME . Si la valeur est NULL, la valeur pStartTime plus un an sera utilisée par défaut.

[optional] pExtensions

Pointeur vers un tableau CERT_EXTENSIONS de structures CERT_EXTENSION . Par défaut, le tableau est vide. Un autre nom d’objet, si vous le souhaitez, peut être spécifié comme l’une de ces extensions.

Valeur retournée

Si la fonction réussit, une variable PCCERT_CONTEXT qui pointe vers le certificat créé est retournée. Si la fonction échoue, elle retourne NULL. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Comme le pEndTime doit être une date valide et est généré automatiquement s’il n’est pas fourni par l’utilisateur, des échecs inattendus peuvent facilement être provoqués lorsque cette API est appelée un jour bissextile sans logique d’application associée pour compenser. Pour plus d’informations, consultez Préparation à l’année bissextile.

Configuration requise

   
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_EXTENSION

CERT_EXTENSIONS

CRYPT_ALGORITHM_IDENTIFIER

CertStrToName

CryptEncodeObject

Obtenir la dernière erreur

PCCERT_CONTEXT

SYSTEMTIME