Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El método InitializeFromCertificate inicializa la solicitud de certificado mediante un certificado existente. El certificado se encuentra en una matriz de bytes codificada mediante reglas de codificación distintivos (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.
Syntax
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 del certificado o un número de serie en lugar de un certificado codificado. Si lo hace, la función busca los almacenes locales adecuados para 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 del equipo 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 con codificación 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 siguientes valores. 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.
| Importancia | Meaning |
|---|---|
|
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 firmante. |
|
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 ejecuta 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, entre otros, los de la tabla siguiente. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.
| Código de retorno | Description |
|---|---|
|
El objeto de solicitud de certificado ya se ha inicializado. |
Observaciones
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 las opciones de herencia 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 el objeto de solicitud interno.
Requisitos
| Requirement | Importancia |
|---|---|
| Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
| Servidor mínimo admitido | Windows Server 2008 [solo aplicaciones de escritorio] |
| de la plataforma de destino de | Windows |
| Header | certenroll.h |
| DLL de |
CertEnroll.dll |