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, MsiPatchCertificate y 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 las tablas MsiPatchCertificate y MsiDigitalCertificate . Para obtener más información, vea Directrices para crear instalaciones seguras y aplicación de revisiones de control de cuentas de usuario (UAC).

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 los gabinetes externos y solo mediante el uso de las tablas MsiDigitalSignature y 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 casos de error especiales.

Marca 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 de MSI_INVALID_HASH_IS_FATAL.

[out] ppcCertContext

Contexto de certificado de firmante devuelto

[out] pbHashData

Se ha devuelto el búfer hash. 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 puede ser NULL si pbHashData no es NULL. 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 pcbHashData se omite si pbHashData es NULL.

Valor devuelto

Valor Significado
ERROR_SUCCESS/S_OK
Se completó correctamente.
ERROR_INVALID_PARAMETER
Se ha especificado 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
Error en el asunto de 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 al tipo de datos HRESULT equivalente por HRESULT_FROM_WIN32.

Comentarios

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 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 del certificado del firmante de la firma. Es responsabilidad del autor de la llamada llamar a CertFreeCertificateContext para 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 neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible 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 para obtener información sobre el Service Pack mínimo de Windows que requiere una versión de Windows Installer.
Plataforma de destino Windows
Encabezado msi.h
Library Msi.lib
Archivo DLL Msi.dll

Consulte también

Firmas digitales y Windows Installer

Tabla MsiDigitalCertificate

Tabla MsiDigitalSignature