Функция MsiGetFileSignatureInformationA (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 MsiGetFileSignatureInformationA(
[in] LPCSTR 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 |