ICertPropertyRenewal::InitializeFromCertificateHash 方法 (certenroll.h)

InitializeFromCertificateHash 方法从新证书初始化 对象。

语法

HRESULT InitializeFromCertificateHash(
  [in] VARIANT_BOOL MachineContext,
  [in] EncodingType Encoding,
  [in] BSTR         strCertificate
);

参数

[in] MachineContext

一个VARIANT_BOOL值,该值指示证书存储是针对本地计算机还是当前用户。 为计算机指定 VARIANT_TRUE ,为用户指定 VARIANT_FALSE

[in] Encoding

一个 EncodingType 枚举值,该值指定应用于包含 DER 编码证书的输入字符串的 Unicode 编码的类型。

[in] strCertificate

包含 DER 编码证书的 BSTR 变量。

从 Windows 7 和 Windows Server 2008 R2 开始,可以指定证书指纹或序列号,而不是编码证书。 这样做会导致函数在相应的本地存储区中搜索匹配的证书。 请注意以下几点:

  • BSTR 必须是十六进制数字的偶数。
  • 忽略十六进制对之间的空格。
  • Encoding 参数必须设置为 XCN_CRYPT_STRING_HEXRAW
  • MachineContext 参数确定是搜索用户或计算机存储还是同时搜索两者。
  • 如果需要私钥,则仅搜索个人和请求存储。
  • 如果不需要私钥,则还会搜索根和中间 CA 存储。

返回值

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

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

返回代码/值 说明
HRESULT_FROM_WIN32 (ERROR_ALREADY_INITIALIZED)
对象已初始化。

注解

此方法使用指定的证书创建 SHA-1 哈希。 必须使用 可辨别编码规则 (DER) (如抽象语法表示法 1 (ASN.1) 标准所定义)对证书进行编码。 还必须指定应用于包含 DER 编码证书的字符串的 Unicode 编码的类型。

通常, ICertPropertyRenewal 对象在注册过程中初始化。 可以通过在 IX509Enrollment 接口上调用 Certificate 属性来检索注册期间使用的证书

调用 SetValueOnCertificate 方法将 属性与证书相关联。 调用 Renewal 属性以检索哈希。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 certenroll.h
DLL CertEnroll.dll

另请参阅

ICertPropertyRenewal