Fungsi MsiGetFileSignatureInformationA (msi.h)

Fungsi MsiGetFileSignatureInformation mengambil jalur ke file yang telah ditandatangani secara digital dan mengembalikan sertifikat dan hash penanda tangan file. MsiGetFileSignatureInformation dapat dipanggil untuk mendapatkan sertifikat penanda tangan dan hash yang diperlukan untuk mengisi tabel MsiDigitalCertificate, MsiPatchCertificate, dan MsiDigitalSignature .

Pemasang Windows 3.0 dan yang lebih baru: Dimulai dengan Pemasang Windows 3.0, Pemasang Windows dapat memverifikasi tanda tangan digital patch (file .msp) dengan menggunakan tabel MsiPatchCertificate dan MsiDigitalCertificate . Untuk informasi selengkapnya, lihat Panduan penulisan Penginstalan Aman dan Patching Kontrol Akun Pengguna (UAC).

Pemasang Windows 2.0: Tanda tangan digital patch tidak didukung. Pemasang Windows 2.0 menggunakan tanda tangan digital sebagai sarana untuk mendeteksi sumber daya yang rusak, dan hanya dapat memverifikasi tanda tangan digital kabinet eksternal, dan hanya dengan menggunakan tabel MsiDigitalSignature dan MsiDigitalCertificate .

Sintaks

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

Parameter

[in] szSignedObjectPath

Penunjuk ke string yang dihentikan null yang menentukan jalur lengkap ke file yang berisi tanda tangan digital.

[in] dwFlags

Bendera kasus kesalahan khusus.

Bendera Makna
MSI_INVALID_HASH_IS_FATAL
0x1
Tanpa set bendera ini, dan ketika hanya meminta konteks sertifikat, hash yang tidak valid dalam tanda tangan digital tidak menyebabkan MsiGetFileSignatureInformation mengembalikan kesalahan fatal.

Untuk mengembalikan kesalahan fatal untuk hash yang tidak valid, atur bendera MSI_INVALID_HASH_IS_FATAL.

[out] ppcCertContext

Konteks sertifikat penanda tangan yang dikembalikan

[out] pbHashData

Buffer hash yang dikembalikan. Parameter ini dapat berupa NULL jika data hash tidak diminta.

[in, out] pcbHashData

Penunjuk ke variabel yang menentukan ukuran, dalam byte, dari buffer yang diacu oleh parameter pbHashData . Parameter ini tidak boleh NULL jika pbHashData bukan NULL. Jika ERROR_MORE_DATA dikembalikan, pbHashData memberikan ukuran buffer yang diperlukan untuk menyimpan data hash. Jika ERROR_SUCCESS dikembalikan, ia memberikan jumlah byte yang ditulis ke buffer hash. Parameter pcbHashData diabaikan jika pbHashData adalah NULL.

Mengembalikan nilai

Nilai Makna
ERROR_SUCCESS/S_OK
Penyelesaian berhasil.
ERROR_INVALID_PARAMETER
Parameter tidak valid ditentukan.
ERROR_FUNCTION_FAILED

WinVerifyTrust tidak tersedia di sistem. MsiGetFileSignatureInformation memerlukan keberadaan file Wintrust.dll pada sistem.

ERROR_MORE_DATA
Buffer terlalu kecil untuk menyimpan data yang diminta. Jika ERROR_MORE_DATA dikembalikan, pcbHashData memberikan ukuran buffer yang diperlukan untuk menyimpan data hash.
TRUST_E_NOSIGNATURE
File tidak ditandatangani
TRUST_E_BAD_DIGEST
Hash file saat ini tidak valid sesuai dengan hash yang disimpan dalam tanda tangan digital file.
CERT_E_REVOKED
Sertifikat penanda tangan file telah dicabut. Tanda tangan digital file disusupi.
TRUST_E_SUBJECT_NOT_TRUSTED
Subjek gagal dalam tindakan verifikasi yang ditentukan. Sebagian besar penyedia kepercayaan mengembalikan kode kesalahan yang lebih rinci yang menjelaskan alasan kegagalan tersebut.
TRUST_E_PROVIDER_UNKNOWN
Penyedia kepercayaan tidak dikenal pada sistem ini.
TRUST_E_ACTION_UNKNOWN
Penyedia kepercayaan tidak mendukung tindakan yang ditentukan.
TRUST_E_SUBJECT_FORM_UNKNOWN
Penyedia kepercayaan tidak mendukung formulir yang ditentukan untuk subjek.
 
 

MsiGetFileSignatureInformation juga mengembalikan semua nilai kesalahan Win32 yang dipetakan ke jenis data HRESULT yang setara dengan HRESULT_FROM_WIN32.

Keterangan

Saat hanya meminta konteks sertifikat, hash yang tidak valid dalam tanda tangan digital tidak menyebabkan MsiGetFileSignatureInformation mengembalikan kesalahan fatal. Untuk mengembalikan kesalahan fatal untuk hash yang tidak valid, atur bendera MSI_INVALID_HASH_IS_FATAL di parameter dwFlags .

Konteks sertifikat dan informasi hash diekstrak dari file dengan panggilan ke WinVerifyTrust. Parameter ppcCertContext adalah duplikat konteks sertifikat penanda tangan dari tanda tangan. Pemanggil bertanggung jawab untuk memanggil CertFreeCertificateContext untuk membebaskan konteks sertifikat setelah selesai.

Perhatikan bahwa MsiGetFileSignatureInformation memerlukan keberadaan file Wintrust.dll pada sistem.

Catatan

Header msi.h mendefinisikan MsiGetFileSignatureInformation sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Pemasang Windows pada Windows Server 2003 atau Windows XP. Lihat Persyaratan Run-Time Penginstal Windows untuk informasi tentang paket layanan Windows minimum yang diperlukan oleh versi Pemasang Windows.
Target Platform Windows
Header msi.h
Pustaka Msi.lib
DLL Msi.dll

Lihat juga

Tanda Tangan Digital dan Pemasang Windows

Tabel MsiDigitalCertificate

Tabel MsiDigitalSignature