SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH под Win 8/8.1
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 01.01.18 15:36
Оценка:
При установке драйвера, подписанного всеми доступными на SysDev сигнатурами, под Win 8 или 8.1 x64, UpdateDriverForPlugAndPlayDevices возвращает ошибку SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH _HRESULT_TYPEDEF_(0x800F0244). Установить драйвер удается только перезагрузкой в режиме Disable Driver Signature Enforcement (после перезагрузки в обычном режиме драйвер загружается и работает).

Беглое гугление ничего внятного не нашло.

Если устанавливать драйвер, подписанный только своим EV-сертификатом — ставится и загружается нормально.

В Win10 16299.15 и Win7 SP1 x64 нормально устанавливаются любые варианты.

Можно ли заставить Win 8/8.1 устанавливать универсальный пакет драйвера, подписанный через SysDev? Или придется распространять отдельно пакет для десятки, подписанный через SysDev, и отдельно для 8/8.1?

Блин, как же они утомили своими тупыми претензиями на совместимость/безопасность...
windows 8 8.1 10 spapi_e_signature_osattribute_mismatch 800f0244
Re: SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH под Win 8/8.1
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 01.01.18 17:44
Оценка: 14 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В Win10 16299.15 и Win7 SP1 x64 нормально устанавливаются любые варианты.


ЕМ>Можно ли заставить Win 8/8.1 устанавливать универсальный пакет драйвера, подписанный через SysDev? Или придется распространять отдельно пакет для десятки, подписанный через SysDev, и отдельно для 8/8.1?


Если имеется в виду подпись authenticode от Microsoft, то увы, она валидна только для десятки. Официальная позиция: либо распространяйте отдельно для старых, отдельно для win10, либо проходите процедуру HLK, эта подпись принимается всеми системами.

https://blogs.msdn.microsoft.com/windows_hardware_certification/2016/07/26/driver-signing-changes-in-windows-10-version-1607/

How do I sign a driver so that it is compatible with Windows Vista, Windows 7, Windows 8, Windows 8.1, and Windows 10?

All you need to do is run the HLK tests for Windows 10 and run the HCK tests for Windows 8.1 and earlier versions as you have in the past. Then, using the Windows 10 HLK, merge the two test logs and submit your driver along with the merged HLK/HCK test results to the Windows Hardware Developer Center Dashboard portal. The portal will sign the driver correctly such that it will work on all platforms that you indicate.


ЕМ>Блин, как же они утомили своими тупыми претензиями на совместимость/безопасность...


+1
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH под Win 8/8.1
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.01.18 04:17
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Если имеется в виду подпись authenticode от Microsoft, то увы, она валидна только для десятки.


Фишка в том, что не так давно обновленная семерка эту подпись успешно принимает, хотя генерировать такую ошибку она тоже умеет.

Интересно, в MS хоть кто-нибудь понимает практический смысл, который они хотели бы получить от подобной политики?
Re[3]: SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH под Win 8/8.1
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 02.01.18 11:25
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

CF>>Если имеется в виду подпись authenticode от Microsoft, то увы, она валидна только для десятки.


ЕМ>Фишка в том, что не так давно обновленная семерка эту подпись успешно принимает, хотя генерировать такую ошибку она тоже умеет.


Хм… Когда я возился с самосборкой VirtualBox, обнаружилась интересная фишка восьмёрки. Насколько я смог разобраться, юзермодная и кернелмодная части установщика драйверов требуют выполнения разных условий. В режиме с разрешёнными самоподписанными драйверами восьмёрка отказывалась устанавливать драйвер, говоря, что он с недоверенной подписью, и плевать хотела на то, что она загружена в тестовом режиме. Вылечилось это добавлением сертификата корневое хранилище. В семёрке ничего подобного не требовалось, ставилось сразу. Может быть, в данном случае срабатывает что-то подобное? Что если добавить этот майкрософтовский сертификат в корневое хранилище?

ЕМ>Интересно, в MS хоть кто-нибудь понимает практический смысл, который они хотели бы получить от подобной политики?


Конечно, понимают. Всем держать курс на десятку, а чем больше будет проблем для поддержки предыдущих систем, тем лучше. Может быть, специально эту задачу не ставили в данном случае, а просто не продумали, но потом увидели, что получилось, и возрадовались.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH под Win 8/8.1
От: okman Беларусь https://searchinform.ru/
Дата: 02.01.18 12:11
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>...

ЕМ>Или придется распространять отдельно пакет для десятки, подписанный через SysDev, и отдельно для 8/8.1?

Придется делать отдельно. Attestation signing поддерживается только для Windows 10.
Даже если драйвер где-то устанавливается без ошибок, это, скорее всего, баг (или баго-фича).
Re[2]: SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH под Win 8/8.1
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.01.18 12:32
Оценка:
Здравствуйте, okman, Вы писали:

O>Придется делать отдельно. Attestation signing поддерживается только для Windows 10.

O>Даже если драйвер где-то устанавливается без ошибок, это, скорее всего, баг (или баго-фича).

Грустно. Я пока выкрутился, добавив в пакет копию INF с другим именем и самоподписанный CAT к нему. В десятках выбираю основной INF (для него там лежит CAT, подписанный через SysDev), а в остальных системах — эту копию. INF-файлы полностью одинаковые, ссылаются на одни и те же SYS-файлы в x86/x64, так что размер пакета почти не увеличился.

Кстати, у меня получилось подписывать через SysDev одним CAB-пакетом несколько x86/x64 модулей в "каноническом" расположении, когда в корне дерева лежит один универсальный INF с секциями NTx86/NTamd64, а в подкаталогах x86/x64 — SYS-файлы с одинаковыми именами.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.