ICertServerPolicy::SetCertificateExtension 方法 (certif.h)

SetCertificateExtension 方法向证书添加新扩展。

语法

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

参数

[in] strExtensionName

指定要设置的扩展 (OID) 的对象标识符 。 字符串的长度必须为 31 个或更少的非空字符。

[in] Type

指定要设置的扩展的类型。 Type 参数必须与 VARIANT 结构的 vt 字段中设置的 pvarValue 数据类型一致。 Type 参数可以设置为以下类型之一。

含义
PROPTYPE_LONG
有符号的长数据。
PROPTYPE_DATE
日期/时间。
PROPTYPE_BINARY
扩展值按原样设置,并假定为 ASN.1 编码(如有必要)。
PROPTYPE_STRING
扩展值将 ASN.1 编码为 IA5 字符串,然后再将其放入新证书中。
注意 仅当希望 URL 自动编码为 IA5 字符串时,才应对包含单个 URL 的扩展值使用 PROPTYPE_STRING。 否则,请自行将 URL 编码为 IA5 字符串,并将编码值作为 PROPTYPE_BINARY传递。
 

[in] ExtFlags

指定要设置的扩展的标志。 如果未设置任何标志,请使用零值,或者使用以下标志值之一。 可以使用 OR 运算符将这些标志联接在一起,还可以将 OR 运算符与策略专用扩展标志 (EXTENSION_POLICY_MASK字段) 的高 8 位来联接它们。

注意ExtFlags 设置为 EXTENSION_DISABLE_FLAG 时,将在服务器日志中禁用该扩展,并且不会添加到证书中。
 
含义
EXTENSION_CRITICAL_FLAG
这是一个关键扩展。
EXTENSION_DISABLE_FLAG
不会使用扩展。

[in] pvarValue

指定与扩展关联的值。 请注意,值的 VARIANT 类型必须与 Type 参数一致,如下表所示。

含义
PROPTYPE_LONG
VT_I4
PROPTYPE_DATE
VT_DATE
PROPTYPE_BINARY
VT_BSTR
PROPTYPE_STRING
VT_BSTR

返回值

VB

如果方法成功,该方法将返回S_OK。

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

注解

使用扩展可包含证书的其他信息,例如补充使用者或使用情况信息。 有关详细信息,请参阅 扩展处理程序

ICertPolicy2::VerifyRequest 方法的实现中调用 SetCertificateExtension 方法。 在调用 SetCertificateExtension 方法之前,必须调用 ICertServerPolicy::SetContext 方法。

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 certif.h (包括 Certsrv.h)
Library Certidl.lib
DLL Certcli.dll

另请参阅

ICertServerPolicy

ICertServerPolicy::SetContext