CertFindSubjectInCTL 函数 (wincrypt.h)

CertFindSubjectInCTL 函数尝试在证书信任列表中查找指定的使用者 (CTL) 。 使用者可以通过证书的整个上下文或证书使用者的任何唯一标识符(例如证书颁发者的 SHA1 哈希 和序列号)来标识。

语法

PCTL_ENTRY CertFindSubjectInCTL(
  [in] DWORD         dwEncodingType,
  [in] DWORD         dwSubjectType,
  [in] void          *pvSubject,
  [in] PCCTL_CONTEXT pCtlContext,
  [in] DWORD         dwFlags
);

参数

[in] dwEncodingType

指定使用的编码类型。 目前,仅使用X509_ASN_ENCODING和PKCS_7_ASN_ENCODING;但是,将来可能会添加其他编码类型。 对于当前任一编码类型,请使用:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING。

[in] dwSubjectType

指定要在 CTL 中搜索的主题类型。 对于默认搜索,可以为 NULL

含义
CTL_CERT_SUBJECT_TYPE
pvSubject 数据类型:指向 CERT_CONTEXT 结构的指针。

检查 CTL 的 SubjectAlgorithm 以确定使用者身份的表示形式。 最初,仅支持 SHA1 和 MD5 哈希作为 SubjectAlgorithm 的值。 从 CERT_CONTEXT 结构获取相应的哈希属性。

CTL_ANY_SUBJECT_TYPE
pvSubject 数据类型:指向 CTL_ANY_SUBJECT_INFO 结构的指针。

此结构的 SubjectAlgorithm 成员必须与 CTL 的算法类型匹配, SubjectIdentifier 成员必须与其中一个 CTL 条目匹配。

 

证书的哈希CTL_ANY_SUBJECT_INFO 结构的 SubjectIdentifier 成员用作搜索使用者条目的键。 在键和条目的 SubjectIdentifier 之间进行二进制内存比较。

如果 dwSubjectType 设置为前面的任一值,则不使用 dwEncodingType

[in] pvSubject

dwSubjectType 参数结合使用的指针。

[in] pCtlContext

指向正在搜索 CTL_CONTEXT 结构的指针。

[in] dwFlags

保留以供将来使用,必须为零。

返回值

如果函数成功,则返回值为条目(如果找到)。

如果函数失败,则返回值为 NULL。 有关扩展的错误信息,请调用 GetLastError。 下面是一些可能的错误代码。

返回代码 说明
CRYPT_E_NOT_FOUND
在 CTL 中找不到该主题。
E_INVALIDARG
dwSubjectType 参数不是CTL_CERT_SUBJECT_TYPE,也不是CTL_ANY_SUBJECT_TYPE。
NTE_BAD_ALGID
CTL 的 SubjectAlgorithm 成员未映射到 SHA1 或 MD5。

注解

证书的哈希或CTL_ANY_SUBJECT_INFO结构的 SubjectIdentifier 成员用作搜索使用者条目的键。 在键和条目的 SubjectIdentifier 之间进行二进制内存比较。

要求

要求
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 wincrypt.h
Library Crypt32.lib
DLL Crypt32.dll

另请参阅

CERT_CONTEXT

CTL_ANY_SUBJECT_INFO

CTL_CONTEXT

CertFindCTLInStore

证书和证书存储维护功能