Compartir a través de


Método ICertServerPolicy::GetCertificateExtensionFlags (certif.h)

El método GetCertificateExtensionFlags recupera las marcas asociadas a la extensión adquiridas por la llamada más reciente a GetCertificateExtension.

Sintaxis

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

Parámetros

[out] pExtFlags

Puntero a una variable LONG que contiene las marcas de extensión.

Valor devuelto

C++

Si el método se ejecuta correctamente, el método devuelve S_OK y el parámetro pExtFlags contiene las marcas de la extensión adquirida por la llamada más reciente a 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 GetCertificateExtension.

Comentarios

Se debe llamar a los métodos SetContext y GetCertificateExtension antes de GetCertificateExtensionFlags. El método SetContext especifica qué solicitud se usa como contexto actual y el método GetCertificateExtension recupera las extensiones de la solicitud.

Las extensiones pueden contener marcas de origen y directivas. Las marcas de directiva proporcionan información sobre la extensión de certificado. El módulo de directiva puede establecer marcas de directiva. Las marcas de origen indican 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.

Ejemplos

HRESULT  hr;
LONG     ExtFlags;
// pCertServerPolicy has been used to call SetContext previously.
hr = pCertServerPolicy->GetCertificateExtensionFlags( &ExtFlags);

// More than one policy flag might be set.
LONG ExtPolicyFlags = ExtFlags & EXTENSION_POLICY_MASK;

if (ExtPolicyFlags & EXTENSION_CRITICAL_FLAG)
{
    // Do something.
}

if (ExtPolicyFlags & EXTENSION_DISABLE_FLAG)
{
    // Do something.
}

// 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;
    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

ICertAdmin::SetCertificateExtension

ICertServerPolicy

ICertServerPolicy::GetCertificateExtension

ICertServerPolicy::SetContext

IEnumCERTVIEWEXTENSION::GetFlags