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 또는 0 이외의 값을 사용자와 상호 작용하는 데 사용할 수 있는 유효한 창 핸들로 처리할 수 있습니다.

[in] pgActionID

작업을 식별하는 GUID 구조체와 해당 작업을 지원하는 신뢰 공급자 에 대한 포인터입니다. 이 값은 pWinTrustData가 가리키는 구조체에서 수행할 확인 작업의 유형을 나타냅니다.

WinTrust 서비스는 타사에서 구현한 트러스트 공급자와 작동하도록 설계되었습니다. 각 트러스트 공급자는 고유한 작업 식별자 집합을 제공합니다. 신뢰 공급자가 지원하는 작업 식별자에 대한 자세한 내용은 해당 신뢰 공급자에 대한 설명서를 참조하세요.

예를 들어 Microsoft는 인터넷 또는 다른 공용 네트워크에서 다운로드되는 소프트웨어의 신뢰성을 설정할 수 있는 소프트웨어 게시자 신뢰 공급자를 제공합니다. 소프트웨어 게시자 신뢰 공급자는 다음 작업 식별자를 지원합니다. 이러한 상수는 Softpub.h에 정의되어 있습니다.

의미
DRIVER_ACTION_VERIFY
WHQL(Windows Hardware Quality Labs) 서명된 드라이버의 신뢰성을 확인합니다. Authenticode 추가 기능 정책 공급자입니다.
HTTPSPROV_ACTION
인터넷 Explorer 통해 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. 그렇지 않으면 함수는 신뢰 공급자에서 상태 코드를 반환합니다.

예를 들어 신뢰 공급자는 주체가 신뢰할 수 없거나 신뢰할 수 있지만 제한 사항 또는 경고가 있음을 나타낼 수 있습니다. 반환 값은 개별 신뢰 공급자에 대한 설명서에 설명된 신뢰 공급자별 값이거나 다음 오류 코드 중 하나일 수 있습니다.

반환 코드 설명
TRUST_E_SUBJECT_NOT_TRUSTED
주체가 지정된 확인 작업에 실패했습니다. 대부분의 신뢰 공급자는 실패 이유를 설명하는 보다 자세한 오류 코드를 반환합니다.
참고  

TRUST_E_SUBJECT_NOT_TRUSTED 반환 코드는 HKLM\Software\Microsoft\Cryptography\Wintrust\Config 아래의 EnableCertPaddingCheck 레지스트리 키 값에 따라 반환될 수 있습니다. EnableCertPaddingCheck가 "1"로 설정된 경우 WIN_CERTIFICATE 구조에 불필요한 정보가 포함되어 있지 않은지 확인하기 위해 추가 검사 수행됩니다. 검사 PKCS #7 구조체 외에 0이 아닌 데이터가 없는지 확인합니다. 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