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 ermitteln 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 Flag im Flags-Member der SP_DRVINSTALL_PARAMS Struktur des Treiberknotens fest. (Beachten Sie auch, dass Windows das DNF_INF_IS_SIGNED-Flag festlegt, wenn der Treiber über eine WHQL-Releasesignatur verfügt, es sich um einen vom System bereitgestellten Treiber handelt oder eine Authenticode-Signatur aufweist.)

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

  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 nicht über eine gültige digitale WHQL-Signatur verfügt, 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 eingerichtet werden kann, da das Signaturzertifikat des Herausgebers nicht im Zertifikatspeicher des vertrauenswürdigen Herausgebers installiert ist. Dies weist jedoch nicht unbedingt auf einen Fehler hin. Stattdessen wird angegeben, dass der Aufrufer eine aufruferspezifische Richtlinie anwenden muss, um eine Vertrauensstellung im Herausgeber 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 Unterzeichners festgelegt.

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

Beachten Sie jedoch, dass SetupVerifyInfFile die Version im DigitalSignerVersion-Member 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 flags SPQ_SCAN_USE_CALLBACK_SIGNERINFO auf.

SetupScanFileQueue sendet eine SPFILENOTIFY_QUEUESCAN_SIGNERINFO Anforderung an die Rückrufroutine des Aufrufers 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 Rückrufroutine für eine Datei aufgerufen wird. Die Funktion legt auch die folgenden Informationen in der FILEPATHS_SIGNERINFO-Struktur fest:

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

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

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

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