MsiGetFileSignatureInformationA 関数 (msi.h)
MsiGetFileSignatureInformation 関数は、デジタル署名されたファイルへのパスを取得し、ファイルの署名者証明書とハッシュを返します。 MsiGetFileSignatureInformation を呼び出して、 MsiDigitalCertificate、 MsiPatchCertificate、および MsiDigitalSignature テーブルを設定するために必要な署名者証明書とハッシュを取得できます。
Windows インストーラー 3.0 以降: Windows インストーラー 3.0 以降、Windows インストーラーは 、MsiPatchCertificate テーブルと MsiDigitalCertificate テーブルを使用して、パッチ (.msp ファイル) のデジタル署名を確認できます。 詳細については、「 セキュリティで保護されたインストールの作成に関するガイドライン 」および 「ユーザー アカウント制御 (UAC) パッチ適用」を参照してください。
Windows インストーラー 2.0: パッチのデジタル署名はサポートされていません。 Windows インストーラー 2.0 は、破損したリソースを検出する手段としてデジタル署名を使用し、外部キャビネットのデジタル署名のみを検証でき、 MsiDigitalSignature テーブルと MsiDigitalCertificate テーブルの使用によってのみ検証できます。
構文
HRESULT MsiGetFileSignatureInformationA(
[in] LPCSTR szSignedObjectPath,
[in] DWORD dwFlags,
[out] PCCERT_CONTEXT *ppcCertContext,
[out] LPBYTE pbHashData,
[in, out] LPDWORD pcbHashData
);
パラメーター
[in] szSignedObjectPath
デジタル署名を含むファイルへの完全なパスを指定する null で終わる文字列へのポインター。
[in] dwFlags
特殊なエラー ケース フラグ。
[out] ppcCertContext
返された署名者証明書コンテキスト
[out] pbHashData
返されたハッシュ バッファー。 ハッシュ データが要求されていない場合、このパラメーターは NULL にすることができます。
[in, out] pcbHashData
pbHashData パラメーターが指すバッファーのサイズをバイト単位で指定する変数へのポインター。 pbHashData が NULL 以外の場合、このパラメーターを NULL にすることはできません。 ERROR_MORE_DATAが返された場合、 pbHashData はハッシュ データを保持するために必要なバッファーのサイズを指定します。 ERROR_SUCCESSが返された場合、ハッシュ バッファーに書き込まれたバイト数が返されます。 pbHashData が NULL の場合、pcbHashData パラメーターは無視されます。
戻り値
値 | 意味 |
---|---|
|
正常に完了しました。 |
|
無効なパラメーターが指定されました。 |
|
WinVerifyTrust はシステムでは使用できません。 MsiGetFileSignatureInformation には、システム上に Wintrust.dll ファイルが存在する必要があります。 |
|
バッファーが小さすぎて、要求されたデータを保持できません。 ERROR_MORE_DATAが返された場合、 pcbHashData はハッシュ データを保持するために必要なバッファーのサイズを指定します。 |
|
ファイルが署名されていません |
|
ファイルの現在のハッシュは、ファイルのデジタル署名に格納されているハッシュに従って無効です。 |
|
ファイルの署名者証明書が取り消されました。 ファイルのデジタル署名が侵害されています。 |
|
サブジェクトは、指定された検証アクションに失敗しました。 ほとんどの信頼プロバイダーは、エラーの理由を説明するより詳細なエラー コードを返します。 |
|
信頼プロバイダーはこのシステムでは認識されません。 |
|
信頼プロバイダーは、指定されたアクションをサポートしていません。 |
|
信頼プロバイダーは、サブジェクトに指定されたフォームをサポートしていません。 |
MsiGetFileSignatureInformation は、HRESULT_FROM_WIN32によって同等の HRESULT データ型にマップされたすべての Win32 エラー値も返します。
注釈
証明書コンテキストのみを要求する場合、デジタル署名の無効なハッシュでは 、MsiGetFileSignatureInformation から致命的なエラーが返されることはありません。 無効なハッシュの致命的なエラーを返すには、 dwFlags パラメーターに MSI_INVALID_HASH_IS_FATAL フラグを設定します。
証明書コンテキストとハッシュ情報は、 WinVerifyTrust の呼び出しによってファイルから抽出されます。 ppcCertContext パラメーターは、署名からの署名者証明書コンテキストの複製です。 完了したら、 CertFreeCertificateContext を呼び出して証明書コンテキストを解放するのは呼び出し元の責任です。
MsiGetFileSignatureInformation には、システム上に Wintrust.dll ファイルが存在する必要があることに注意してください。
注意
msi.h ヘッダーは、MSIGetFileSignatureInformation をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー。 Windows インストーラーのバージョン別に必須となる最小 Windows サービス パックに関する詳細については、Windows インストーラーの実行時の要件に関する記事を参照してください。 |
対象プラットフォーム | Windows |
ヘッダー | msi.h |
Library | Msi.lib |
[DLL] | Msi.dll |