Compartir a través de


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

ICertServerExit

ICertServerExit::GetCertificateExtension

IEnumCERTVIEWEXTENSION::GetFlags