Méthode IEnumCERTVIEWEXTENSION ::GetFlags (certview.h)
La méthode GetFlags récupère les indicateurs de stratégie et d’origine de l’extension actuelle dans la séquence extension-énumération.
Les indicateurs de stratégie et d’origine sont retournés dans une variable, et des masques de bits sont fournis pour récupérer les valeurs individuelles.
Syntaxe
HRESULT GetFlags(
[out] LONG *pFlags
);
Paramètres
[out] pFlags
Pointeur vers un type LONG qui contient les indicateurs de stratégie et d’origine de l’extension. Cette méthode échoue si le paramètre pFlags a la valeur NULL.
Valeur retournée
C++
Si la méthode réussit, la méthode retourne S_OK.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 représente les valeurs de stratégie et d’origine de l’extension.Remarques
Cette méthode est utilisée pour récupérer les indicateurs de stratégie et d’origine de l’extension actuellement référencée par la séquence d’énumération d’extension.
Les indicateurs de stratégie fournissent des informations sur l’extension de certificat et peuvent être définis par le module de stratégie.
Les indicateurs d’origine indiquent le module qui définit l’extension de certificat et 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.1.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. |
EXTENSION_ORIGIN_SERVER | Le moteur de serveur définit 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é passé à 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.1.14) ou szOID_RSA_certExtensions (1.2.840.113549.1.9.14) d’une requête PKCS #7. |
Les 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. |
Si la séquence d’énumération d’extension ne fait pas référence à une extension valide, GetFlags échoue. Utilisez l’une des méthodes suivantes pour parcourir l’énumération :
- IEnumCERTVIEWEXTENSION ::Reset : passe à l’extension suivante dans la séquence d’énumération.
- IEnumCERTVIEWEXTENSION ::Next : passe à l’extension suivante dans la séquence d’énumération.
- IEnumCERTVIEWEXTENSION ::Skip : ignore un nombre spécifié d’extensions.
Exemples
HRESULT hr;
LONG ExtFlags;
// pEnumExt is previously instantiated IEnumCERTVIEWEXTENSION object
hr = pEnumExt->GetFlags(&ExtFlags);
if (S_OK != hr)
printf("Failed GetFlags - %x\n", hr);
else
{
LONG ExtPol, ExtOrig;
ExtPol = ExtFlags & EXTENSION_POLICY_MASK;
if (ExtPol & EXTENSION_CRITICAL_FLAG)
printf("The extension is critical\n");
if (ExtPol & EXTENSION_DISABLE_FLAG )
printf("The extension is disabled\n");
ExtOrig = ExtFlags & EXTENSION_ORIGIN_MASK;
switch (ExtOrig)
{
case EXTENSION_ORIGIN_REQUEST:
printf("Extension originated by PKCS #10 Request\n");
break;
case EXTENSION_ORIGIN_POLICY:
printf("Extension originated by Policy\n");
break;
case EXTENSION_ORIGIN_ADMIN:
printf("Extension originated by Admin\n");
break;
case EXTENSION_ORIGIN_SERVER:
printf("Extension originated by Server\n");
break;
case EXTENSION_ORIGIN_RENEWALCERT:
printf("Extension originated by Renewal Request\n");
break;
case EXTENSION_ORIGIN_IMPORTEDCERT:
printf("Extension originated by an imported "
"certificate\n");
break;
case EXTENSION_ORIGIN_PKCS7:
printf("Extension originated by PKCS #7 Request\n");
break;
default:
printf("Unknown extension origin\n");
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 | certview.h (inclure Certsrv.h) |
Bibliothèque | Certidl.lib |
DLL | Certadm.dll |
Voir aussi
IEnumCERTVIEWEXTENSION ::GetName