WinVerifyTrust 함수(wintrust.h)

WinVerifyTrust 함수는 지정된 개체에 대해 트러스트 확인 작업을 수행합니다. 함수는 작업 식별자를 지원하는 트러스트 공급자 (있는 경우)에 문의를 전달합니다.

인증서 확인을 위해 CertGetCertificateChainCertVerifyCertificateChainPolicy 함수를 사용합니다.

구문

LONG WinVerifyTrust(
  [in] HWND   hwnd,
  [in] GUID   *pgActionID,
  [in] LPVOID pWVTData
);

매개 변수

[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_CHAIN_VERIFY
개체 형식에서 만든 인증서 체인을 확인합니다. 각 서명자 및 카운터 서명자에 대한 체인 컨텍스트를 사용하여 최종 체인 정책을 구현하기 위한 콜백이 제공됩니다.
WINTRUST_ACTION_GENERIC_VERIFY_V2
Authenticode 정책 공급자를 사용하여 파일 또는 개체를 확인합니다.
WINTRUST_ACTION_TRUSTPROVIDER_TEST
Authenticode 정책 공급자를 호출한 후 파일에 CRYPT_PROVIDER_DATA 구조를 씁니다.

[in] pWVTData

WINTRUST_DATA 구조로 캐스팅할 때 트러스트 공급자가 지정된 작업 식별자를 처리하는 데 필요한 정보를 포함하는 포인터입니다. 일반적으로 구조에는 트러스트 공급자가 평가해야 하는 개체를 식별하는 정보가 포함됩니다.

구조체의 형식은 작업 식별자에 따라 달라집니다. 특정 작업 식별자에 필요한 데이터에 대한 자세한 내용은 해당 작업을 지원하는 신뢰 공급자에 대한 설명서를 참조하세요.

반환 값

트러스트 공급자가 지정된 작업에 대해 주체를 신뢰할 수 있는지 확인하면 반환 값은 0입니다. 0 이외의 다른 값은 성공적인 반환으로 간주되어서는 안 됩니다.

트러스트 공급자가 지정된 작업에 대해 주체가 신뢰할 수 있는지 확인하지 않으면 함수는 트러스트 공급자의 상태 코드를 반환합니다.

참고 반환 값은 앞에서 설명한 대로 HRESULT가 아닌 LONG입니다. SUCCEEDED와 같은 HRESULT 매크로를 사용하여 함수가 성공했는지 여부를 결정하지 마세요. 대신 같음의 반환 값을 0으로 검사.

 

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

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

TRUST_E_SUBJECT_NOT_TRUSTED 반환 코드는 HKLM\Software\Microsoft\Cryptography\Wintrust\Config 아래의 EnableCertPaddingCheck 레지스트리 키 값에 따라 반환될 수 있습니다. EnableCertPaddingCheck가 "1"로 설정된 경우 WIN_CERTIFICATE 구조에 불필요한 정보가 포함되어 있지 않은지 확인하기 위해 추가 검사 수행됩니다. 검사 PKCS #7 구조체 외에 0이 아닌 데이터가 없는지 확인합니다. 자세한 내용은 보안 권고 http://technet.microsoft.com/security/advisory/2915720#section1를 참조하세요.

 
TRUST_E_PROVIDER_UNKNOWN
신뢰 공급자가 이 시스템에서 인식되지 않습니다.
TRUST_E_ACTION_UNKNOWN
트러스트 공급자는 지정된 작업을 지원하지 않습니다.
TRUST_E_SUBJECT_FORM_UNKNOWN
신뢰 공급자는 제목에 지정된 양식을 지원하지 않습니다.

설명

WinVerifyTrust 함수를 사용하면 애플리케이션이 트러스트 공급자를 호출하여 지정된 개체가 지정된 확인 작업의 조건을 충족하는지 확인할 수 있습니다. pgActionID 매개 변수는 확인 작업을 식별하고 pWinTrustData 매개 변수는 트러스트를 확인할 개체를 식별합니다. 트러스트 공급자는 운영 체제에 등록된 DLL입니다. WinVerifyTrust에 대한 호출은 지정된 작업 식별자를 지원하는 등록된 신뢰 공급자(있는 경우)에 대한 호출을 전달합니다.

예를 들어 소프트웨어 게시자 신뢰 공급자는 실행 파일 이미지 파일이 신뢰할 수 있는 소프트웨어 게시자에서 제공되었으며 파일이 게시된 이후 수정되지 않은지 확인할 수 있습니다. 이 경우 pWinTrustData 매개 변수는 파일의 이름과 파일 형식(예: Microsoft Portable Executable 이미지 파일)을 지정합니다.

각 트러스트 공급자는 평가할 수 있는 특정 작업 집합을 지원합니다. 각 작업에는 이를 식별하는 GUID가 있습니다. 트러스트 공급자는 임의의 수의 작업 식별자를 지원할 수 있지만 두 신뢰 공급자는 동일한 작업 식별자를 지원할 수 없습니다.

이 함수를 사용하여 PE(이식 가능한 실행 파일) 파일의 서명을 확인하는 방법을 보여 주는 예제는 예제 C 프로그램: PE 파일의 서명 확인을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 wintrust.h(Softpub.h 포함)
라이브러리 Wintrust.lib
DLL Wintrust.dll