MsiGetFileSignatureInformationA-Funktion (msi.h)

Die MsiGetFileSignatureInformation-Funktion übernimmt den Pfad zu einer Datei, die digital signiert wurde, und gibt das Signaturzertifikat und den Hash der Datei zurück. MsiGetFileSignatureInformation kann aufgerufen werden, um das Signerzertifikat und den Hash abzurufen, der zum Auffüllen der Tabellen MsiDigitalCertificate, MsiPatchCertificate und MsiDigitalSignature erforderlich ist.

Windows Installer 3.0 und höher: Ab Windows Installer 3.0 kann Windows Installer die digitalen Signaturen von Patches (MSP-Dateien) mithilfe der Tabellen MsiPatchCertificate und MsiDigitalCertificate überprüfen. Weitere Informationen finden Sie unter Richtlinien zum Erstellen sicherer Installationen und Zum Patchen der Benutzerkontensteuerung (User Account Control, UAC).

Windows Installer 2.0: Digitale Signaturen von Patches werden nicht unterstützt. Windows Installer 2.0 verwendet digitale Signaturen als Mittel zum Erkennen beschädigter Ressourcen und kann nur die digitalen Signaturen externer Schränke und nur mithilfe der Tabellen MsiDigitalSignature und MsiDigitalCertificate überprüfen.

Syntax

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

Parameter

[in] szSignedObjectPath

Zeiger auf eine null-beendete Zeichenfolge, die den vollständigen Pfad zur Datei angibt, die die digitale Signatur enthält.

[in] dwFlags

Spezielle Flags für Fehlerfälle.

Flag Bedeutung
MSI_INVALID_HASH_IS_FATAL
0x1
Ohne diesen Flagsatz und wenn nur der Zertifikatkontext angefordert wird, führt ein ungültiger Hash in der digitalen Signatur nicht dazu, dass MsiGetFileSignatureInformation einen schwerwiegenden Fehler zurückgibt.

Um einen schwerwiegenden Fehler für einen ungültigen Hash zurückzugeben, legen Sie das flag MSI_INVALID_HASH_IS_FATAL fest.

[out] ppcCertContext

Kontext des zurückgegebenen Signaturzertifikats

[out] pbHashData

Zurückgegebener Hashpuffer. Dieser Parameter kann NULL sein, wenn die Hashdaten nicht angefordert werden.

[in, out] pcbHashData

Zeiger auf eine Variable, die die Größe des Puffers in Bytes angibt, auf den der pbHashData-Parameter verweist. Dieser Parameter kann nicht NULL sein, wenn pbHashData nicht NULL ist. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pbHashData die Größe des Puffers an, der für die Hashdaten erforderlich ist. Wenn ERROR_SUCCESS zurückgegeben wird, wird die Anzahl der In den Hashpuffer geschriebenen Bytes angegeben. Der pcbHashData-Parameter wird ignoriert, wenn pbHashDataNULL ist.

Rückgabewert

Wert Bedeutung
ERROR_SUCCESS/S_OK
Erfolgreicher Abschluss.
ERROR_INVALID_PARAMETER
Es wurde ein ungültiger Parameter angegeben.
ERROR_FUNCTION_FAILED

WinVerifyTrust ist auf dem System nicht verfügbar. MsiGetFileSignatureInformation erfordert das Vorhandensein der Wintrust.dll-Datei auf dem System.

ERROR_MORE_DATA
Ein Puffer ist zu klein, um die angeforderten Daten aufzunehmen. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pcbHashData die Größe des Puffers an, der für die Hashdaten erforderlich ist.
TRUST_E_NOSIGNATURE
Die Datei ist nicht signiert.
TRUST_E_BAD_DIGEST
Der aktuelle Hash der Datei ist entsprechend dem in der digitalen Signatur der Datei gespeicherten Hash ungültig.
CERT_E_REVOKED
Das Signaturzertifikat der Datei wurde widerrufen. Die digitale Signatur der Datei wird kompromittiert.
TRUST_E_SUBJECT_NOT_TRUSTED
Der Antragsteller hat die angegebene Überprüfungsaktion fehlgeschlagen. Die meisten Vertrauensanbieter geben einen detaillierteren Fehlercode zurück, der den Grund für den Fehler beschreibt.
TRUST_E_PROVIDER_UNKNOWN
Der Vertrauensanbieter wird auf diesem System nicht erkannt.
TRUST_E_ACTION_UNKNOWN
Der Vertrauensstellungsanbieter unterstützt die angegebene Aktion nicht.
TRUST_E_SUBJECT_FORM_UNKNOWN
Der Vertrauensstellungsanbieter unterstützt das für den Antragsteller angegebene Formular nicht.
 
 

MsiGetFileSignatureInformation gibt auch alle Win32-Fehlerwerte zurück, die dem entsprechenden HRESULT-Datentyp durch HRESULT_FROM_WIN32 zugeordnet sind.

Hinweise

Wenn nur der Zertifikatkontext angefordert wird, führt ein ungültiger Hash in der digitalen Signatur nicht dazu, dass MsiGetFileSignatureInformation einen schwerwiegenden Fehler zurückgibt. Um einen schwerwiegenden Fehler für einen ungültigen Hash zurückzugeben, legen Sie das MSI_INVALID_HASH_IS_FATAL-Flag im dwFlags-Parameter fest.

Der Zertifikatkontext und die Hashinformationen werden durch einen Aufruf von WinVerifyTrust aus der Datei extrahiert. Der ppcCertContext-Parameter ist ein Duplikat des Signaturzertifikatkontexts. Es liegt in der Verantwortung des Aufrufers , CertFreeCertificateContext aufzurufen, um den Zertifikatkontext nach Abschluss frei zu geben.

Beachten Sie, dass msiGetFileSignatureInformation das Vorhandensein der Wintrust.dll-Datei auf dem System erfordert.

Hinweis

Der msi.h-Header definiert MsiGetFileSignatureInformation als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP. Informationen zum mindestens erforderlichen Windows Service Pack für eine Windows Installer-Version finden Sie unter Windows Installer – Laufzeitanforderungen.
Zielplattform Windows
Kopfzeile msi.h
Bibliothek Msi.lib
DLL Msi.dll

Weitere Informationen

Digitale Signaturen und Windows Installer

MsiDigitalCertificate-Tabelle

Tabelle „MsiDigitalSignature“