Funzione MsiGetFileSignatureInformationA (msi.h)
La funzione MsiGetFileSignatureInformation accetta il percorso di un file firmato digitalmente e restituisce il certificato e l'hash del segno del file. MsiGetFileSignatureInformation può essere chiamato per ottenere il certificato di firma e l'hash necessari per popolare le tabelle MsiDigitalCertificate, MsiPatchCertificate e MsiDigitalSignature.
Windows Installer 3.0 e versioni successive: A partire da Windows Installer 3.0, Windows Installer può verificare le firme digitali delle patch (file con estensione msp) usando le tabelle MsiPatchCertificate e MsiDigitalCertificate . Per altre informazioni, vedere Linee guida per la creazione di installazioni sicure e l'applicazione di patch dell'account utente (UAC).
Windows Installer 2.0: Le firme digitali delle patch non sono supportate. Windows Installer 2.0 usa le firme digitali come mezzo per rilevare le risorse danneggiate e può verificare solo le firme digitali degli archivi esterni e solo dall'uso delle tabelle MsiDigitalSignature e MsiDigitalCertificate .
Sintassi
HRESULT MsiGetFileSignatureInformationA(
[in] LPCSTR szSignedObjectPath,
[in] DWORD dwFlags,
[out] PCCERT_CONTEXT *ppcCertContext,
[out] LPBYTE pbHashData,
[in, out] LPDWORD pcbHashData
);
Parametri
[in] szSignedObjectPath
Puntatore a una stringa con terminazione null specificando il percorso completo del file contenente la firma digitale.
[in] dwFlags
Flag di caso di errore speciali.
[out] ppcCertContext
Contesto del certificato di firma restituito
[out] pbHashData
Buffer hash restituito. Questo parametro può essere NULL se i dati hash non vengono richiesti.
[in, out] pcbHashData
Puntatore a una variabile che specifica le dimensioni, in byte, del buffer a cui punta il parametro pbHashData . Questo parametro non può essere NULL se pbHashData non è NULL. Se ERROR_MORE_DATA viene restituito, pbHashData fornisce le dimensioni del buffer necessario per contenere i dati hash. Se ERROR_SUCCESS viene restituito, fornisce il numero di byte scritti nel buffer hash. Il parametro pcbHashData viene ignorato se pbHashData è NULL.
Valore restituito
Valore | Significato |
---|---|
|
Completamento. |
|
È stato specificato un parametro non valido. |
|
WinVerifyTrust non è disponibile nel sistema. MsiGetFileSignatureInformation richiede la presenza del file Wintrust.dll nel sistema. |
|
Un buffer è troppo piccolo per contenere i dati richiesti. Se ERROR_MORE_DATA viene restituito, pcbHashData fornisce le dimensioni del buffer necessario per contenere i dati hash. |
|
Il file non è firmato |
|
L'hash corrente del file non è valido in base all'hash archiviato nella firma digitale del file. |
|
Il certificato del firmatario del file è stato revocato. La firma digitale del file viene compromessa. |
|
L'oggetto ha avuto esito negativo nell'azione di verifica specificata. La maggior parte dei provider di attendibilità restituisce un codice di errore più dettagliato che descrive il motivo dell'errore. |
|
Il provider di attendibilità non viene riconosciuto in questo sistema. |
|
Il provider di attendibilità non supporta l'azione specificata. |
|
Il provider di attendibilità non supporta il modulo specificato per l'oggetto. |
MsiGetFileSignatureInformation restituisce anche tutti i valori di errore Win32 mappati al tipo di dati HRESULT equivalente per HRESULT_FROM_WIN32.
Commenti
Quando si richiede solo il contesto del certificato, un hash non valido nella firma digitale non causa la restituzione di un errore irreversibile di MsiGetFileSignatureInformation . Per restituire un errore irreversibile per un hash non valido, impostare il flag MSI_INVALID_HASH_IS_FATAL nel parametro dwFlags .
Il contesto del certificato e le informazioni hash vengono estratte dal file da una chiamata a WinVerifyTrust. Il parametro ppcCertContext è un duplicato del contesto del certificato di firma dalla firma. È responsabilità del chiamante chiamare CertFreeCertificateContext per liberare il contesto del certificato al termine.
Si noti che MsiGetFileSignatureInformation richiede la presenza del file di Wintrust.dll nel sistema.
Nota
L'intestazione msi.h definisce MsiGetFileSignatureInformation come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 in Windows Server 2008 o Windows Vista. Windows Installer in Windows Server 2003 o Windows XP. Per informazioni sul Service Pack minimo di Windows Richiesto da una versione di Windows Installer, vedere i requisiti di Windows Installer Run-Time. |
Piattaforma di destinazione | Windows |
Intestazione | msi.h |
Libreria | Msi.lib |
DLL | Msi.dll |