Verwenden von SetupAPI zum Überprüfen von Authenticode-Treibersignaturen

Mit den folgenden Verfahren können Sie überprüfen, ob ein Treiberpaket über eine gültige digitale Authenticode-Signatur verfügt. Diese Verfahren werden ab Microsoft Windows Server 2003 unterstützt.

So bestimmen Sie, ob ein Treiber über eine gültige Authenticode-Signatur verfügt

Überprüfen Sie das DNF_AUTHENTICODE_SIGNED-Flag.

Wenn ein Treiberpaket über eine gültige Authenticode-Signatur verfügt, legt Windows dieses Kennzeichen im Flags-Element der SP_DRVINSTALL_PARAMS Struktur des Treiberknotens fest. (Beachten Sie außerdem, dass Windows das DNF_INF_IS_SIGNED Flag festlegt, wenn der Treiber über eine WHQL-Freigabesignatur verfügt, wenn es sich um einen vom System bereitgestellten Treiber handelt oder wenn er über eine Authenticode-Signatur verfügt.)

So überprüfen Sie, ob eine INF-Datei eine gültige Authenticode-Signatur aufweist

  1. Rufen Sie SetupVerifyInfFile auf.

  2. Überprüfen Sie den Fehlercode, der von der Funktion zurückgegeben wurde.

    Wenn die INF-Datei nicht vom System bereitgestellt wird und keine gültige digitale WHQL-Signatur aufweist, aber über eine gültige Authenticode-Signatur verfügt, gibt SetupVerifyInfFileFALSE zurück, und GetLastError gibt einen der folgenden Fehlercodes zurück:

    ERROR_AUTHENTICODE_TRUSTED_PUBLISHER
    Gibt an, dass der Herausgeber vertrauenswürdig ist, da das Zertifikat des Herausgebers im Zertifikatspeicher für vertrauenswürdige Herausgeber installiert ist.

    ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED
    Gibt an, dass die Vertrauensstellung nicht automatisch hergestellt werden kann, da das Signaturzertifikat des Herausgebers nicht im Zertifikatspeicher für vertrauenswürdige Herausgeber installiert ist. Dies weist jedoch nicht unbedingt auf einen Fehler hin. Stattdessen wird angegeben, dass der Aufrufer eine anruferspezifische Richtlinie anwenden muss, um eine Vertrauensstellung für den Publisher herzustellen.

Wenn die INF-Datei über eine gültige Authenticode-Signatur verfügt, gibt SetupVerifyInfFile auch die folgenden Informationen in der SP_INF_SIGNER_INFO Ausgabestruktur zurück:

  • Das DigitalSigner-Element ist auf den Namen des Signierers festgelegt.

  • Das CatalogFile-Member wird auf den vollständigen Pfad der entsprechenden signierten Katalogdatei festgelegt.

Beachten Sie jedoch, dass SetupVerifyInfFile die Version im DigitalSignerVersion-Mitglied nicht zurückgibt.

So überprüfen Sie, ob eine Datei über eine gültige Authenticode-Signatur verfügt

Rufen Sie die SetupAPI-Funktion SetupScanFileQueue mithilfe des SPQ_SCAN_USE_CALLBACK_SIGNERINFO Flags auf.

SetupScanFileQueue sendet eine SPFILENOTIFY_QUEUESCAN_SIGNERINFO Anforderung an die Rückrufroutine des Anrufers und übergibt einen Zeiger an eine FILEPATHS_SIGNERINFO Struktur. Wenn eine Datei mit einer gültigen Authenticode-Signatur signiert ist, legt die Funktion den Fehlercode auf den entsprechenden ERROR_AUTHENTICODE_Xxx-Wert fest, bevor die Funktion die Rückrufroutine für eine Datei aufruft. Die Funktion legt auch die folgenden Informationen in der FILEPATHS_SIGNERINFO Struktur fest:

  • Das DigitalSigner-Mitglied ist auf den Namen des Signierers festgelegt.

  • Das CatalogFile-Member wird auf den vollständigen Pfad der entsprechenden signierten Katalogdatei festgelegt.

Beachten Sie jedoch, dass die Version nicht im Version-Element festgelegt ist.

SetupScanFileQueue legt den ERROR_AUTHENTICODE_Xxx Fehlercode auf die gleiche Weise fest wie weiter oben in diesem Thema für SetupVerifyInfFile beschrieben.