Metodo IX509CertificateRequestPkcs10::InitializeFromPrivateKey (certenroll.h)

Il metodo InitializeFromPrivateKey inizializza la richiesta di certificato utilizzando un oggetto IX509PrivateKey e, facoltativamente, un modello. Questo metodo è abilitato per il Web.

Sintassi

HRESULT InitializeFromPrivateKey(
  [in]           X509CertificateEnrollmentContext Context,
  [in]           IX509PrivateKey                  *pPrivateKey,
  [in, optional] BSTR                             strTemplateName
);

Parametri

[in] Context

Valore di enumerazione X509CertificateEnrollmentContext che specifica se il certificato richiesto è destinato a un utente finale, a un computer o a un amministratore che agisce per conto del computer. Può trattarsi di uno dei valori seguenti. Tuttavia, se la proprietà MachineContext della chiave privata è impostata, è necessario specificare il valore di enumerazione ContextMachine .

Valore Significato
ContextUser
Il certificato viene richiesto per un utente finale.
ContextMachine
Il certificato viene richiesto per un computer.
ContextAdministratorForceMachine
Il certificato viene richiesto da un amministratore che agisce per conto di un computer.

[in] pPrivateKey

Puntatore a un'interfaccia IX509PrivateKey che rappresenta la chiave privata.

[in, optional] strTemplateName

Variabile BSTR che contiene il nome comune (CN) del modello come viene visualizzato in Active Directory o nell'identificatore di oggetto decimale punteggiato. Questo parametro è facoltativo.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce S_OK.

Se la funzione ha esito negativo, restituisce un valore HRESULT che indica l'errore. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente. Per un elenco dei codici di errore comuni, vedere Valori HRESULT comuni.

Codice restituito Descrizione
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
L'oggetto richiesta certificato è già stato inizializzato.

Commenti

Se si specifica un modello, il metodo InitializeFromPrivateKey esegue le azioni seguenti:

  • Aggiunge le estensioni specificate dal modello a un insieme IX509Extensions .
  • Crea un insieme IObjectIds e lo popola con gli identificatori di oggetto predefiniti XCN_OID_KEY_USAGE e XCN_OID_BASIC_CONSTRAINTS2. Se il modello indica che questi URI non sono critici, vengono rimossi dalla raccolta. Vengono aggiunti gli URI contrassegnati come critici dal modello.
  • Imposta la proprietà SmimeCapabilities se il modello supporta algoritmi simmetrici.
  • Imposta la proprietà AlternateSignatureAlgorithm se il modello richiede un OID dell'algoritmo di firma discreto.
  • Crea un oggetto IX509SignatureInformation .
  • Crea un OID dell'algoritmo hash se l'algoritmo viene specificato nel modello e lo imposta sull'oggetto IX509SignatureInformation .
  • Recupera un OID dell'algoritmo di crittografia asimmetrica, se esistente, dal modello e lo imposta sull'oggetto IX509SignatureInformation .
  • Popola molte delle proprietà IX509PrivateKey dalle impostazioni del modello.

Se si specifica o meno un modello, se la proprietà CSPInformations non è specificata, il metodo crea un insieme ICspInformations dai provider installati nel computer.

A questo punto non viene creata alcuna chiave privata. Se l'oggetto IX509PrivateKey passato al metodo non rappresenta una chiave esistente, viene creata una chiave quando viene chiamato il metodo Encode . La chiave verrà creata utilizzando il provider predefinito se non è stato specificato alcun modello e la proprietà ProviderName in IX509PrivateKey non è impostata. Quando esiste una chiave privata, viene impostata sulla proprietà PrivateKey .

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione certenroll.h
DLL CertEnroll.dll

Vedi anche

IX509CertificateRequestPkcs10