WinVerifyTrust 函式會在指定的物件上執行信任驗證動作。 函式會將查詢傳遞至支援動作識別碼的 信任提供者 (如果存在的話)。
針對憑證驗證,請使用 CertGetCertificateChain 和 CertVerifyCertificateChainPolicy 函式。
語法
LONG WinVerifyTrust(
[in] HWND hwnd,
[in] GUID *pgActionID,
[in] LPVOID pWVTData
);
參數
[in] hwnd
呼叫端視窗的選擇性控制碼。 信任提供者可以使用此值來判斷它是否可以與使用者互動。 不過,信任提供者通常會在不需要使用者輸入的情況下執行驗證動作。
此參數可以是下列其中一個值。
| 價值觀 | Meaning |
|---|---|
|
沒有互動式使用者。 信任提供者會在沒有使用者協助的情況下執行驗證動作。 |
|
信任提供者可以使用互動式桌面來顯示其使用者介面。 |
|
信任提供者可以將 INVALID_HANDLE_VALUE 或零以外的任何值視為可用來與使用者互動的有效視窗句柄。 |
[in] pgActionID
識別動作的 GUID 結構指標,以及支援該動作的 信任提供者 。 此值指出要在 pWinTrustData 所指向的結構上執行的驗證動作類型。
WinTrust 服務旨在與第三方實施的信任提供者合作。 每個信任提供者都會提供自己唯一的動作識別碼集。 如需信任提供者所支援之動作識別碼的相關資訊,請參閱該信任提供者的文件。
例如,Microsoft 提供軟體發行者信任提供者,可建立從因特網或其他公用網路下載之軟體的可信度。 軟體發行者信任提供者支援下列動作識別碼。 這些常數在 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 [僅限傳統型應用程式] |
| 目標平臺 | 窗戶 |
| Header | wintrust.h(包括 Softpub.h) |
| Library | Wintrust.lib 網站 |
| DLL檔案 | Wintrust.dll |