Compartir a través de


IX509CertificateRequestPkcs10::InitializeFromPrivateKey (certenroll.h)

El método InitializeFromPrivateKey inicializa la solicitud de certificado mediante un objeto IX509PrivateKey y, opcionalmente, una plantilla. Este método está habilitado para web.

Sintaxis

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

Parámetros

[in] Context

Valor de enumeración X509CertificateEnrollmentContext que especifica si el certificado solicitado está pensado para un usuario final, un equipo o un administrador que actúa en nombre del equipo. Puede ser uno de los siguientes valores. Sin embargo, si se establece la propiedad MachineContext de la clave privada , debe especificar el valor de enumeración ContextMachine .

Valor Significado
ContextUser
El certificado se solicita para un usuario final.
ContextMachine
El certificado se solicita para un equipo.
ContextAdministratorForceMachine
Un administrador que actúa en nombre de un equipo solicita el certificado.

[in] pPrivateKey

Puntero a una interfaz IX509PrivateKey que representa la clave privada.

[in, optional] strTemplateName

Variable BSTR que contiene el nombre común (CN) de la plantilla tal como aparece en Active Directory o el identificador de objeto decimal punteado. Se trata de un parámetro opcional.

Valor devuelto

Si la función se realiza correctamente, la función devuelve S_OK.

Si se produce un error en la función, devuelve un valor HRESULT que indica el error. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

Código devuelto Descripción
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
El objeto de solicitud de certificado ya se ha inicializado.

Comentarios

Si especifica una plantilla, el método InitializeFromPrivateKey realiza las siguientes acciones:

  • Agrega las extensiones especificadas por la plantilla a una colección IX509Extensions .
  • Crea una colección IObjectIds y la rellena con el XCN_OID_KEY_USAGE predeterminado y XCN_OID_BASIC_CONSTRAINTS2 identificadores de objeto. Si la plantilla indica que estos OID no son críticos, se quitan de la colección. Se agregan los OID marcados como críticos por la plantilla.
  • Establece la propiedad SmimeCapabilities si la plantilla admite algoritmos simétricos.
  • Establece la propiedad AlternateSignatureAlgorithm si la plantilla requiere un OID de algoritmo de firma discreto.
  • Crea un objeto IX509SignatureInformation .
  • Crea un OID de algoritmo hash si el algoritmo se especifica en la plantilla y lo establece en el objeto IX509SignatureInformation .
  • Recupera un OID de algoritmo de cifrado asimétrico, si existe, de la plantilla y lo establece en el objeto IX509SignatureInformation .
  • Rellena muchas de las propiedades IX509PrivateKey de la configuración de plantilla.

Tanto si se especifica una plantilla como si no se especifica la propiedad CSPInformations , el método crea una colección ICspInformations a partir de los proveedores instalados en el equipo.

No se crea ninguna clave privada en este momento. Si el objeto IX509PrivateKey pasado al método no representa una clave existente, se crea una clave cuando se llama al método Encode . La clave se creará mediante el proveedor predeterminado si no se especificó ninguna plantilla y no se establece la propiedad ProviderName en IX509PrivateKey . Cuando existe una clave privada, se establece en la propiedad PrivateKey .

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado certenroll.h
Archivo DLL CertEnroll.dll

Consulte también

IX509CertificateRequestPkcs10