다음을 통해 공유


MsiGetFileSignatureInformationA 함수(msi.h)

MsiGetFileSignatureInformation 함수는 디지털 서명된 파일의 경로를 가져와 파일의 서명자 인증서 및 해시를 반환합니다. MsiGetFileSignatureInformation 은 서명자 인증서를 얻기 위해 호출될 수 있으며 MsiDigitalCertificate, MsiPatchCertificateMsiDigitalSignature 테이블을 채우는 데 필요한 해시입니다.

Windows Installer 3.0 이상: Windows Installer 3.0부터 Windows Installer는 MsiPatchCertificateMsiDigitalCertificate 테이블을 사용하여 패치(.msp 파일)의 디지털 서명을 확인할 수 있습니다. 자세한 내용은 보안 설치UAC(사용자 계정 제어) 패치 작성 지침을 참조하세요.

Windows Installer 2.0: 패치의 디지털 서명은 지원되지 않습니다. Windows Installer 2.0은 디지털 서명을 사용하여 손상된 리소스를 검색하고 외부 캐비닛의 디지털 서명만 확인할 수 있으며 MsiDigitalSignatureMsiDigitalCertificate 테이블을 사용해야만 확인할 수 있습니다.

구문

HRESULT MsiGetFileSignatureInformationA(
  [in]      LPCSTR         szSignedObjectPath,
  [in]      DWORD          dwFlags,
  [out]     PCCERT_CONTEXT *ppcCertContext,
  [out]     LPBYTE         pbHashData,
  [in, out] LPDWORD        pcbHashData
);

매개 변수

[in] szSignedObjectPath

디지털 서명이 포함된 파일의 전체 경로를 지정하는 null로 끝나는 문자열에 대한 포인터입니다.

[in] dwFlags

특수 오류 사례 플래그입니다.

플래그 의미
MSI_INVALID_HASH_IS_FATAL
0x1
이 플래그를 설정하지 않고 인증서 컨텍스트만 요청할 때 디지털 서명의 잘못된 해시로 인해 MsiGetFileSignatureInformation 이 심각한 오류를 반환하지 않습니다.

잘못된 해시에 대한 심각한 오류를 반환하려면 MSI_INVALID_HASH_IS_FATAL 플래그를 설정합니다.

[out] ppcCertContext

반환된 서명자 인증서 컨텍스트

[out] pbHashData

반환된 해시 버퍼입니다. 해시 데이터가 요청되지 않는 경우 이 매개 변수는 NULL 일 수 있습니다.

[in, out] pcbHashData

pbHashData 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 변수에 대한 포인터입니다. pbHashDataNULL이 아닌 경우 이 매개 변수는 NULL일 수 없습니다. ERROR_MORE_DATA 반환되면 pbHashData 는 해시 데이터를 보유하는 데 필요한 버퍼의 크기를 제공합니다. ERROR_SUCCESS 반환되면 해시 버퍼에 기록된 바이트 수를 제공합니다. pbHashDataNULL인 경우 pcbHashData 매개 변수는 무시됩니다.

반환 값

의미
ERROR_SUCCESS/S_OK
완료되었습니다.
ERROR_INVALID_PARAMETER
잘못된 매개 변수가 지정되었습니다.
ERROR_FUNCTION_FAILED

WinVerifyTrust 는 시스템에서 사용할 수 없습니다. MsiGetFileSignatureInformation 에는 시스템에 Wintrust.dll 파일이 있어야 합니다.

ERROR_MORE_DATA
버퍼가 너무 작아서 요청된 데이터를 보유할 수 없습니다. ERROR_MORE_DATA 반환되면 pcbHashData 는 해시 데이터를 보유하는 데 필요한 버퍼의 크기를 제공합니다.
TRUST_E_NOSIGNATURE
파일이 서명되지 않았습니다.
TRUST_E_BAD_DIGEST
파일의 디지털 서명에 저장된 해시에 따라 파일의 현재 해시가 잘못되었습니다.
CERT_E_REVOKED
파일의 서명자 인증서가 해지되었습니다. 파일의 디지털 서명이 손상되었습니다.
TRUST_E_SUBJECT_NOT_TRUSTED
주체가 지정된 확인 작업에 실패했습니다. 대부분의 신뢰 공급자는 실패 이유를 설명하는 보다 자세한 오류 코드를 반환합니다.
TRUST_E_PROVIDER_UNKNOWN
신뢰 공급자가 이 시스템에서 인식되지 않습니다.
TRUST_E_ACTION_UNKNOWN
트러스트 공급자는 지정된 작업을 지원하지 않습니다.
TRUST_E_SUBJECT_FORM_UNKNOWN
신뢰 공급자는 제목에 지정된 양식을 지원하지 않습니다.
 
 

MsiGetFileSignatureInformation 은 HRESULT_FROM_WIN32 해당 HRESULT 데이터 형식에 매핑된 모든 Win32 오류 값도 반환합니다.

설명

인증서 컨텍스트만 요청할 때 디지털 서명의 잘못된 해시로 인해 MsiGetFileSignatureInformation 이 심각한 오류를 반환하지 않습니다. 잘못된 해시에 대한 심각한 오류를 반환하려면 dwFlags 매개 변수에서 MSI_INVALID_HASH_IS_FATAL 플래그를 설정합니다.

인증서 컨텍스트 및 해시 정보는 WinVerifyTrust를 호출하여 파일에서 추출됩니다. ppcCertContext 매개 변수는 서명자의 서명자 인증서 컨텍스트와 중복된 매개 변수입니다. 완료되면 인증서 컨텍스트를 해제하기 위해 CertFreeCertificateContext 를 호출하는 것은 호출자의 책임입니다.

MsiGetFileSignatureInformation에는 시스템에 Wintrust.dll 파일이 있어야 합니다.

참고

msi.h 헤더는 MSiGetFileSignatureInformation을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2012, Windows 8, Windows Server 2008 R2 또는 Windows 7의 Windows Installer 5.0. Windows Server 2008 또는 Windows Vista의 Windows Installer 4.0 또는 Windows Installer 4.5. Windows Server 2003 또는 Windows XP의 Windows Installer. Windows Installer 버전에 필요한 최소 Windows 서비스 팩에 대한 자세한 내용은 Windows Installer 런타임 요구 사항을 참조하세요.
대상 플랫폼 Windows
헤더 msi.h
라이브러리 Msi.lib
DLL Msi.dll

추가 정보

디지털 서명 및 Windows Installer

MsiDigitalCertificate 테이블

MsiDigitalSignature 테이블