Метод ICertServerPolicy::GetCertificateExtensionFlags (certif.h)
Метод GetCertificateExtensionFlags извлекает флаги, связанные с расширением, полученным последним вызовом GetCertificateExtension.
Синтаксис
HRESULT GetCertificateExtensionFlags(
[out] LONG *pExtFlags
);
Параметры
[out] pExtFlags
Указатель на переменную LONG , содержащую флаги расширения.
Возвращаемое значение
C++
Если метод завершается успешно, метод возвращает S_OK, а параметр pExtFlags содержит флаги из расширения, полученного при последнем вызове Метода GetCertificateExtension.Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
VB
Возвращаемое значение — это флаги расширения, полученные при последнем вызове Метода GetCertificateExtension.Комментарии
Методы SetContext и GetCertificateExtension должны вызываться перед командой GetCertificateExtensionFlags. Метод SetContext указывает, какой запрос используется в качестве текущего контекста, а метод GetCertificateExtension извлекает расширения для запроса.
Расширения могут содержать флаги политики и источника. Флаги политики предоставляют сведения о расширении сертификата. Флаги политики можно задать с помощью модуля политики. Флаги источника указывают модуль, который задает расширение сертификата. Флаги источника задаются только подсистемой сервера.
Из расширения можно вернуть один или несколько флагов политики. Ниже приведены стандартные флаги политики.
Значение флага политики | Описание |
---|---|
EXTENSION_CRITICAL_FLAG | Это критическое расширение. |
EXTENSION_DISABLE_FLAG | Расширение не будет использоваться. |
Также можно вернуть один из следующих флагов источника.
Значение флага источника | Описание |
---|---|
EXTENSION_ORIGIN_REQUEST | Расширение было извлечено из массива расширений, хранящихся в szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.14) или szOID_RSA_certExtensions (1.2.840.113549.1.9.14) запроса PKCS #10. |
EXTENSION_ORIGIN_POLICY | Модуль политики задает расширение. |
EXTENSION_ORIGIN_ADMIN | Администратор настроит расширение. Дополнительные сведения см. в разделе ICertAdmin::SetCertificateExtension. |
EXTENSION_ORIGIN_SERVER | Подсистема сервера задает расширение. |
EXTENSION_ORIGIN_RENEWALCERT | Расширение было извлечено из сертификата, хранящегося в атрибуте szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) запроса на продление PKCS #10. |
EXTENSION_ORIGIN_IMPORTEDCERT | Расширение было извлечено из импортированного сертификата (сертификат был передан в ICertAdmin::ImportCertificate). |
EXTENSION_ORIGIN_PKCS7 | Расширение было извлечено из массива расширений, хранящихся в szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.14) или szOID_RSA_certExtensions (1.2.840.113549.1.9.14) запроса PKCS #7. |
Предопределенные маски предоставляются для простоты использования при определении флагов, заданных в возвращаемом значении. Приведены следующие маски.
Значение маски | Описание |
---|---|
EXTENSION_POLICY_MASK | Это значение (0x0000FFFF) используется для проверки флагов политики. |
EXTENSION_ORIGIN_MASK | Это значение (0x000F0000) используется для проверки флагов источника. |
Для пользовательских данных безопасно использовать EXTENSION_POLICY_MASK с высокими 8 битами. Эти биты будут постоянно сохраняться в базе данных, но не будут записываться в расширения сертификата.
Примеры
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;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Ни одна версия не поддерживается |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | certif.h (включая Certsrv.h) |
Библиотека | Certidl.lib |
DLL | Certcli.dll |
См. также раздел
ICertAdmin::SetCertificateExtension