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


Метод ICertServerExit::GetCertificateExtensionFlags (certif.h)

Метод GetCertificateExtensionFlags получает флаги из расширения, полученного при последнем вызове ICertServerExit::GetCertificateExtension.

Синтаксис

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

Параметры

[out] pExtFlags

Указатель на переменную LONG , которая будет содержать флаги расширения.

Возвращаемое значение

C++

Если метод завершается успешно, метод возвращает S_OK, а *pExtFlags присваивается переменная, содержащая флаги расширения, полученного при последнем вызове ICertServerExit::GetCertificateExtension.

Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

VB

Возвращаемое значение — это флаги расширения, полученные при последнем вызове ICertServerExit::GetCertificateExtension.

Комментарии

В расширениях используются два типа флагов: флаги политики и флаги источника.

Тип флага Описание
Политика Предоставляет сведения о расширении сертификата. Флаги политики можно задать с помощью модуля политики.
Исходный домен Указывает модуль, задал расширение сертификата. Флаги источника задаются только подсистемой сервера.
 

Один или несколько флагов политики могут быть возвращены из расширения. Ниже приведены стандартные флаги политики.

Значение флага политики Описание
EXTENSION_CRITICAL_FLAG Это критическое расширение.
EXTENSION_DISABLE_FLAG Расширение не будет использоваться.
 

Также можно вернуть один из следующих флагов источника.

Значение флага источника Описание
EXTENSION_ORIGIN_REQUEST Расширение было извлечено из массива расширений, хранящихся в szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.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.1.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 битами. Эти биты будут постоянно сохраняться в базе данных, но не записываются в расширения сертификатов.

Перед использованием этого метода необходимо вызвать ICertServerExit::SetContext .

Примеры

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

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header certif.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certcli.dll

См. также раздел

CCertServerExit

ICertAdmin::SetCertificateExtension

ICertServerExit

ICertServerExit::GetCertificateExtension

IEnumCERTVIEWEXTENSION::GetFlags