Функция MsiGetFileSignatureInformationA (msi.h)
Функция MsiGetFileSignatureInformation принимает путь к файлу с цифровой подписью и возвращает сертификат подписи и хэш файла. MsiGetFileSignatureInformation можно вызвать для получения сертификата подписи и хэша, необходимого для заполнения таблиц MsiDigitalCertificate, MsiPatchCertificateи таблиц MsiDigitalSignature.
установщик Windows 3.0 и более поздних версий: начиная с установщика Windows 3.0 установщик Windows может проверить цифровые подписи исправлений (MSP-файлов) с помощью msiPatchCertificate и таблиц MsiDigitalCertificate. Дополнительные сведения см. в
Установщик Windows 2.0: цифровые подписи исправлений не поддерживаются. Установщик Windows 2.0 использует цифровые подписи в качестве средства для обнаружения поврежденных ресурсов и может проверять только цифровые подписи внешних шкафов и только с помощью MsiDigitalSignature и таблицах MsiDigitalCertificate.
Синтаксис
HRESULT MsiGetFileSignatureInformationA(
[in] LPCSTR szSignedObjectPath,
[in] DWORD dwFlags,
[out] PCCERT_CONTEXT *ppcCertContext,
[out] LPBYTE pbHashData,
[in, out] LPDWORD pcbHashData
);
Параметры
[in] szSignedObjectPath
Указатель на строку, завершающуюся значением NULL, указав полный путь к файлу, который содержит цифровую подпись.
[in] dwFlags
Специальные флаги регистра ошибок.
[out] ppcCertContext
Контекст сертификата возвращаемого подписывчика
[out] pbHashData
Возвращен хэш-буфер. Этот параметр может быть null, если хэш-данные не запрашиваются.
[in, out] pcbHashData
Указатель на переменную, указывающую размер буфера в байтах, на который указывает параметр pbHashData. Этот параметр не может быть null, если pbHashData неNULL. Если возвращается ERROR_MORE_DATA, pbHashData предоставляет размер буфера, необходимого для хранения хэш-данных. Если возвращается ERROR_SUCCESS, оно дает количество байтов, записанных в хэш-буфер. Параметр pcbHashData
Возвращаемое значение
Ценность | Значение |
---|---|
|
Успешное завершение. |
|
Указан недопустимый параметр. |
|
WinVerifyTrust недоступно в системе. MsiGetFileSignatureInformation требует наличия файла Wintrust.dll в системе. |
|
Буфер слишком мал для хранения запрошенных данных. Если возвращается ERROR_MORE_DATA, pcbHashData предоставляет размер буфера, необходимого для хранения хэш-данных. |
|
Файл не подписан |
|
Текущий хэш файла недопустим в соответствии с хэшом, хранящимся в цифровой подписи файла. |
|
Сертификат подписывания файла был отменен. Цифровая подпись файла скомпрометирована. |
|
Субъект завершился сбоем указанного действия проверки. Большинство поставщиков доверия возвращают более подробный код ошибки, описывающий причину сбоя. |
|
Поставщик доверия не распознается в этой системе. |
|
Поставщик доверия не поддерживает указанное действие. |
|
Поставщик доверия не поддерживает форму, указанную для субъекта. |
MsiGetFileSignatureInformation также возвращает все значения ошибок Win32, сопоставленные с эквивалентным типом данных HRESULTHRESULT_FROM_WIN32.
Замечания
При запросе только контекста сертификата недопустимый хэш в цифровой подписи не вызывает MsiGetFileSignatureInformation возвращать неустранимая ошибка. Чтобы вернуть неустранимую ошибку для недопустимого хэша, задайте флаг MSI_INVALID_HASH_IS_FATAL в параметре dwFlags.
Контекст сертификата и хэш-сведения извлекаются из файла вызовом WinVerifyTrust. Параметр ppcCertContext является дубликатом контекста сертификата подписи из подписи. Вызывающий объект несет ответственность за вызов CertFreeCertificateContext, чтобы освободить контекст сертификата по завершении.
Обратите внимание, что MsiGetFileSignatureInformation требует наличия файла Wintrust.dll в системе.
Заметка
Заголовок msi.h определяет MsiGetFileSignatureInformation как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows в Windows Server 2003 или Windows XP. Сведения о минимальном пакете обновления Windows, требуемом версией установщика Windows, см. в разделе "Требования к установщику Windows Run-Time". |
целевая платформа | Виндоус |
заголовка | msi.h |
библиотеки |
Msi.lib |
DLL | Msi.dll |
См. также
цифровые подписи и установщик Windows
таблицы MsiDigitalCertificate