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


Метод ICertServerPolicy::GetCertificateExtension (certif.h)

Метод GetCertificateExtension извлекает определенное расширение сертификата.

Синтаксис

HRESULT GetCertificateExtension(
  [in]  const BSTR strExtensionName,
  [in]  LONG       Type,
  [out] VARIANT    *pvarValue
);

Параметры

[in] strExtensionName

Строка, содержащая имя расширения.

[in] Type

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

Значение Значение
PROPTYPE_LONG
Подписанные длинные данные
PROPTYPE_DATE
Дата и время
PROPTYPE_BINARY
Значение расширения извлекается как есть и при необходимости закодировано в формате ASN.1.
PROPTYPE_STRING
Значение расширения — ASN.1, закодированное как строка IA5.

[out] pvarValue

Указатель на variant , получающий запрошенное значение расширения.

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

C++

Если метод завершается успешно, метод возвращает S_OK, а параметр pvarValue содержит значение расширения.

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

VB

Возвращаемое значение — это запрошенное значение расширения.

Комментарии

Перед вызовом этого метода необходимо вызвать метод SetContext . Вызов SetContext указывает, какой запрос используется в качестве текущего контекста.

Расширения сертификатов отличаются от свойств сертификата. Свойства — это универсальные данные, присоединенные к запросу. Некоторые из этих свойств кодируются в сертификате (например, BeginDate), а другие используются только для пометки запросов в очереди и журнале. Расширения, которые не отключены, кодируются в сертификате. Расширения всегда помечаются идентификатором объекта и всегда имеют критический или некритический флаг.

Примеры

VARIANT    varExt;
HRESULT    hr;

VariantInit(&varExt);
// Get the Extension value.
// bstrExtName is BSTR assigned by EnumerateExtensions.
// pCertServerPolicy has been used to call SetContext previously.
hr = pCertServerPolicy->GetCertificateExtension(bstrExtName,
                                                PROPTYPE_BINARY,
                                                &varExt);

if (FAILED(hr))
{
    printf("Failed GetCertificateExtension [%x]\n", hr);
    goto error;
}
// Successful call; use the value in varExt as needed.
// ...

// When done, clear the Variant
VariantClear(&varExt);

Требования

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

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

ICertServerPolicy

ICertServerPolicy::GetCertificateExtensionFlags

ICertServerPolicy::SetContext