Initialize 方法从签名证书初始化对象。
Syntax
HRESULT Initialize(
[in] VARIANT_BOOL MachineContext,
[in] X509PrivateKeyVerify VerifyType,
[in] EncodingType Encoding,
[in] BSTR strCertificate
);
参数
[in] MachineContext
一个VARIANT_BOOL变量,指示是搜索本地计算机证书存储上下文还是用户上下文来查找 strCertificate 参数标识的证书。 为计算机指定 VARIANT_TRUE ,并为用户指定 VARIANT_FALSE 。
[in] VerifyType
X509PrivateKeyVerify 枚举值,该值指定是否必须验证用于对证书进行签名的私钥,如果是,验证必须是无提示还是允许用户输入。
[in] Encoding
一个 EncodingType 枚举值,该值指定应用于可分辨编码规则(DER)编码证书字符串的 Unicode 编码的类型。
[in] strCertificate
包含 DER 编码证书的 BSTR 变量。
从 Windows 7 和 Windows Server 2008 R2 开始,可以指定证书指纹或序列号,而不是编码的证书。 这样做会导致函数搜索匹配证书的相应本地存储。 请注意以下几点:
- BSTR 必须是十六进制数字的偶数。
- 忽略十六进制对之间的空格。
- 编码参数必须设置为XCN_CRYPT_STRING_HEXRAW。
- MachineContext 参数确定是搜索用户还是计算机存储,还是同时搜索这两者。
- 如果需要私钥,则仅搜索个人和请求存储。
- 如果不需要私钥,还会搜索根和中间 CA 存储。
返回值
如果函数成功,该函数将返回 S_OK。
如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括但不限于下表中的值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
| 返回代码/值 | Description |
|---|---|
|
ISignerCertificate 对象已初始化。 |
注解
Initialize 方法:
- 验证与证书关联的私钥是否存在。
- 创建 IX509SignatureInformation 对象,并将其分配给 ISignerCertificate 对象。
- 从私钥检索公钥算法。
- 将公钥算法分配给 IX509SignatureInformation 对象。
在调用 Initialize 之前设置以下属性:
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | certenroll.h |
| DLL | CertEnroll.dll |