InitializeDecode 方法对现有已签名或未签名的 PKCS #7 请求对象进行解码,并使用它初始化新的 PKCS #7 对象。 现有请求包含在字节数组中,该字节数组使用由抽象语法表示法一(ASN.1)标准定义的“可分辨编码规则”(DER)进行编码。 字节数组由纯二进制序列或 Unicode 编码的字符串表示。
Syntax
HRESULT InitializeDecode(
[in] BSTR strEncodedData,
[in] EncodingType Encoding
);
参数
[in] strEncodedData
包含 DER 编码请求的 BSTR 变量。
[in] Encoding
一个 EncodingType 枚举值,该值指定应用于包含 DER 编码请求的输入字符串的 Unicode 编码的类型。 默认值 为XCN_CRYPT_STRING_BASE64。
返回值
如果函数成功,该函数将返回 S_OK。
如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括但不限于下表中的值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
| 返回代码/值 | Description |
|---|---|
|
请求对象已初始化。 |
注解
InitializeDecode 方法:
- 解码输入中指定的 PKCS #7 请求。
- 使用解码的对象使用以下集合创建内部 PKCS #10 请求:
- 空 的 ICryptAttributes 集合。
- 一个空 的 IX509Extensions 集合。
- 关键扩展 的空 IObjectIds 集合。
- 要从新请求中取消的属性和扩展 OID 的空 IObjectId 集合 。
- 将解码的扩展添加到 IX509Extensions 集合。
- 将解码的属性添加到 ICryptAttributes 集合
- 设置 ClientId 属性。
- 设置 TemplateObjectId 属性。
- 使用原始 PKCS #7 请求上的签名创建新的 ISignerCertificate 对象。
- 从 ISignerCertificate 对象检索 IX509SignatureInformation 对象。
- 使用原始签名和哈希算法初始化新的 IX509SignatureInformation 对象。
- 将 PKCS #10 请求设置为内部请求对象。
默认情况下, InitializeDecode 方法假定要解码的证书请求适用于最终用户。 从 Windows 8 和 Windows Server 2012 开始,可以更改此默认行为。 创建 IX509CertificateRequestPkcs7 接口的实例后,通过将 Encoding 参数设置为 XCN_CRYPT_STRING_BINARY,并将 strEncodedData 参数设置为以下值之一来调用 InitializeDecode:
| 价值 | Description |
|---|---|
| L“ContextMachine” | 编码的证书请求适用于计算机。 |
| L“ContextUser” | 编码的证书请求适用于最终用户。 |
| L“ContextAdministratorForceMachine” | 代理计算机的管理员正在请求编码的证书。 |
然后,使用 strEncodedData 参数中设置的编码证书再次调用 InitializeDecode 方法。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | certenroll.h |
| DLL | CertEnroll.dll |