Condividi tramite


Funzione MsiGetFileSignatureInformationA (msi.h)

La funzione MsiGetFileSignatureInformation accetta il percorso di un file firmato digitalmente e restituisce il certificato e l'hash del firmatario del file. MsiGetFileSignatureInformation può essere chiamato per ottenere il certificato e l'hash del firmatario necessari per popolare le tabelle MsiDigitalCertificate, MsiPatchCertificatee 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 msp) usando le tabelle MsiPatchCertificate e MsiDigitalCertificate. Per altre informazioni, vedere Guidelines for Authoring Secure Installations and User Account Control (UAC) Patching.

Windows Installer 2.0: firme digitali delle patch non è supportata. Windows Installer 2.0 usa le firme digitali come mezzo per rilevare le risorse danneggiate e può verificare solo le firme digitali di archivi esterni e solo tramite l'uso del MsiDigitalSignature e MsiDigitalCertificate tabelle.

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 che specifica il percorso completo del file che contiene la firma digitale.

[in] dwFlags

Flag di caso di errore speciale.

Bandiera Significato
MSI_INVALID_HASH_IS_FATAL
0x1
Senza questo flag impostato e quando si richiede solo il contesto del certificato, un hash non valido nella firma digitale non causa MsiGetFileSignatureInformation restituire un errore irreversibile.

Per restituire un errore irreversibile per un hash non valido, impostare il flag MSI_INVALID_HASH_IS_FATAL.

[out] ppcCertContext

Contesto del certificato del firmatario 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 viene restituito ERROR_MORE_DATA, pbHashData fornisce le dimensioni del buffer necessario per contenere i dati hash. Se viene restituito ERROR_SUCCESS, restituisce il numero di byte scritti nel buffer hash. Il parametro pcbHashData viene ignorato se pbHashData è NULL.

Valore restituito

Valore Significato
ERROR_SUCCESS/S_OK
Completamento.
ERROR_INVALID_PARAMETER
È stato specificato un parametro non valido.
ERROR_FUNCTION_FAILED

WinVerifyTrust non è disponibile nel sistema. MsiGetFileSignatureInformation richiede la presenza del file Wintrust.dll nel sistema.

ERROR_MORE_DATA
Un buffer è troppo piccolo per contenere i dati richiesti. Se viene restituito ERROR_MORE_DATA, pcbHashData fornisce le dimensioni del buffer necessario per contenere i dati hash.
TRUST_E_NOSIGNATURE
File non firmato
TRUST_E_BAD_DIGEST
L'hash corrente del file non è valido in base all'hash archiviato nella firma digitale del file.
CERT_E_REVOKED
Il certificato del firmatario del file è stato revocato. La firma digitale del file viene compromessa.
TRUST_E_SUBJECT_NOT_TRUSTED
L'oggetto non ha superato l'azione di verifica specificata. La maggior parte dei provider di attendibilità restituisce un codice di errore più dettagliato che descrive il motivo dell'errore.
TRUST_E_PROVIDER_UNKNOWN
Il provider di attendibilità non viene riconosciuto in questo sistema.
TRUST_E_ACTION_UNKNOWN
Il provider di attendibilità non supporta l'azione specificata.
TRUST_E_SUBJECT_FORM_UNKNOWN
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 HRESULT_FROM_WIN32.

Osservazioni

Quando si richiede solo il contesto del certificato, un hash non valido nella firma digitale non causa MsiGetFileSignatureInformation restituire un errore irreversibile. 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 del firmatario dalla firma. È responsabilità del chiamante chiamare CertFreeCertificateContext liberare il contesto del certificato al termine.

Si noti che MsiGetFileSignatureInformation richiede la presenza del file 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 del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

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 Requisiti di windows Run-Time.
piattaforma di destinazione Finestre
intestazione msi.h
libreria Msi.lib
dll Msi.dll

Vedere anche

firme digitali e di Windows Installer

tabella MsiDigitalCertificate

tabella MsiDigitalSignature