IX509CertificateRequestPkcs10::get_CspStatuses 方法 (certenroll.h)
CspStatuses 属性检索与与证书请求关联的私钥的预期用途匹配的 ICspStatus 对象的集合。
此属性为只读。
语法
HRESULT get_CspStatuses(
ICspStatuses **ppValue
);
参数
ppValue
返回值
无
备注
此属性检索 ICspStatus 对象的集合。 每个对象表示单个提供程序/算法对。 CspStatuses 属性不同于 GetCspStatuses 方法。 使用 方法可以设置 KeySpec 参数,但 CspStatuses 使用与 IX509CertificateRequestPkcs10 对象关联的私钥上设置的 KeySpec 属性。 这可以是以下值之一。
值 | 说明 |
---|---|
XCN_AT_NONE | 仅选择加密 API:下一代 (CNG) 提供程序。 |
XCN_AT_KEYEXCHANGE | 仅选择加密算法 (包括密钥交换) 在内的加密算法 (CSP (CS) P。 |
XCN_AT_SIGNATURE | 仅选择使用签名算法) (CSP 的 CryptoAPI 加密服务提供程序。 |
如果在初始化请求对象时指定模板,则模板属性(如 pKIDefaultCSP 和 pKIDefaultKeySpec) 会影响最初在集合中启用的提供程序/算法对。 可以对每个 ICspStatus 对象调用以下属性来检索有关对的信息:
- CspInformation 属性检索提供程序信息。
- CspAlgorithm 属性检索算法信息。
- EnrollmentStatus 属性检索 IX509EnrollmentStatus 对象。 对状态对象调用 Selected 属性以确定是否为此请求启用了提供程序/算法对。
- Ordinal 属性检索提供程序/算法对集合中的位置。
此方法检索到的集合在内部保存在请求对象上。 只要 PKCS #10 对象继续存在,集合就存在。
例如,假设与请求对象关联的私钥上的 KeySpec 属性设置为 XCN_AT_SIGNATURE并使用模板初始化请求。 以下陈述是正确的:
- ICspStatus 对象的集合在 IX509CertificateRequestPkcs10 对象上创建并保存。 集合包含计算机上安装的所有有效提供程序/算法对。
- 由于 KeySpec 属性未设置为 XCN_AT_NONE,因此对于集合中的每个加密 API,Selected 属性设置为 SelectedNo:下一代 (CNG) 提供程序/算法对。
- 由于 KeySpec 属性未设置为 XCN_AT_KEYEXCHANGE,因此集合中的每个 CryptoAPI CSP/算法对的 Selected 属性设置为 SelectedNo,该算法只能用于加密数据或存档密钥。
- 对于模板或私钥引用但计算机上不支持的每个提供程序,将创建占位符 ICspStatus 对象并将其添加到集合中,并将 Selected 属性设置为 SelectedNo。
- 对于每个 CryptoAPI CSP/算法对, Selected 属性设置为 SelectedYes,其中算法只能用于对数据进行签名。
- Ordinal 属性设置为反映由 pKIDefaultCSP 模板属性标识的 CSP 顺序(如果有)。 属性首先列出的 CSP 在集合中先排序。 如果必须创建私钥,则此属性在注册期间使用。 第一个选定的 CSP/算法对用于创建密钥,但如果操作失败,将尝试下一个所选对。
在调用此方法之前,必须初始化 IX509CertificateRequestPkcs10 对象。 有关详细信息,请参阅以下任一方法:
- InitializeDecode
- InitializeFromCertificate
- InitializeFromPrivateKey
- InitializeFromPublicKey
- InitializeFromTemplateName
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | certenroll.h |
DLL | CertEnroll.dll |