ICertificates2::Find 方法

[CAPICOM 是一个仅 32 位组件,可用于以下操作系统:Windows Server 2008、Windows Vista 和 Windows XP。 请改用 System.Security.Cryptography.X509Certificates 命名空间中的 X509Certificate2Collection 类。]

Find 方法返回一个 Certificates 对象,该对象包含与指定搜索条件匹配的所有证书。 此方法是在 CAPICOM 2.0 中引入的。

语法

Certificates.Find( _
  ByVal FindType, _
  [ ByVal varCriteria ], _
  [ ByVal bFindValidOnly ] _
)

参数

FindType [in]

CAPICOM_CERTIFICATE_FIND_TYPE枚举的值,该值指定 varCriteria 参数中提供的匹配条件的类型。 下表列出了可能的值。

“值” 含义
CAPICOM_CERTIFICATE_FIND_SHA1_HASH
返回与 varCriteria 参数中指定的 SHA1 哈希匹配的 SHA1 哈希的证书。
CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME
返回其使用者名称与 varCriteria 参数中指定的使用者名称完全匹配或部分匹配的证书。 此调用仅搜索使用者名称字段。
CAPICOM_CERTIFICATE_FIND_ISSUER_NAME
返回证书,其颁发者名称与 varCriteria 参数中指定的颁发者名称完全匹配或部分匹配。 此调用仅搜索颁发者名称字段。
CAPICOM_CERTIFICATE_FIND_ROOT_NAME
返回根使用者名称与 varCriteria 参数中指定的根使用者名称完全匹配或部分匹配的证书。 此调用将创建链。 此调用将搜索根证书的使用者名称字段。
CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME
返回模板名称与 varCriteria 参数中指定的模板名称匹配的证书。
CAPICOM_CERTIFICATE_FIND_EXTENSION
返回具有与 varCriteria 参数中指定的扩展匹配的扩展的证书。
CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY
返回存储区中的证书,该存储中显式包含 具有 varCriteria 参数中指定的值的扩展属性。
CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY
返回存储中的证书,该存储中具有增强型密钥使用扩展、应用程序策略扩展或 varCriteria 参数中指定的扩展属性。
CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY
返回在 varCriteria 参数中指定的证书策略扩展中包含策略 OID 的证书。
CAPICOM_CERTIFICATE_FIND_TIME_VALID
返回其时间有效的证书。
CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID
返回其时间尚无效的证书。
CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED
返回其时间已过期的证书。
CAPICOM_CERTIFICATE_FIND_KEY_USAGE
返回包含 varCriteria 参数中指定的 KeyUsage 扩展中的密钥用法的证书。 如果 KeyUsage 扩展不存在,则假定所有密钥用法都不可用。

 

varCriteria [in, 可选]

包含搜索条件的变体。 此数据必须与 FindType 参数中指定的数据类型匹配。 如果 FindType 参数的值CAPICOM_CERTIFICATE_FIND_TIME_VALID、CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID或CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED且未将值传递到此参数,则假定当前时间。 有关每种数据类型的示例,请参阅“备注”。 默认值为 0。

bFindValidOnly [in, 可选]

一个布尔值,该值指示是否只返回有效的证书。 默认值为 false;这表示返回与搜索条件匹配的所有证书。

如果为 true,搜索将不会返回以下类型的证书:

  • 其时间已过期或尚无效的证书。
  • 证书未正确链接。
  • 具有签名问题的证书。
  • 吊销的证书。

返回值

包含搜索结果的 Certificates 对象。

CAPICOM 2.1: 返回的 Certificates 对象包含对完成搜索的集合中的证书的引用。 对返回的 Certificates 对象中的证书所做的任何更改都反映在该集合中。

CAPICOM 2.0、CAPICOM 2.0.0.1、CAPICOM 2.0.0.2 和 CAPICOM 2.0.0.3: 返回的 Certificates 对象包含完成搜索的集合中证书的副本。 对返回 的 Certificates 对象中的证书所做的任何更改都不会反映在该集合中。

注解

以下示例显示了不同搜索条件类型的可能搜索条件。

FindType 参数 varCriteria 参数
CAPICOM_CERTIFICATE_FIND_SHA1_HASH 33F362434B577F844BB7226BE36F7D72EF9D9393
CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME “NameOfPerson”
CAPICOM_CERTIFICATE_FIND_ISSUER_NAME “VeriSign”
CAPICOM_CERTIFICATE_FIND_ROOT_NAME “Microsoft 根机构”
CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME “AutoEnrollEFS”
1.3.6.1.4.1.311.21.8.3692315854.1256661383.1690418588.4201632533.1741915387.2177932052
CAPICOM_CERTIFICATE_FIND_EXTENSION "2.5.29.31"
CAPICOM_OID_KEY_USAGE_EXTENSION
“CRL 通讯组列表”
CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY CAPICOM_PROPID_KEY_PROV_INFO
CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY "1.3.6.1.5.5.7.3.3"
"1.3.6.1.5.5.7.3.4"
CAPICOM_OID_SERVER_AUTH_EKU
“代码签名”
CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY "1.3.6.1.5.5.7.3.4.3.5"
“公司高保证”
CAPICOM_CERTIFICATE_FIND_TIME_VALID #04/15/2002,下午 6:00#
CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID #04/15/2002,下午 6:00#
CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED #04/15/2002,下午 6:00#
CAPICOM_CERTIFICATE_FIND_KEY_USAGE CAPICOM_ENCIPHER_ONLY_KEY_USAGE

 

要求

要求
客户端支持结束
Windows Vista
服务器支持结束
Windows 2008 Server
可再发行组件
Windows Server 2003 和 Windows XP 上的 CAPICOM 2.0 或更高版本
DLL
Capicom.dll

请参阅

证书

CAPICOM_OID