wintrust.h) (WINTRUST_DATA 结构

[ WINTRUST_DATA 结构可用于“要求”部分中指定的操作系统。 在后续版本中,它可能已更改或不可用。]

调用 WinVerifyTrust 将必要信息传递到信任提供程序时,将使用 WINTRUST_DATA 结构。

语法

typedef struct _WINTRUST_DATA {
  DWORD                               cbStruct;
  LPVOID                              pPolicyCallbackData;
  LPVOID                              pSIPClientData;
  DWORD                               dwUIChoice;
  DWORD                               fdwRevocationChecks;
  DWORD                               dwUnionChoice;
  union {
#if ...
    WINTRUST_FILE_INFO_                *pFile;
#else
    struct WINTRUST_FILE_INFO_         *pFile;
#endif
#if ...
    WINTRUST_CATALOG_INFO_             *pCatalog;
#else
    struct WINTRUST_CATALOG_INFO_      *pCatalog;
#endif
#if ...
    WINTRUST_BLOB_INFO_                *pBlob;
#else
    struct WINTRUST_BLOB_INFO_         *pBlob;
#endif
#if ...
    WINTRUST_SGNR_INFO_                *pSgnr;
#else
    struct WINTRUST_SGNR_INFO_         *pSgnr;
#endif
#if ...
    WINTRUST_CERT_INFO_                *pCert;
#else
    struct WINTRUST_CERT_INFO_         *pCert;
#endif
#if ...
    WINTRUST_DETACHED_SIG_INFO_        *pDetachedSig;
#else
    struct WINTRUST_DETACHED_SIG_INFO_ *pDetachedSig;
#endif
  };
  DWORD                               dwStateAction;
  HANDLE                              hWVTStateData;
  WCHAR                               *pwszURLReference;
  DWORD                               dwProvFlags;
  DWORD                               dwUIContext;
  struct WINTRUST_SIGNATURE_SETTINGS_ *pSignatureSettings;
} WINTRUST_DATA, *PWINTRUST_DATA;

成员

cbStruct

此结构的大小(以字节为单位)。

pPolicyCallbackData

指向数据缓冲区的指针,用于将特定于策略的数据传递给策略提供程序。 此成员可以为 NULL

pSIPClientData

指向数据缓冲区的指针,用于将 主题接口包 (SIP) 特定的数据传递给 SIP 提供程序。 此成员可以为 NULL

dwUIChoice

指定要使用的用户界面 (UI) 的类型。 此成员必须是以下值之一。

含义
WTD_UI_ALL
1
显示所有 UI。
WTD_UI_NONE
2
不显示 UI。
WTD_UI_NOBAD
3
不显示任何负 UI。
WTD_UI_NOGOOD
4
不显示任何正 UI。

fdwRevocationChecks

证书吊销检查选项。 可以将此成员设置为将吊销检查添加到所选策略提供程序执行的吊销检查。 此成员必须是以下值之一。

含义
WTD_REVOKE_NONE
0
WTD_REVOKE_NONE 标志与 WinVerifyTrust 函数的 pgActionID 参数中设置的 HTTPSPROV_ACTION 值结合使用时,不会执行其他吊销检查。 若要确保 WinVerifyTrust 函数在验证代码签名时不会尝试任何网络检索,必须在 dwProvFlags 参数中设置WTD_CACHE_ONLY_URL_RETRIEVAL
WTD_REVOKE_WHOLECHAIN
1
吊销检查将在整个链上完成。

dwUnionChoice

指定要使用的联合成员,从而指定要验证其信任的对象的类型。 此成员必须是以下值之一。

含义
WTD_CHOICE_FILE
1
使用 pFile 指向的文件。
WTD_CHOICE_CATALOG
2
使用 pCatalog 指向的目录。
WTD_CHOICE_BLOB
3
使用 pBlob 指向的 BLOB
WTD_CHOICE_SIGNER
4
使用 pSgnr 指向的 [WINTRUST_SGNR_INFO] (/windows/desktop/api/wintrust/ns-wintrust-wintrust_sgnr_info) 结构。
WTD_CHOICE_CERT
5
使用 pCert 指向的证书。

pFile

指向 WINTRUST_FILE_INFO 结构的指针。

pCatalog

指向 WINTRUST_CATALOG_INFO 结构的指针。

pBlob

指向 WINTRUST_BLOB_INFO 结构的指针。

pSgnr

指向 WINTRUST_SGNR_INFO 结构的指针。

pCert

指向 WINTRUST_CERT_INFO 结构的指针。

pDetachedSig

dwStateAction

指定要执行的操作。 这可以是以下值之一。

含义
WTD_STATEACTION_IGNORE
0x00000000
忽略 hWVTStateData 成员。
WTD_STATEACTION_VERIFY
0x00000001
验证对象 (通常由 dwUnionChoice 成员指定的文件) 的信任。 hWVTStateData 成员将收到状态数据的句柄。 必须通过在后续调用中指定 WTD_STATEACTION_CLOSE 操作来释放此句柄。
WTD_STATEACTION_CLOSE
0x00000002
释放之前使用 WTD_STATEACTION_VERIFY 操作分配的 hWVTStateData 成员。 每次使用 WTD_STATEACTION_VERIFY 操作时,都必须指定此操作。
WTD_STATEACTION_AUTO_CACHE
0x00000003
将目录数据写入 WINTRUST_DATA 结构,然后缓存该结构。 仅当 dwUnionChoice 成员包含 WTD_CHOICE_CATALOG时,此操作才适用。
WTD_STATEACTION_AUTO_CACHE_FLUSH
0x00000004
刷新任何缓存的目录数据。 仅当 dwUnionChoice 成员包含 WTD_CHOICE_CATALOG时,此操作才适用。

hWVTStateData

状态数据的句柄。 此成员的内容取决于 dwStateAction 成员的值。

pwszURLReference

保留供将来使用。 设置为 NULL。

dwProvFlags

指定信任提供程序设置的 DWORD 值。 这可以是以下零个或多个值的按位组合。

含义
WTD_USE_IE4_TRUST_FLAG
1 (0x1)
验证信任的方式与 Internet Explorer 4.0 实现的方式相同。
WTD_NO_IE4_CHAIN_FLAG
2 (0x2)
不使用 Internet Explorer 4.0 链功能。
WTD_NO_POLICY_USAGE_FLAG
4 (0x4)
不会执行策略提供程序的默认验证(例如 验证码的代码签名),并且假定证书对所有用法都有效。
WTD_REVOCATION_CHECK_NONE
16 (0x10)
不执行吊销检查。
WTD_REVOCATION_CHECK_END_CERT
32 (0x20)
吊销检查仅在结束证书上执行。
WTD_REVOCATION_CHECK_CHAIN
64 (0x40)
吊销检查对整个证书链执行。
WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
128 (0x80)
吊销检查对整个证书链(根证书除外)执行。
WTD_SAFER_FLAG
256 (0x100)
不支持。
WTD_HASH_ONLY_FLAG
512 (0x200)
仅验证哈希。
WTD_USE_DEFAULT_OSVER_CHECK
1024 (0x400)
执行默认操作系统版本检查。 此标志仅用于验证目录签名的文件。
WTD_LIFETIME_SIGNING_FLAG
2048 (0x800)
如果未设置此标志,则所有带有时间戳的签名将被视为永久有效。 设置此标志会将签名的有效生存期限制为签名证书的生存期。 这允许时间戳签名过期。
WTD_CACHE_ONLY_URL_RETRIEVAL
4096 (0x1000)
仅使用本地缓存进行吊销检查。 防止通过网络进行吊销检查。

Windowsxp: 不支持此值。

WTD_DISABLE_MD2_MD4
8192 (0x2000)
禁用 MD2 和 MD4 哈希算法的使用。 如果使用 MD2 或 MD4 对文件进行签名,并且设置了此标志,则返回NTE_BAD_ALGID错误。
注意 具有 SP1 及更高版本的操作系统的 Windows 7 支持此标志。
 
WTD_MOTW
16384 (0x4000)
如果指定了此标志,则假定正在验证的文件已从 Web 下载,并且具有 Web 属性的 Mark。 将强制实施应用于 Web 文件的标记的策略。
注意Windows 8.1 及更高版本的操作系统或已安装 KB2862966 的系统上支持此标志。
 

dwUIContext

一个 DWORD 值,该值指定 WinVerifyTrust 函数的用户界面上下文。 这会导致“验证码”对话框中的文本与对文件执行的操作匹配。 这可以是以下值之一。

含义
WTD_UICONTEXT_EXECUTE
0
为要运行的文件调用 WinVerifyTrust 时使用。 这是默认值。
WTD_UICONTEXT_INSTALL
1
为要安装的文件调用 WinVerifyTrust 时使用 。

pSignatureSettings

指向 WINTRUST_SIGNATURE_SETTINGS 结构的指针。

Windows 8和Windows Server 2012:开始支持此成员。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 wintrust.h