ICertServerExit::GetCertificateExtension 方法 (certif.h)

GetCertificateExtension 方法获取指定的证书扩展。

请注意,证书扩展不同于证书属性。 属性是附加到请求对象的泛型数据。 其中一些属性被编码为证书 (示例: BeginDate) ,而其他属性仅用于标记队列和日志中的请求。 未禁用的扩展将编码到证书中。 扩展始终使用 对象标识符 进行标记,并且始终具有关键/非关键标志。

语法

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 设置为包含扩展值的 VARIANT

如果方法失败,它将返回一个 指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值

VB

返回值是请求的扩展值。

备注

在使用此方法之前,必须调用 ICertServerExit::SetContext

示例

VARIANT  varExt;
HRESULT  hr;

VariantInit(&varExt);
// Get the Extension value
// bstrExtName is BSTR assigned by EnumerateExtensions.
// pCertServerExit has been used to call SetContext previously.
hr = pCertServerExit->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

另请参阅

ICertServerExit

ICertServerExit::GetCertificateExtensionFlags

ICertServerExit::SetContext