WinVerifyTrustEx 函数 (wintrust.h)

WinVerifyTrustEx 函数对指定对象执行信任验证作,并获取指向WINTRUST_DATA结构的指针。 该函数将查询传递给支持作标识符 的信任提供程序(如果存在)。

对于证书验证,请使用 CertGetCertificateChainCertVerifyCertificateChainPolicy 函数。

Syntax

long WinVerifyTrustEx(
  [in] HWND          hwnd,
  [in] GUID          *pgActionID,
  [in] WINTRUST_DATA *pWinTrustData
);

参数

[in] hwnd

调用方窗口的可选句柄。 信任提供程序可以使用此值来确定它是否可以与用户交互。 但是,信任提供程序通常执行验证作,而无需用户输入。

此参数可以是下列值之一。

价值 Meaning
INVALID_HANDLE_VALUE
没有交互式用户。 信任提供程序在没有用户帮助的情况下执行验证作。
信任提供程序可以使用交互式桌面显示其用户界面。
有效的窗口句柄
信任提供程序可以将除INVALID_HANDLE_VALUE或零以外的任何值视为可用于与用户交互的有效窗口句柄。

[in] pgActionID

指向 GUID 结构的指针,该结构标识作和支持该作的信任 提供程序 。 此值指示要在 pWinTrustData 指向的结构上执行的验证作的类型。

WinTrust 服务旨在与第三方实现的信任提供商合作。 每个信任提供程序都提供其自己的唯一作标识符集。 有关信任提供程序支持的作标识符的信息,请参阅该信任提供程序的文档。

例如,Microsoft提供软件发布者信任提供程序,该提供程序可以建立从 Internet 或其他一些公用网络下载的软件的可信度。 软件发布者信任提供程序支持以下作标识符。 这些常量在 Softpub.h 中定义。

价值 Meaning
DRIVER_ACTION_VERIFY
验证 Windows 硬件质量实验室(WHQL)签名驱动程序的真实性。 这是 Authenticode 加载项策略提供程序。
HTTPSPROV_ACTION
验证 WinINet 建立的 SSL/TLS 连接。
OFFICESIGN_ACTION_VERIFY
不支持此作 ID。 使用 Microsoft Office Authenticode 加载项策略提供程序验证结构化存储文件的真实性。

Windows Server 2003 和 Windows XP: 支持此作 ID。

WINTRUST_ACTION_GENERIC_CERT_VERIFY
仅验证证书链。 仅当在 WinVerifyTrust 输入结构中传入证书上下文时,这才有效。
注意 不建议使用此函数来执行证书验证。 若要执行证书验证,请使用 CertGetCertificateChainCertVerifyCertificateChainPolicy 函数。
 
WINTRUST_ACTION_GENERIC_CHAIN_VERIFY
验证从任何对象类型创建的证书链。 通过使用每个签名者和计数器签名者的链上下文来实现最终链策略的回调。
WINTRUST_ACTION_GENERIC_VERIFY_V2
使用 Authenticode 策略提供程序验证文件或对象。
WINTRUST_ACTION_TRUSTPROVIDER_TEST
调用 Authenticode 策略提供程序后,将 CRYPT_PROVIDER_DATA 结构写入文件。

[in] pWinTrustData

指向 WINTRUST_DATA 结构的指针,该结构包含 信任提供程序 处理指定作标识符所需的信息。 通常,该结构包含用于标识信任提供程序必须评估的对象的信息。

结构的格式取决于作标识符。 有关特定作标识符所需的数据的信息,请参阅支持该作的信任提供程序的文档。

返回值

请注意,虽然返回类型声明为 HRESULT,但此 API 返回 Win32 错误代码,请勿使用 SUCCEEDED() 或 FAILED()来测试结果。

如果信任提供程序验证使用者是否信任指定的作,则返回值ERROR_SUCCESS。 否则,该函数从 信任提供程序返回状态代码。

例如,信任提供程序可能指示主题不受信任,或者受信任,但存在限制或警告。 返回值可以是单个信任提供程序文档中描述的信任提供程序特定值,也可以是以下错误代码之一。

返回代码 Description
TRUST_E_SUBJECT_NOT_TRUSTED
使用者未能执行指定的验证作。 大多数信任提供程序返回更详细的错误代码,用于描述失败的原因。
注意  

根据 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

 
TRUST_E_PROVIDER_UNKNOWN
此系统上无法识别信任提供程序。
TRUST_E_ACTION_UNKNOWN
信任提供程序不支持指定的作。
TRUST_E_SUBJECT_FORM_UNKNOWN
信任提供程序不支持为主题指定的表单。

要求

Requirement 价值
最低支持的客户端 Windows XP [仅限桌面应用]
支持的最低服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows操作系统
Header wintrust.h
Library Wintrust.lib
DLL Wintrust.dll