iCspStatuses::get_ItemByOrdinal 方法 (certenroll.h)
ItemByOrdinal 属性按序号从集合中检索 ICspStatus 对象。
此属性为只读。
语法
HRESULT get_ItemByOrdinal(
LONG Ordinal,
ICspStatus **ppValue
);
参数
Ordinal
ppValue
返回值
无
备注
每次枚举集合时,集合中的 ICspStatus 对象的序号顺序可能会有所不同,原因有多种,包括但不限于以下原因:
- 证书请求模板设置
- 加密提供程序的属性值
- 私钥属性值
例如,假设选择创建证书请求的版本 2 模板指定证书只能用于签名 (pKIDefaultKeySpec 模板属性XCN_AT_SIGNATURE) ,并且默认提供程序是 Microsoft 增强型 RSA 和 AES 加密提供程序。 请注意,模板将证书限制为签名,即使提供程序支持加密和签名算法。 也就是说,提供程序上的 KeySpec 属性是XCN_AT_KEYEXCHANGE和XCN_AT_SIGNATURE常量的按位组合,但 pKIDefaultKeySpec 模板属性仅支持XCN_AT_SIGNATURE。
集合中的 ICspStatus 对象将按以下方式排序:
- 在此提供程序枚举的 ICspStatus 对象中,与签名算法 (XCN_AT_SIGNATURE) 关联的对象先排序, (较低的序号值) 启用其 Display 和 Selected 属性。 注意 如果已XCN_AT_KEYEXCHANGE pKIDefaultKeySpec 模板属性,则会先对加密算法进行排序。
- 在此提供程序枚举的 ICspStatus 对象中,与加密算法 (XCN_AT_KEYEXCHANGE) 关联的对象在以后排序 (更高的序号值) ,并且不启用其 Display 和 Selected 属性。
- 对于支持非对称签名算法但不与指定提供程序关联的所有其他已安装的 CryptoAPI 提供程序 (XCN_AT_SIGNATURE) , 将启用 Display 属性,并且不启用 Selected 属性。
- 对于支持 (XCN_AT_KEYEXCHANGE) 非对称加密算法的所有其他已安装 CryptoAPI 提供程序,不启用 Display 和 Selected 属性。
- 对于所有已安装的加密 API:下一代 (CNG) 提供程序,不启用 Display 和 Selected 属性。
对于另一个示例,假设版本 3 模板指定了一个特定的 CNG 提供程序和算法。 该提供程序/算法对 (ICspStatus 对象) 先排序,启用显示并选中。 该提供程序支持的所有其他算法在以后排序,不启用显示,也不会选择。 支持指定算法的所有其他提供程序稍后仍将进行排序,启用显示,但未选中。 不会为显示启用所有剩余的提供程序/算法对,也不会选择这些提供程序/算法对。
注意 CNG 提供程序不支持 KeySpec 预期使用概念。 返回此属性值的XCN_AT_NONE。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | certenroll.h |
DLL | CertEnroll.dll |