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.
[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 |
---|---|
|
Se completó correctamente. |
|
Se ha especificado un parámetro no válido. |
|
WinVerifyTrust no está disponible en el sistema. MsiGetFileSignatureInformation requiere la presencia del archivo Wintrust.dll en el sistema. |
|
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. |
|
El archivo no está firmado |
|
El hash actual del archivo no es válido según el hash almacenado en la firma digital del archivo. |
|
Se ha revocado el certificado del firmante del archivo. La firma digital del archivo está en peligro. |
|
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. |
|
El proveedor de confianza no se reconoce en este sistema. |
|
El proveedor de confianza no admite la acción especificada. |
|
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 |