Compartir a través de


Función MsiGetFileSignatureInformationA (msi.h)

La función MsiGetFileSignatureInformation toma la ruta de acceso a un archivo firmado digitalmente y devuelve el certificado y el hash del firmante del archivo. se puede llamar a msiGetFileSignatureInformation para obtener el certificado de firmante y el hash necesarios para rellenar las tablas MsiDigitalCertificate, MsiPatchCertificatey MsiDigitalSignature.

Windows Installer 3.0 y versiones posteriores: a partir de Windows Installer 3.0, Windows Installer puede comprobar las firmas digitales de revisiones (archivos.msp) mediante el msiPatchCertificate y tablas msiDigitalCertificate. Para obtener más información, consulte Guidelines for Authoring Secure Installations and User Account Control (UAC) Patching.

Windows Installer 2.0: no se admiten firmas digitales de revisiones. Windows Installer 2.0 usa firmas digitales como medio para detectar recursos dañados y solo puede comprobar las firmas digitales de gabinetes externos y solo mediante el uso de la msiDigitalSignature y tablas msiDigitalCertificate.

Sintaxis

HRESULT MsiGetFileSignatureInformationA(
  [in]      LPCSTR         szSignedObjectPath,
  [in]      DWORD          dwFlags,
  [out]     PCCERT_CONTEXT *ppcCertContext,
  [out]     LPBYTE         pbHashData,
  [in, out] LPDWORD        pcbHashData
);

Parámetros

[in] szSignedObjectPath

Puntero a una cadena terminada en NULL que especifica la ruta de acceso completa al archivo que contiene la firma digital.

[in] dwFlags

Marcas de caso de error especiales.

Bandera Significado
MSI_INVALID_HASH_IS_FATAL
0x1
Sin este conjunto de marcas y al solicitar solo el contexto del certificado, un hash no válido en la firma digital no hace que MsiGetFileSignatureInformation devuelva un error irrecuperable.

Para devolver un error irrecuperable para un hash no válido, establezca la marca MSI_INVALID_HASH_IS_FATAL.

[out] ppcCertContext

Contexto de certificado del firmante devuelto

[out] pbHashData

Búfer hash devuelto. Este parámetro puede ser NULL si no se solicitan los datos hash.

[in, out] pcbHashData

Puntero a una variable que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pbHashData. Este parámetro no se puede NULL si pbHashData no esNULL. Si se devuelve ERROR_MORE_DATA, pbHashData proporciona el tamaño del búfer necesario para contener los datos hash. Si se devuelve ERROR_SUCCESS, proporciona el número de bytes escritos en el búfer hash. El parámetro de pcbHashData se omite si pbHashData es NULL.

Valor devuelto

Valor Significado
ERROR_SUCCESS/S_OK
Finalización correcta.
ERROR_INVALID_PARAMETER
Se especificó un parámetro no válido.
ERROR_FUNCTION_FAILED

winVerifyTrust no está disponible en el sistema. msiGetFileSignatureInformation requiere la presencia del archivo Wintrust.dll en el sistema.

ERROR_MORE_DATA
Un búfer es demasiado pequeño para contener los datos solicitados. Si se devuelve ERROR_MORE_DATA, pcbHashData proporciona el tamaño del búfer necesario para contener los datos hash.
TRUST_E_NOSIGNATURE
El archivo no está firmado
TRUST_E_BAD_DIGEST
El hash actual del archivo no es válido según el hash almacenado en la firma digital del archivo.
CERT_E_REVOKED
Se ha revocado el certificado del firmante del archivo. La firma digital del archivo está en peligro.
TRUST_E_SUBJECT_NOT_TRUSTED
El asunto produjo un error en la acción de comprobación especificada. La mayoría de los proveedores de confianza devuelven un código de error más detallado que describe el motivo del error.
TRUST_E_PROVIDER_UNKNOWN
El proveedor de confianza no se reconoce en este sistema.
TRUST_E_ACTION_UNKNOWN
El proveedor de confianza no admite la acción especificada.
TRUST_E_SUBJECT_FORM_UNKNOWN
El proveedor de confianza no admite el formulario especificado para el asunto.
 
 

msiGetFileSignatureInformation también devuelve todos los valores de error de Win32 asignados a su equivalente tipo de datos HRESULT por HRESULT_FROM_WIN32.

Observaciones

Al solicitar solo el contexto del certificado, un hash no válido en la firma digital no provoca MsiGetFileSignatureInformation devolver un error irrecuperable. Para devolver un error irrecuperable para un hash no válido, establezca la marca MSI_INVALID_HASH_IS_FATAL en el parámetro dwFlags.

El contexto del certificado y la información hash se extraen del archivo mediante una llamada a WinVerifyTrust. El parámetro ppcCertContext es un duplicado del contexto de certificado del firmante de la firma. Es responsabilidad del autor de la llamada llamar a CertFreeCertificateContext liberar el contexto del certificado cuando termine.

Tenga en cuenta que MsiGetFileSignatureInformation requiere la presencia del archivo Wintrust.dll en el sistema.

Nota

El encabezado msi.h define MsiGetFileSignatureInformation como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 en Windows Server 2008 o Windows Vista. Windows Installer en Windows Server 2003 o Windows XP. Consulte Windows Installer Run-Time Requirements (Requisitos de Windows Installer) para obtener información sobre el Service Pack mínimo de Windows que requiere una versión de Windows Installer.
de la plataforma de destino de Windows
encabezado de msi.h
biblioteca de Msi.lib
DLL de Msi.dll

Consulte también

firmas digitales y de Windows Installer

tabla MsiDigitalCertificate

tabla MsiDigitalSignature