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.

Contrassegno Significato
MSI_INVALID_HASH_IS_FATAL
0x1
Senza questo set di flag e 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 di MSI_INVALID_HASH_IS_FATAL.

[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
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 ERROR_MORE_DATA viene restituito, pcbHashData fornisce le dimensioni del buffer necessario per contenere i dati hash.
TRUST_E_NOSIGNATURE
Il 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 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.
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 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

Vedi anche

Firme digitali e Windows Installer

Tabella MsiDigitalCertificate

Tabella MsiDigitalSignature