IX509CertificateRequestPkcs7V2::InitializeFromTemplate 方法 (certenroll.h)

InitializeFromTemplate 方法使用模板初始化证书请求。

Syntax

HRESULT InitializeFromTemplate(
  [in] X509CertificateEnrollmentContext context,
  [in] IX509EnrollmentPolicyServer      *pPolicyServer,
  [in] IX509CertificateTemplate         *pTemplate
);

参数

[in] context

X509CertificateEnrollmentContext 枚举值,该值指定所请求的证书是针对最终用户、计算机还是代表计算机的管理员。 这可以是以下值之一。

价值 Meaning
ContextUser
正在请求最终用户的证书。
ContextMachine
正在为计算机请求证书。
ContextAdministratorForceMachine
代理计算机的管理员正在请求证书。

[in] pPolicyServer

指向表示证书注册策略 (CEP) 服务器的 IX509EnrollmentPolicyServer 对象的指针,该服务器包含 pTemplate 参数指定的模板。

[in] pTemplate

指向表示初始化期间要使用的模板的 IX509CertificateTemplate 对象的指针。

返回值

如果函数成功,该函数将返回 S_OK

如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括但不限于下表中的值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值

返回代码/值 Description
E_POINTER
pTemplate 参数不能为 NULL
ERROR_ALREADY_INITIALIZED
证书请求对象已初始化。

注解

InitializeFromTemplate 方法创建 PKCS #7 请求对象,并将以下属性设置为调用此方法之前存在的值:

该方法创建以下集合:

然后,该方法检查模板并执行以下作:

  • 将模板指定的扩展添加到 IX509Extensions 集合。
  • 如果模板指示它们不是关键扩展,则从集合中删除默认的关键扩展(XCN_OID_KEY_USAGE和XCN_OID_BASIC_CONSTRAINTS2)。 添加了由模板标记为关键型的 OID。
  • 如果模板支持对称算法,则设置 SmimeCapabilities 属性。
  • 如果模板需要离散签名算法 OID,则设置 AlternateSignatureAlgorithm 属性。
  • 创建 IX509SignatureInformation 对象。
  • 如果在模板中指定了该算法并在 IX509SignatureInformation 对象上设置该算法,则创建哈希算法 OID。
  • 如果在模板中指定了该算法并在 IX509SignatureInformation 对象上设置该算法,则创建非对称加密算法 OID。
  • 从模板设置填充许多 IX509PrivateKey 属性。

如果 CSPInformations 属性为 NULL,该方法将从计算机上安装的提供程序创建 一个 ICspInformations 集合。

最后,该方法将初始化的 PKCS #10 请求设置为内部请求对象。

要求

Requirement 价值
最低支持的客户端 Windows 7 [仅限桌面应用]
支持的最低服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows操作系统
Header certenroll.h

另请参阅

IX509CertificateRequestPkcs7V2