Freigeben über


MsiGetFileSignatureInformationA-Funktion (msi.h)

Die MsiGetFileSignatureInformation--Funktion verwendet den Pfad zu einer Datei, die digital signiert wurde, und gibt das Signiererzertifikat und den Hash der Datei zurück. MsiGetFileSignatureInformation- kann aufgerufen werden, um das Signierzertifikat und hash abzurufen, das zum Auffüllen der MsiDigitalCertificate, MsiPatchCertificateund MsiDigitalSignature Tabellen 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 MsiPatchCertificate und MsiDigitalCertificate Tabellen überprüfen. Weitere Informationen finden Sie unter Richtlinien für die Erstellung sicherer Installationen und 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 Cabs überprüfen und nur mithilfe der MsiDigitalSignature und MsiDigitalCertificate Tabellen ü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

Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den vollständigen Pfad zu der Datei angibt, die die digitale Signatur enthält.

[in] dwFlags

Besondere Fehlerfallkennzeichnungen.

Flagge Bedeutung
MSI_INVALID_HASH_IS_FATAL
0x1
Ohne diese Kennzeichnung und beim Anfordern nur des Zertifikatkontexts führt ein ungültiger Hash in der digitalen Signatur nicht dazu, MsiGetFileSignatureInformation einen schwerwiegenden Fehler zurückzugeben.

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

[out] ppcCertContext

Zurückgegebener Signiererzertifikatkontext

[out] pbHashData

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

[in, out] pcbHashData

Zeigen Sie auf eine Variable, die die Größe des Puffers in Byte angibt, auf den der pbHashData--Parameter verweist. Dieser Parameter kann nicht NULL- werden, wenn pbHashData- nichtNULL-ist. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pbHashData- die Größe des Puffers an, der zum Halten der Hashdaten erforderlich ist. Wenn ERROR_SUCCESS zurückgegeben wird, gibt sie die Anzahl der Bytes an, die in den Hashpuffer geschrieben wurden. Der pcbHashData- Parameter wird ignoriert, wenn pbHashData-NULL-ist.

Rückgabewert

Wert Bedeutung
ERROR_SUCCESS/S_OK
Erfolgreicher Abschluss.
ERROR_INVALID_PARAMETER
Ungültiger Parameter wurde angegeben.
ERROR_FUNCTION_FAILED

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

ERROR_MORE_DATA
Ein Puffer ist zu klein, um die angeforderten Daten zu speichern. Wenn ERROR_MORE_DATA zurückgegeben wird, gibt pcbHashData- die Größe des Puffers an, der zum Halten der Hashdaten erforderlich ist.
TRUST_E_NOSIGNATURE
Die Datei ist nicht signiert.
TRUST_E_BAD_DIGEST
Der aktuelle Hash der Datei ist gemäß 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 Betreff 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 Vertrauensanbieter unterstützt die angegebene Aktion nicht.
TRUST_E_SUBJECT_FORM_UNKNOWN
Der Vertrauensanbieter unterstützt das für den Betreff angegebene Formular nicht.
 
 

MsiGetFileSignatureInformation gibt auch alle Win32-Fehlerwerte zurück, die ihrem entsprechenden HRESULT- Datentyp nach HRESULT_FROM_WIN32zugeordnet sind.

Bemerkungen

Beim Anfordern nur des Zertifikatkontexts führt ein ungültiger Hash in der digitalen Signatur nicht dazu, MsiGetFileSignatureInformation einen schwerwiegenden Fehler zurückzugeben. 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 WinVerifyTrustaus der Datei extrahiert. Der ppcCertContext Parameter ist ein Duplikat des Signiererzertifikatkontexts aus der Signatur. Es liegt in der Verantwortung des Aufrufers, CertFreeCertificateContext aufzurufen, um den Zertifikatkontext nach Abschluss freizugeben.

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

Anmerkung

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 Code, der nicht codierungsneutral ist, 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
mindestens unterstützte 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 von einer Windows Installer-Version erforderlichen Windows-Service Pack finden Sie unter den Windows Installer-Run-Time Anforderungen.
Zielplattform- Fenster
Header- msi.h
Library Msi.lib
DLL- Msi.dll

Siehe auch

digitale Signaturen und Windows Installer-

MsiDigitalCertificate-Tabelle

MsiDigitalSignature-Tabelle