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