Compartir a través de


Uso de SetupAPI para comprobar las firmas authenticode del controlador

Puede usar los procedimientos siguientes para comprobar que un paquete de controladores tiene una firma digital Authenticode válida. Estos procedimientos se admiten a partir de Microsoft Windows Server 2003.

Para determinar si un controlador tiene una firma Authenticode válida

Compruebe la marca DNF_AUTHENTICODE_SIGNED.

Si un paquete de controladores tiene una firma Authenticode válida, Windows establece esta marca en el miembro Flags de la estructura SP_DRVINSTALL_PARAMS del nodo de controlador. (Tenga en cuenta también que Windows establece la marca DNF_INF_IS_SIGNED si el controlador tiene una firma de versión WHQL, si es un controlador proporcionado por el sistema o si tiene una firma Authenticode).

Para comprobar que un archivo INF tiene una firma Authenticode válida

  1. Llame a SetupVerifyInfFile.

  2. Compruebe el código de error devuelto por la función .

    Si el archivo INF no se proporciona por el sistema y no tiene una firma digital WHQL válida, pero tiene una firma Authenticode válida, SetupVerifyInfFile devuelve FALSE y GetLastError devuelve uno de los siguientes códigos de error:

    ERROR_AUTHENTICODE_TRUSTED_PUBLISHER
    Indica que el publicador es de confianza porque el certificado del publicador está instalado en el almacén de certificados de editores de confianza.

    ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED
    Indica que la confianza no se puede establecer automáticamente porque el certificado de firma del publicador no está instalado en el almacén de certificados de editor de confianza. Sin embargo, esto no indica necesariamente un error. En su lugar, indica que el autor de la llamada debe aplicar una directiva específica del autor de la llamada para establecer la confianza en el publicador.

Si el archivo INF tiene una firma Authenticode válida, SetupVerifyInfFile también devuelve la siguiente información en la estructura de salida SP_INF_SIGNER_INFO:

  • El miembro DigitalSigner se establece en el nombre del firmante.

  • El miembro CatalogFile se establece en la ruta de acceso completa del archivo de catálogo firmado correspondiente.

Sin embargo, tenga en cuenta que SetupVerifyInfFile no devuelve la versión en el miembro DigitalSignerVersion .

Para comprobar que un archivo tiene una firma Authenticode válida

Llame a la función SetupAPI SetupScanFileQueue mediante la marca SPQ_SCAN_USE_CALLBACK_SIGNERINFO.

SetupScanFileQueue envía una solicitud de SPFILENOTIFY_QUEUESCAN_SIGNERINFO a la rutina de devolución de llamada del autor de la llamada y pasa un puntero a una estructura de FILEPATHS_SIGNERINFO. Si un archivo está firmado con una firma Authenticode válida, la función establece el código de error en el valor de ERROR_AUTHENTICODE_Xxx adecuado antes de llamar a la rutina de devolución de llamada de un archivo. La función también establece la siguiente información en la estructura FILEPATHS_SIGNERINFO:

  • El miembro DigitalSigner se establece en el nombre del firmante.

  • El miembro CatalogFile se establece en la ruta de acceso completa del archivo de catálogo firmado correspondiente.

Sin embargo, tenga en cuenta que la versión no está establecida en el miembro Version .

SetupScanFileQueue establece el código de error ERROR_AUTHENTICODE_Xxx de la misma manera que se describió anteriormente en este tema para SetupVerifyInfFile.