Share via


winVerifyTrustEx 函式 (wintrust.h)

WinVerifyTrustEx 函式會在指定的物件上執行信任驗證動作,並取得WINTRUST_DATA結構的指標。 函式會將查詢傳遞給支援動作標識碼 的信任提供者

針對憑證驗證,請使用 CertGetCertificateChainCertVerifyCertificateChainPolicy 函式。

語法

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

參數

[in] hwnd

呼叫端視窗的選擇性句柄。 信任提供者可以使用此值來判斷它是否可以與用戶互動。 不過,信任提供者通常會執行驗證動作,而不需要用戶輸入。

此參數可以是下列其中一個值。

意義
INVALID_HANDLE_VALUE
沒有互動式使用者。 信任提供者會執行驗證動作,而不需要用戶的協助。
Zero
信任提供者可以使用互動式桌面來顯示其使用者介面。
有效的視窗句柄
信任提供者可以將INVALID_HANDLE_VALUE或零以外的任何值視為可以用來與用戶互動的有效視窗句柄。

[in] pgActionID

GUID 結構的指標,可識別動作和支援該動作的信任提供者。 這個值表示要對 pWinTrustData 所指向之結構執行的驗證動作類型。

WinTrust 服務的設計目的是要與第三方實作的信任提供者搭配使用。 每個信任提供者都會提供自己的唯一動作標識碼集。 如需信任提供者所支援之動作標識符的相關信息,請參閱該信任提供者的檔。

例如,Microsoft 提供軟體發行者信任提供者,可建立從因特網或其他公用網路下載之軟體的信任度。 軟體發行者信任提供者支援下列動作標識碼。 這些常數定義於Softpub.h中。

意義
DRIVER_ACTION_VERIFY
確認 Windows 硬體質量實驗室 (WHQL) 簽署驅動程式的真實性。 這是 Authenticode 附加元件原則提供者。
HTTPSPROV_ACTION
透過 Internet Explorer 驗證 SSL/TLS 連線。
OFFICESIGN_ACTION_VERIFY
不支援此動作識別碼。 使用 Microsoft Office Authenticode 附加元件原則提供者來驗證結構化記憶體檔案的真實性。

Windows Server 2003 和 Windows XP: 支援此動作識別碼。

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 結構之外沒有非零的數據。 EnableCertPaddingCheck 機碼預設會在 2014 年 6 月 10 日設定為 “1”。 如需詳細資訊,請參閱下列安全性諮詢: http://technet.microsoft.com/security/advisory/2915720#section1

 
TRUST_E_PROVIDER_UNKNOWN
此系統上無法辨識信任提供者。
TRUST_E_ACTION_UNKNOWN
信任提供者不支援指定的動作。
TRUST_E_SUBJECT_FORM_UNKNOWN
信任提供者不支援為主體指定的表單。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 wintrust.h
程式庫 Wintrust.lib
Dll Wintrust.dll