Compartilhar via


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

O método GetCertificateExtensionFlags obtém os sinalizadores da extensão adquirida pela chamada mais recente para ICertServerExit::GetCertificateExtension.

Sintaxe

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

Parâmetros

[out] pExtFlags

Um ponteiro para uma variável LONG que conterá os sinalizadores de extensão.

Retornar valor

C++

Se o método for bem-sucedido, o método retornará S_OK e *pExtFlags será definido como a variável que contém os sinalizadores da extensão adquirida pela chamada mais recente para ICertServerExit::GetCertificateExtension.

Se o método falhar, ele retornará um valor HRESULT que indica o erro. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.

VB

O valor retornado são os sinalizadores da extensão adquirida pela chamada mais recente para ICertServerExit::GetCertificateExtension.

Comentários

Há dois tipos de sinalizadores usados em extensões: sinalizadores de política e sinalizadores de origem.

Tipo de sinalizador Explicação
Política Fornece informações sobre a extensão de certificado. Os sinalizadores de política podem ser definidos pelo módulo de política.
Origem Indica o módulo que define a extensão de certificado. Os sinalizadores de origem são definidos apenas pelo mecanismo de servidor.
 

Um ou mais sinalizadores de política podem ser retornados de uma extensão. Veja a seguir os sinalizadores de política predefinidos.

Valor do sinalizador de política Explicação
EXTENSION_CRITICAL_FLAG Essa é uma extensão crítica.
EXTENSION_DISABLE_FLAG A extensão não será usada.
 

Um dos sinalizadores de origem a seguir também pode ser retornado.

Valor do sinalizador de origem Explicação
EXTENSION_ORIGIN_REQUEST A extensão foi extraída de uma matriz de extensões armazenadas no szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) ou szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de uma solicitação PKCS nº 10.
EXTENSION_ORIGIN_POLICY O módulo de política define a extensão.
EXTENSION_ORIGIN_ADMIN O administrador definiu a extensão. Para obter mais informações, consulte ICertAdmin::SetCertificateExtension.
EXTENSION_ORIGIN_SERVER O mecanismo de servidor define a extensão.
EXTENSION_ORIGIN_RENEWALCERT A extensão foi extraída do certificado armazenado no atributo szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) de uma solicitação de renovação PKCS nº 10.
EXTENSION_ORIGIN_IMPORTEDCERT A extensão foi extraída de um certificado importado (o certificado foi passado para ICertAdmin::ImportCertificate).
EXTENSION_ORIGIN_PKCS7 A extensão foi extraída de uma matriz de extensões armazenadas no szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) ou szOID_RSA_certExtensions (1.2.840.113549.1.9.14) de uma solicitação PKCS nº 7.
 

Máscaras predefinidas são fornecidas para facilitar o uso na determinação de quais sinalizadores são definidos no valor retornado. As máscaras a seguir são fornecidas.

Valor de máscara Explicação
EXTENSION_POLICY_MASK Esse valor (0x0000FFFF) é usado para examinar sinalizadores de política.
EXTENSION_ORIGIN_MASK Esse valor (0x000F0000) é usado para examinar sinalizadores de origem.
 

É seguro usar os 8 bits altos de EXTENSION_POLICY_MASK para dados personalizados. Esses bits serão salvos persistentemente no banco de dados, mas não serão gravados nas extensões de certificado.

Você deve chamar ICertServerExit::SetContext antes de usar esse método.

Exemplos

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 Valor
Cliente mínimo com suporte Nenhum compatível
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho certif.h (inclua Certsrv.h)
Biblioteca Certidl.lib
DLL Certcli.dll

Confira também

CCertServerExit

ICertAdmin::SetCertificateExtension

ICertServerExit

ICertServerExit::GetCertificateExtension

IEnumCERTVIEWEXTENSION::GetFlags