IX509CertificateRequestPkcs7::InitializeFromCertificate (certenroll.h)
El método InitializeFromCertificate inicializa la solicitud de certificado mediante un certificado existente. El certificado está incluido en una matriz de bytes codificada mediante reglas de codificación distinguida (DER) tal como se define en el estándar Notación de sintaxis abstracta Uno (ASN.1). La matriz de bytes con codificación DER se representa mediante una cadena que es una secuencia binaria pura o está codificada en Unicode.
Sintaxis
HRESULT InitializeFromCertificate(
[in] X509CertificateEnrollmentContext Context,
[in] VARIANT_BOOL RenewalRequest,
[in] BSTR strCertificate,
[in] EncodingType Encoding,
[in] X509RequestInheritOptions InheritOptions
);
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.
[in] RenewalRequest
Un VARIANT_BOOL que indica si la entidad final solicita que se renueve el certificado identificado por el parámetro strCertificate .
[in] strCertificate
Variable BSTR que contiene el certificado codificado en DER.
A partir de Windows 7 y Windows Server 2008 R2, puede especificar una impresión digital de certificado o un número de serie en lugar de un certificado codificado. Al hacerlo, la función buscará en los almacenes locales adecuados el certificado coincidente. Tenga en cuenta los siguientes puntos:
- El BSTR debe ser un número par de dígitos hexadecimales.
- Se omite el espacio en blanco entre pares hexadecimales.
- El parámetro Encoding debe establecerse en XCN_CRYPT_STRING_HEXRAW.
- El parámetro Context determina si se buscan los almacenes locales o de equipos o ambos.
- Si se necesita una clave privada, solo se buscan los almacenes personales y de solicitudes.
- Si no se necesita una clave privada, también se buscan los almacenes de CA raíz e intermedio.
[in] Encoding
Valor de enumeración EncodingType que especifica el tipo de codificación aplicada al certificado codificado en DER. El valor predeterminado es XCN_CRYPT_STRING_BASE64.
[in] InheritOptions
Valor de enumeración X509RequestInheritOptions que especifica cómo crear el objeto de solicitud de certificado a partir del certificado existente. Para especificar cómo heredar una clave, elija uno de los valores siguientes. El valor predeterminado es InheritDefault.
También puede usar una operación AND bit a bit para combinar el valor de herencia de claves con cualquier combinación de los valores siguientes.
Valor | Significado |
---|---|
|
Hereda el certificado de renovación. Al especificar esta marca, se establece un valor ICertPropertyRenewal . |
|
Hereda la plantilla de certificado. |
|
Hereda el nombre distintivo del sujeto. |
|
Hereda las extensiones pertinentes del certificado. |
|
Hereda la extensión SubjectAlternativeName . |
|
Hereda el período de validez. |
También puede especificar InheritNone para evitar que cualquiera de las marcas de la tabla anterior (marcas no relacionadas con la herencia de claves) se implemente de forma predeterminada. Si especifica InheritNone , pero también especifica una marca no relacionada con la herencia de claves, el método devuelve E_INVALIDARG.
Si establece el parámetro InheritOptions en cero (0) o especifica InheritDefault y no especifica un valor de herencia de clave, InheritNewSimilarKey se usa de forma predeterminada.
Si establece el parámetro InheritOptions en cero (0) o especifica InheritDefault y no especifica ninguno de los valores no relacionados con la herencia de claves, las marcas siguientes se establecen de forma predeterminada:
- InheritSubjectFlag
- InheritExtensionsFlag
- InheritValidityPeriodFlag
- InheritTemplateFlag (si el certificado contiene una extensión de plantilla)
- InheritRenewalCertificateFlag (si el cliente renueva un certificado)
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 |
---|---|
|
El objeto de solicitud de certificado ya se ha inicializado. |
Comentarios
El método InitializeFromCertificate valida las opciones especificadas en el parámetro InheritOptions e inicializa un nuevo objeto de solicitud PKCS #7 realizando las siguientes acciones:
- Crea un objeto de solicitud PKCS #10 a partir del certificado, el contexto de inscripción y hereda las opciones especificadas en la entrada. El objeto PKCS #10 hereda:
- La plantilla si existe en el certificado original y establece el valor InheritTemplateFlag .
- Nombre distintivo del firmante si especifica InheritSubjectFlag.
- Nombre alternativo del firmante si especifica InheritSubjectAltNameFlag.
- Extensiones si especifica InheritExtensionsFlag.
- Copia el certificado original, si se va a renovar, a la propiedad RenewalCertificate en la nueva solicitud PKCS #10.
- Crea un ISignerCertificate a partir del certificado original, si se va a renovar y lo establece en la propiedad SignerCertificate .
- Establece la solicitud PKCS #10 como objeto de solicitud interna.
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 |