Método ICertServerExit::GetCertificateExtensionFlags (certif.h)
El método GetCertificateExtensionFlags obtiene las marcas de la extensión adquiridas por la llamada más reciente a ICertServerExit::GetCertificateExtension.
Sintaxis
HRESULT GetCertificateExtensionFlags(
[out] LONG *pExtFlags
);
Parámetros
[out] pExtFlags
Puntero a una variable LONG que contendrá las marcas de extensión.
Valor devuelto
C++
Si el método se ejecuta correctamente, el método devuelve S_OK y *pExtFlags se establece en la variable que contiene las marcas de la extensión adquirida por la llamada más reciente a ICertServerExit::GetCertificateExtension.Si se produce un error en el método, devuelve un valor HRESULT que indica el error. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.
VB
El valor devuelto es las marcas de la extensión adquirida por la llamada más reciente a ICertServerExit::GetCertificateExtension.Comentarios
Hay dos tipos de marcas usadas en extensiones: marcas de directiva y marcas de origen.
Tipo de marca | Explicación |
---|---|
Directiva | Proporciona información sobre la extensión de certificado. El módulo de directiva puede establecer marcas de directiva. |
Origen | Indica el módulo que establece la extensión de certificado. Los indicadores de origen solo se establecen mediante el motor de servidor. |
Se pueden devolver una o varias marcas de directiva desde una extensión. A continuación se muestran marcas de directiva predefinidas.
Valor de marca de directiva | Explicación |
---|---|
EXTENSION_CRITICAL_FLAG | Se trata de una extensión crítica. |
EXTENSION_DISABLE_FLAG | No se usará la extensión. |
También se puede devolver una de las marcas de origen siguientes.
Valor de marca de origen | Explicación |
---|---|
EXTENSION_ORIGIN_REQUEST | La extensión se extrajo de una matriz de extensiones almacenadas en el szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) o szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de una solicitud PKCS #10. |
EXTENSION_ORIGIN_POLICY | El módulo de directiva establece la extensión. |
EXTENSION_ORIGIN_ADMIN | El administrador establece la extensión. Para obtener más información, vea ICertAdmin::SetCertificateExtension. |
EXTENSION_ORIGIN_SERVER | El motor de servidor establece la extensión. |
EXTENSION_ORIGIN_RENEWALCERT | La extensión se extrajo del certificado almacenado en el atributo szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) de una solicitud de renovación PKCS #10. |
EXTENSION_ORIGIN_IMPORTEDCERT | La extensión se extrajo de un certificado importado (el certificado se pasó a ICertAdmin::ImportCertificate). |
EXTENSION_ORIGIN_PKCS7 | La extensión se extrajo de una matriz de extensiones almacenadas en el szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) o szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de una solicitud PKCS #7. |
Las máscaras predefinidas se proporcionan para facilitar el uso al determinar qué marcas se establecen en el valor devuelto. Se proporcionan las siguientes máscaras.
Valor de máscara | Explicación |
---|---|
EXTENSION_POLICY_MASK | Este valor (0x0000FFFF) se usa para examinar las marcas de directiva. |
EXTENSION_ORIGIN_MASK | Este valor (0x000F0000) se usa para examinar las marcas de origen. |
Es seguro usar los 8 bits altos de EXTENSION_POLICY_MASK para los datos personalizados. Estos bits se guardarán de forma persistente en la base de datos, pero no se escribirán en las extensiones de certificado.
Debe llamar a ICertServerExit::SetContext antes de usar este método.
Ejemplos
HRESULT hr;
LONG ExtFlags;
// pCertServerExit has been used to call SetContext previously.
hr = pCertServerExit->GetCertificateExtensionFlags(&ExtFlags);
// More than one policy flag may be set.
LONG ExtPolicyFlags = ExtFlags & EXTENSION_POLICY_MASK;
if (ExtPolicyFlags & EXTENSION_CRITICAL_FLAG)
{
// Perform the desired operation.
}
if (ExtPolicyFlags & EXTENSION_DISABLE_FLAG)
{
// Perform the desired operation.
}
// Only one origin flag can be set.
switch (ExtFlags & EXTENSION_ORIGIN_MASK)
{
case EXTENSION_ORIGIN_REQUEST:
// Extension was set in certificate request.
break;
case EXTENSION_ORIGIN_POLICY:
// Extension was set by policy module.
break;
case EXTENSION_ORIGIN_ADMIN:
// Extension was set by administrator.
break;
case EXTENSION_ORIGIN_SERVER:
// Extension was set by server engine.
break;
case EXTENSION_ORIGIN_RENEWALCERT:
// Extension was set by renewal certificate.
break;
case EXTENSION_ORIGIN_IMPORTEDCERT:
// Extension was set by imported certificate.
break;
case EXTENSION_ORIGIN_PKCS7:
// Extension was set by PKCS #7.
break;
default:
break;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | No se admite ninguno |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | certif.h (incluya Certsrv.h) |
Library | Certidl.lib |
Archivo DLL | Certcli.dll |
Consulte también
CCertServerExit
ICertAdmin::SetCertificateExtension