IX509CertificateRequestPkcs10::InitializeFromPublicKey 方法 (certenroll.h)

InitializeFromPublicKey 方法使用 IX509PublicKey 对象和模板(可选)初始化 null 签名的证书请求。

Syntax

HRESULT InitializeFromPublicKey(
  [in]           X509CertificateEnrollmentContext Context,
  [in]           IX509PublicKey                   *pPublicKey,
  [in, optional] BSTR                             strTemplateName
);

参数

[in] Context

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

[in] pPublicKey

指向表示公钥的 IX509PublicKey 接口的指针。

[in, optional] strTemplateName

一个 BSTR 变量,其中包含模板的公用名(CN),因为它出现在 Active Directory 或虚线的小数 对象标识符中。 这是一个可选参数。

返回值

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

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

返回代码/值 Description
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
证书请求对象已初始化。

注解

如果指定模板, InitializeFromPublicKey 方法将执行以下作:

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

无论是否指定模板(如果未指定 CSPInformations 属性),该方法都从计算机上安装的提供程序创建 ICspInformations 集合。

该方法不创建私钥。 使用此方法意味着请求为 null 签名。 因此,该方法在 IX509SignatureInformation 对象上设置 NullSigned 属性。

要求

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

另请参阅

IX509CertificateRequestPkcs10