CertSelectCertificateChains 函数 (wincrypt.h)
CertSelectCertificateChains 函数根据指定的选择条件检索证书链。
语法
BOOL CertSelectCertificateChains(
[in, optional] LPCGUID pSelectionContext,
[in] DWORD dwFlags,
[in, optional] PCCERT_SELECT_CHAIN_PARA pChainParameters,
[in] DWORD cCriteria,
[in, optional] PCCERT_SELECT_CRITERIA rgpCriteria,
[in] HCERTSTORE hStore,
[out] PDWORD pcSelection,
[out] PCCERT_CHAIN_CONTEXT **pprgpSelection
);
参数
[in, optional] pSelectionContext
指向要用于此调用的证书选择方案的 GUID 的指针。
[in] dwFlags
用于控制证书选择过程的标志。 此参数可以是零个或多个以下标志的组合:
[in, optional] pChainParameters
指向 CERT_SELECT_CHAIN_PARA 结构的指针,用于指定链式构建的参数。 如果 为 NULL,则使用默认参数。
CERT_SELECT_CHAIN_PARA 结构的 pChainPara 成员指向可用于启用强签名的 CERT_CHAIN_PARA 结构。
[in] cCriteria
rgpCriteria 数组指向的数组中的元素数。
[in, optional] rgpCriteria
指向定义选择条件 的CERT_SELECT_CRITERIA 结构的数组的指针。 如果此参数设置为 NULL,则 cCriteria 参数的值必须为零。
[in] hStore
要从中选择证书的存储的句柄。
[out] pcSelection
指向 DWORD 值的指针,用于接收 pprgpSelection 参数指向的数组中的元素数。
[out] pprgpSelection
指向要接收CERT_CHAIN_CONTEXT结构数组的位置的 指针的 指针。 CertSelectCertificateChains 函数仅返回与所有选择条件匹配的证书链。 数组中的条目按质量排序,即质量最高的链是第一个条目。
数组的存储由 CertSelectCertificateChains 函数分配。 若要释放分配的内存,必须先通过调用 CertFreeCertificateChain 函数释放数组中的每个单独的链上下文。 然后,必须通过调用 CertFreeCertificateChainList 函数来释放内存。
返回值
如果函数成功,则函数返回 TRUE。
如果函数失败,它将返回零 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError 函数。
注解
可以通过 dwFlags 参数、 rgpCriteria 参数或两个参数指定选择条件。 如果未指定选择条件,该函数将成功,并返回 hStore 参数指定的存储区中所有证书的证书链。
所选证书链根据以下首选项逻辑进行排序:
- 首选智能卡证书,而不是基于智能卡的证书。
- 首选有效期较长的证书, (过期日期较晚。)
- 如果多个证书具有相同的到期日期,则首选最近颁发的证书。
- 如果有领带,更喜欢较短的链。
- CERT_SELECT_BY_ISSUER_NAME
- CERT_SELECT_BY_ISSUER_ATTR
- CERT_SELECT_BY_POLICY_OID
- 创建CERT_STRONG_SIGN_PARA结构,指定所需的强签名参数,并设置指向CERT_CHAIN_PARA结构的 pStrongSignPara 成员中的结构的指针。
- 设置指向 CERT_SELECT_CHAIN_PARA 结构的 pChainPara 成员中的 CERT_CHAIN_PARA 结构的指针。
- 设置指向此 (CertSelectCertificateChains) 函数的 pChainParameters 参数中的 CERT_SELECT_CHAIN_PARA 结构的指针。
启用强签名检查时,将跳过在 CERT_TRUST_STATUS 结构的 dwErrorStatus 字段中返回 CERT_TRUST_IS_NOT_SIGNATURE_VALID 错误的任何证书链。 (pprgpSelection 参数指向 CERT_CHAIN_CONTEXT 结构,而该结构又指向 CERT_TRUST_STATUS 结构。) CERT_TRUST_HAS_WEAK_SIGNATURE 值也是 为弱签名设置的。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |
另请参阅