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
标头 certif.h (包括 Certsrv.h)
Library Certidl.lib
DLL Certcli.dll

另请参阅

ICertServerPolicy

ICertServerPolicy::GetCertificateExtensionFlags

ICertServerPolicy::SetContext