Condividi tramite


Funzione CertCreateSelfSignCertificate (wincrypt.h)

La funzione CertCreateSelfSignCertificate compila un certificato autofirmato e restituisce un puntatore a una struttura CERT_CONTEXT che rappresenta il certificato.

Sintassi

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
);

Parametri

[in, optional] hCryptProvOrNCryptKey

Handle di un provider di crittografia usato per firmare il certificato creato. Se NULL, le informazioni del parametro pKeyProvInfo vengono usate per acquisire l'handle necessario. Se pKeyProvInfo è anche NULL, vengono usati il tipo di provider predefinito, PROV_RSA_FULL tipo di provider, la specifica di chiave predefinita, AT_SIGNATURE e un contenitore di chiavi appena creato con un nome contenitore univoco.

Questo handle deve essere un handle HCRYPTPROV creato usando la funzione CryptAcquireContext o un handle NCRYPT_KEY_HANDLE creato tramite la funzione NCryptOpenKey . Le nuove applicazioni devono sempre passare l'handle NCRYPT_KEY_HANDLE di un provider di servizi di crittografia CNG (CSP).

[in] pSubjectIssuerBlob

Puntatore a un BLOB che contiene il nome distinto (DN) per l'oggetto del certificato. Questo parametro non può essere NULL. È necessario specificare un puntatore a un DN vuoto. Questo BLOB viene in genere creato usando la funzione CertStrToName . Può anche essere creato usando la funzione CryptEncodeObject e specificando il X509_NAME o X509_UNICODE_NAME StructType.

[in] dwFlags

Set di flag che eseguono l'override del comportamento predefinito di questa funzione. Può essere zero o una combinazione di uno o più dei valori seguenti.

Valore Significato
CERT_CREATE_SELFSIGN_NO_KEY_INFO
2
Per impostazione predefinita, il PCCERT_CONTEXT restituito fa riferimento alle chiavi private impostando il CERT_KEY_PROV_INFO_PROP_ID. Se non si desidera che il PCCERT_CONTEXT restituito faccia riferimento alle chiavi private impostando il CERT_KEY_PROV_INFO_PROP_ID, specificare CERT_CREATE_SELFSIGN_NO_KEY_INFO.
CERT_CREATE_SELFSIGN_NO_SIGN
1
Per impostazione predefinita, il certificato creato è firmato. Se il certificato creato è solo un segnaposto fittizio, potrebbe non essere necessario firmare il certificato. La firma del certificato viene ignorata se viene specificato CERT_CREATE_SELFSIGN_NO_SIGN.

[in, optional] pKeyProvInfo

Puntatore a una struttura CRYPT_KEY_PROV_INFO . Prima di creare un certificato, viene eseguita una query sul provider di chiavi, sul tipo di provider di chiavi e sul nome del contenitore di chiavi . Se il CSP sottoposto a query non supporta queste query, la funzione ha esito negativo. Se il provider predefinito non supporta queste query, è necessario specificare un valore pKeyProvInfo . RSA BASE supporta queste query.

Se il parametro pKeyProvInfo non è NULL, i valori corrispondenti vengono impostati nel valore CERT_KEY_PROV_INFO_PROP_ID del certificato generato. È necessario assicurarsi che tutti i parametri della struttura fornita siano specificati correttamente.

[in, optional] pSignatureAlgorithm

Puntatore a una struttura CRYPT_ALGORITHM_IDENTIFIER . Se NULL, viene usato l'algoritmo predefinito SHA1RSA.

[in, optional] pStartTime

Puntatore a una struttura SYSTEMTIME . Se NULL, l'ora corrente del sistema viene utilizzata per impostazione predefinita.

[in, optional] pEndTime

Puntatore a una struttura SYSTEMTIME . Se NULL, il valore pStartTime più un anno verrà usato per impostazione predefinita.

[optional] pExtensions

Puntatore a una matrice di CERT_EXTENSIONS di strutture CERT_EXTENSION . Per impostazione predefinita, la matrice è vuota. Un nome soggetto alternativo, se necessario, può essere specificato come una di queste estensioni.

Valore restituito

Se la funzione ha esito positivo, viene restituita una variabile PCCERT_CONTEXT che punta al certificato creato. Se la funzione ha esito negativo, restituisce NULL. Per informazioni sugli errori estesi, chiamare GetLastError.

Commenti

Poiché pEndTime deve essere una data valida e viene generata automaticamente se non viene fornita dall'utente, gli errori imprevisti possono essere facilmente causati quando questa API viene chiamata in un giorno intercalare senza associare la logica dell'app per compensare. Per altre informazioni, vedere preparazione dell'anno bisestile.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CERT_EXTENSION

CERT_EXTENSIONS

CRYPT_ALGORITHM_IDENTIFIER

CertStrToName

CryptEncodeObject

Getlasterror

PCCERT_CONTEXT

SYSTEMTIME