Partager via


Utilisation de SetupAPI pour vérifier les signatures d’authentification du pilote

Vous pouvez utiliser les procédures suivantes pour vérifier qu’un package de pilotes a une signature numérique Authenticode valide. Ces procédures sont prises en charge à partir de Microsoft Windows Server 2003.

Pour déterminer si un pilote a une signature Authenticode valide

Vérifiez l’indicateur DNF_AUTHENTICODE_SIGNED.

Si un package de pilotes a une signature Authenticode valide, Windows définit cet indicateur dans le membre Flags de la structure SP_DRVINSTALL_PARAMS du nœud de pilote. (Sachez également que Windows définit l’indicateur DNF_INF_IS_SIGNED si le pilote a une signature de mise en production WHQL, s’il s’agit d’un pilote fourni par le système ou s’il a une signature Authenticode.)

Pour vérifier qu’un fichier INF a une signature Authenticode valide

  1. Appelez SetupVerifyInfFile.

  2. Vérifiez le code d’erreur retourné par la fonction.

    Si le fichier INF n’est pas fourni par le système et n’a pas de signature numérique WHQL valide, mais qu’il a une signature Authenticode valide, SetupVerifyInfFile retourne FALSE et GetLastError retourne l’un des codes d’erreur suivants :

    ERROR_AUTHENTICODE_TRUSTED_PUBLISHER
    Indique que le serveur de publication est approuvé, car le certificat de l’éditeur est installé dans le magasin de certificats Éditeurs approuvés.

    ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED
    Indique que l’approbation ne peut pas être établie automatiquement, car le certificat de signature de l’éditeur n’est pas installé dans le magasin de certificats d’éditeur approuvé. Toutefois, cela n’indique pas nécessairement une erreur. Au lieu de cela, cela indique que l’appelant doit appliquer une stratégie spécifique à l’appelant pour établir l’approbation dans le serveur de publication.

Si le fichier INF a une signature Authenticode valide, SetupVerifyInfFile retourne également les informations suivantes dans la structure de sortie SP_INF_SIGNER_INFO :

  • Le membre DigitalSigner est défini sur le nom du signataire.

  • Le membre CatalogFile est défini sur le chemin d’accès complet du fichier de catalogue signé correspondant.

Toutefois, n’oubliez pas que SetupVerifyInfFile ne retourne pas la version dans le membre DigitalSignerVersion .

Pour vérifier qu’un fichier a une signature Authenticode valide

Appelez la fonction SetupAPI SetupScanFileQueue à l’aide de l’indicateur SPQ_SCAN_USE_CALLBACK_SIGNERINFO.

SetupScanFileQueue envoie une demande de SPFILENOTIFY_QUEUESCAN_SIGNERINFO à la routine de rappel de l’appelant et transmet un pointeur vers une structure FILEPATHS_SIGNERINFO. Si un fichier est signé avec une signature Authenticode valide, la fonction définit le code d’erreur sur la valeur ERROR_AUTHENTICODE_Xxx appropriée avant d’appeler la routine de rappel pour un fichier. La fonction définit également les informations suivantes dans la structure FILEPATHS_SIGNERINFO :

  • Le membre DigitalSigner est défini sur le nom du signataire.

  • Le membre CatalogFile est défini sur le chemin d’accès complet du fichier de catalogue signé correspondant.

Toutefois, n’oubliez pas que la version n’est pas définie dans le membre Version .

SetupScanFileQueue définit le code d’erreur ERROR_AUTHENTICODE_Xxx de la même manière que décrit précédemment dans cette rubrique pour SetupVerifyInfFile.