WinVerifyTrust 函数对指定对象执行信任验证作。 该函数将查询传递给支持作标识符(如果存在) 的信任提供程序 。
对于证书验证,请使用 CertGetCertificateChain 和 CertVerifyCertificateChainPolicy 函数。
Syntax
LONG WinVerifyTrust(
[in] HWND hwnd,
[in] GUID *pgActionID,
[in] LPVOID pWVTData
);
参数
[in] hwnd
调用方窗口的可选句柄。 信任提供程序可以使用此值来确定它是否可以与用户交互。 但是,信任提供程序通常执行验证作,而无需用户输入。
此参数可以是下列值之一。
| 价值 | Meaning |
|---|---|
|
没有交互式用户。 信任提供程序在没有用户帮助的情况下执行验证作。 |
|
信任提供程序可以使用交互式桌面显示其用户界面。 |
|
信任提供程序可以将除INVALID_HANDLE_VALUE或零以外的任何值视为可用于与用户交互的有效窗口句柄。 |
[in] pgActionID
指向 GUID 结构的指针,该结构标识作和支持该作的信任 提供程序 。 此值指示要在 pWinTrustData 指向的结构上执行的验证作的类型。
WinTrust 服务旨在与第三方实现的信任提供商合作。 每个信任提供程序都提供其自己的唯一作标识符集。 有关信任提供程序支持的作标识符的信息,请参阅该信任提供程序的文档。
例如,Microsoft提供软件发布者信任提供程序,该提供程序可以建立从 Internet 或其他一些公用网络下载的软件的可信度。 软件发布者信任提供程序支持以下作标识符。 这些常量在 Softpub.h 中定义。
| 价值 | Meaning |
|---|---|
|
验证 Windows 硬件质量实验室(WHQL)签名驱动程序的真实性。 这是 Authenticode 加载项策略提供程序。 |
|
验证 WinINet 建立的 SSL/TLS 连接。 |
|
不支持此作 ID。 使用 Microsoft Office Authenticode 加载项策略提供程序验证结构化存储文件的真实性。
Windows Server 2003 和 Windows XP: 支持此作 ID。 |
|
验证从任何对象类型创建的证书链。 通过使用每个签名者和计数器签名者的链上下文来实现最终链策略的回调。 |
|
使用 Authenticode 策略提供程序验证文件或对象。 |
|
调用 Authenticode 策略提供程序后,将 CRYPT_PROVIDER_DATA 结构写入文件。 |
[in] pWVTData
一个指针,当强制转换为 WINTRUST_DATA 结构时,包含 信任提供程序 需要处理指定作标识符的信息。 通常,该结构包含用于标识信任提供程序必须评估的对象的信息。
结构的格式取决于作标识符。 有关特定作标识符所需的数据的信息,请参阅支持该作的信任提供程序的文档。
返回值
如果信任提供程序验证使用者是否信任指定的作,则返回值为零。 除了零之外,任何其他值都不应被视为成功的返回。
如果信任提供程序未验证使用者是否受信任,则函数会从 信任提供程序返回状态代码。
例如,信任提供程序可能指示主题不受信任,或者受信任,但存在限制或警告。 返回值可以是单个信任提供程序文档中描述的特定于信任提供程序的值,也可以是以下错误代码之一。
| 返回代码 | Description |
|---|---|
|
使用者未能执行指定的验证作。 大多数信任提供程序返回更详细的错误代码,用于描述失败的原因。
注意
根据 HKLM\Software\Microsoft\Cryptography\Wintrust\Config 下的 EnableCertPaddingCheck 注册表项的值,可以返回TRUST_E_SUBJECT_NOT_TRUSTED返回代码。如果 EnableCertPaddingCheck 设置为“1”,则执行其他检查以验证WIN_CERTIFICATE结构是否不包含多余的信息。 检查验证 PKCS #7 结构之外没有非零数据。 有关详细信息,请参阅以下安全公告: http://technet.microsoft.com/security/advisory/2915720#section1 |
|
此系统上无法识别信任提供程序。 |
|
信任提供程序不支持指定的作。 |
|
信任提供程序不支持为主题指定的表单。 |
注解
WinVerifyTrust 函数使应用程序能够调用信任提供程序,以验证指定对象是否满足指定验证作的条件。 pgActionID 参数标识验证作,pWinTrustData 参数标识要验证其信任的对象。 信任提供程序是向作系统注册的 DLL。 对 WinVerifyTrust 的调用将调用转发到已注册的信任提供程序(如果有)支持该指定作标识符的调用。
例如,软件发布者信任提供程序可以验证可执行映像文件是否来自受信任的软件发布者,并且文件中的代码自签名以来尚未修改。 在这种情况下, pWinTrustData 参数指定文件名和文件类型,例如Microsoft 可移植可执行 映像文件。
每个信任提供程序都支持一组可以评估的特定作。 每个作都有一个标识它的 GUID。 信任提供程序可以支持任意数量的作标识符,但两个信任提供程序不支持相同的作标识符。
有关演示如何使用此函数验证可移植可执行文件(PE)文件的签名的示例,请参阅 示例 C 程序:验证 PE 文件的签名。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows XP [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | wintrust.h (include Softpub.h) |
| Library | Wintrust.lib |
| DLL | Wintrust.dll |