Partager via


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

La méthode GetCertificateExtensionFlags obtient les indicateurs de l’extension acquise par l’appel le plus récent à ICertServerExit ::GetCertificateExtension.

Syntaxe

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

Paramètres

[out] pExtFlags

Pointeur vers une variable LONG qui contiendra les indicateurs d’extension.

Valeur retournée

C++

Si la méthode réussit, la méthode retourne S_OK, et *pExtFlags est défini sur la variable qui contient les indicateurs de l’extension acquise par l’appel le plus récent à ICertServerExit ::GetCertificateExtension.

Si la méthode échoue, elle retourne une valeur HRESULT qui indique l’erreur. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

VB

La valeur de retour est les indicateurs de l’extension acquise par l’appel le plus récent à ICertServerExit ::GetCertificateExtension.

Remarques

Il existe deux types d’indicateurs utilisés dans les extensions : les indicateurs de stratégie et les indicateurs d’origine.

Type d’indicateur Explication
Stratégie Fournit des informations sur l’extension de certificat. Les indicateurs de stratégie peuvent être définis par le module de stratégie.
Origine Indique le module qui définit l’extension de certificat. Les indicateurs d’origine sont définis uniquement par le moteur de serveur.
 

Un ou plusieurs indicateurs de stratégie peuvent être retournés à partir d’une extension. Voici des indicateurs de stratégie prédéfinis.

Valeur de l’indicateur de stratégie Explication
EXTENSION_CRITICAL_FLAG Il s’agit d’une extension critique.
EXTENSION_DISABLE_FLAG L’extension ne sera pas utilisée.
 

L’un des indicateurs d’origine suivants peut également être retourné.

Valeur de l’indicateur d’origine Explication
EXTENSION_ORIGIN_REQUEST L’extension a été extraite d’un tableau d’extensions stocké dans l’attribut szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.14) ou szOID_RSA_certExtensions (1.2.840.113549.1.9.14) d’une requête PKCS #10.
EXTENSION_ORIGIN_POLICY Le module de stratégie définit l’extension.
EXTENSION_ORIGIN_ADMIN L’administrateur a défini l’extension. Pour plus d’informations, consultez ICertAdmin ::SetCertificateExtension.
EXTENSION_ORIGIN_SERVER Le moteur de serveur a défini l’extension.
EXTENSION_ORIGIN_RENEWALCERT L’extension a été extraite du certificat stocké dans l’attribut szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) d’une demande de renouvellement PKCS #10.
EXTENSION_ORIGIN_IMPORTEDCERT L’extension a été extraite d’un certificat importé (le certificat a été transmis à ICertAdmin ::ImportCertificate).
EXTENSION_ORIGIN_PKCS7 L’extension a été extraite d’un tableau d’extensions stocké dans l’attribut szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.14) ou szOID_RSA_certExtensions (1.2.840.113549.1.9.14) d’une requête PKCS #7.
 

Des masques prédéfinis sont fournis pour faciliter l’utilisation des indicateurs définis dans la valeur de retour. Les masques suivants sont fournis.

Valeur du masque Explication
EXTENSION_POLICY_MASK Cette valeur (0x0000FFFF) est utilisée pour examiner les indicateurs de stratégie.
EXTENSION_ORIGIN_MASK Cette valeur (0x000F0000) est utilisée pour examiner les indicateurs d’origine.
 

Il est sûr d’utiliser les 8 bits élevés de EXTENSION_POLICY_MASK pour les données personnalisées. Ces bits seront enregistrés de manière permanente dans la base de données, mais ne seront pas écrits dans les extensions de certificat.

Vous devez appeler ICertServerExit ::SetContext avant d’utiliser cette méthode.

Exemples

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête certif.h (include Certsrv.h)
Bibliothèque Certidl.lib
DLL Certcli.dll

Voir aussi

CCertServerExit

ICertAdmin ::SetCertificateExtension

ICertServerExit

ICertServerExit ::GetCertificateExtension

IEnumCERTVIEWEXTENSION ::GetFlags