Поделиться через


Метод 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

ICertServerPolicy

ICertServerPolicy::GetCertificateExtension

ICertServerPolicy::SetContext

IEnumCERTVIEWEXTENSION::GetFlags