Функция MsiGetFileSignatureInformationW (msi.h)
Функция MsiGetFileSignatureInformation принимает путь к файлу с цифровой подписью и возвращает сертификат подписывателя файла и хэш. MsiGetFileSignatureInformation можно вызвать для получения сертификата подписывающего и хэша, необходимого для заполнения таблиц MsiDigitalCertificate, MsiPatchCertificate и MsiDigitalSignature .
Установщик Windows 3.0 и более поздних версий: Начиная с установщика Windows 3.0 установщик Windows может проверять цифровые подписи исправлений (MSP-файлов) с помощью таблиц MsiPatchCertificate и MsiDigitalCertificate . Дополнительные сведения см. в статье Рекомендации по созданию безопасных установок и исправлению контроля учетных записей пользователей (UAC).
Установщик Windows 2.0: Цифровые подписи исправлений не поддерживаются. Установщик Windows 2.0 использует цифровые подписи в качестве средства обнаружения поврежденных ресурсов и может проверять только цифровые подписи внешних шкафов и только с помощью таблиц MsiDigitalSignature и MsiDigitalCertificate .
Синтаксис
HRESULT MsiGetFileSignatureInformationW(
[in] LPCWSTR szSignedObjectPath,
[in] DWORD dwFlags,
[out] PCCERT_CONTEXT *ppcCertContext,
[out] LPBYTE pbHashData,
[in, out] LPDWORD pcbHashData
);
Параметры
[in] szSignedObjectPath
Указатель на строку с пустым завершением, указывающую полный путь к файлу, который содержит цифровую подпись.
[in] dwFlags
Специальные флаги регистра ошибок.
[out] ppcCertContext
Контекст возвращенного сертификата подписывателя
[out] pbHashData
Возвращенный хэш-буфер. Этот параметр может иметь значение NULL , если хэш-данные не запрашиваются.
[in, out] pcbHashData
Указатель на переменную, указывающую размер (в байтах) буфера, на который указывает параметр pbHashData . Этот параметр не может иметь значение NULL, если pbHashData имеет значение, отличное от NULL. Если возвращается ERROR_MORE_DATA, pbHashData предоставляет размер буфера, необходимый для хранения хэш-данных. Если возвращается ERROR_SUCCESS, это указывает количество байтов, записанных в хэш-буфер. Параметр pcbHashData игнорируется, если pbHashData имеет значение NULL.
Возвращаемое значение
Значение | Значение |
---|---|
|
Успешное завершение. |
|
Указан недопустимый параметр. |
|
WinVerifyTrust недоступен в системе. MsiGetFileSignatureInformation требует наличия файла Wintrust.dll в системе. |
|
Буфер слишком мал для хранения запрошенных данных. Если возвращается ERROR_MORE_DATA, pcbHashData предоставляет размер буфера, необходимый для хранения хэш-данных. |
|
Файл не подписан |
|
Текущий хэш файла недопустим в соответствии с хэшом, хранящимся в цифровой подписи файла. |
|
Сертификат подписывателя файла был отозван. Цифровая подпись файла скомпрометирована. |
|
Субъект не выполнил указанное действие проверки. Большинство поставщиков доверия возвращают более подробный код ошибки, описывающий причину сбоя. |
|
Поставщик доверия не распознается в этой системе. |
|
Поставщик доверия не поддерживает указанное действие. |
|
Поставщик доверия не поддерживает форму, указанную для субъекта. |
MsiGetFileSignatureInformation также возвращает все значения ошибок Win32, сопоставленные с эквивалентным типом данных HRESULT HRESULT_FROM_WIN32.
Комментарии
При запросе только контекста сертификата недопустимый хэш в цифровой подписи не приводит к тому, что MsiGetFileSignatureInformation возвращает неустранимую ошибку. Чтобы вернуть неустранимую ошибку для недопустимого хэша, задайте флаг MSI_INVALID_HASH_IS_FATAL в параметре dwFlags .
Контекст сертификата и хэш-сведения извлекаются из файла путем вызова WinVerifyTrust. Параметр ppcCertContext является дубликатом контекста сертификата подписывателя из подписи. Вызывающий объект отвечает за вызов CertFreeCertificateContext , чтобы освободить контекст сертификата по завершении.
Обратите внимание, что msiGetFileSignatureInformation требует наличия файла Wintrust.dll в системе.
Примечание
Заголовок msi.h определяет MsiGetFileSignatureInformation как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Установщик 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. |
Целевая платформа | Windows |
Header | msi.h |
Библиотека | Msi.lib |
DLL | Msi.dll |