Share via


Funzione MsiGetFileSignatureInformationW (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 del firmatario 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 msp) usando le tabelle MsiPatchCertificate e MsiDigitalCertificate . Per altre informazioni, vedere Linee guida per la creazione di installazioni protette e l'applicazione di patch al controllo dell'account utente.

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ò solo verificare le firme digitali degli archivi cab esterni e solo tramite l'uso delle tabelle MsiDigitalSignature e MsiDigitalCertificate .

Sintassi

HRESULT MsiGetFileSignatureInformationW(
  [in]      LPCWSTR        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 del caso di errore speciale.

Flag 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 determina la restituzione di un errore irreversibile da 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 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 restituisce 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 restituisce 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 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 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 del firmatario dalla firma. È responsabilità del chiamante chiamare CertFreeCertificateContext per 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

   
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 Windows Installer Run-Time Requirements .See the Windows Installer requirements for information about the minimum Windows Service Pack that is required by a Windows Installer version.
Piattaforma di destinazione Windows
Intestazione msi.h
Libreria Msi.lib
DLL Msi.dll

Vedi anche

Firme digitali e Windows Installer

Tabella MsiDigitalCertificate

Tabella MsiDigitalSignature