Отримання драйвера USB MSP430 з підписом Microsoft


11

Я розробляю продукт, який використовує мікроконтролер MSP430 із вбудованим USB-модулем. Я отримав PID від Texas Instruments і використовував їх інструменти для створення дескрипторів, а також .inf-файл для встановлення драйвера. Очевидна проблема полягає в тому, що завдяки власному характеру цих файлів з'являється спливаюче вікно (в Windows 7) після підключення USB-кабелю, який попереджає користувача про те, що драйвер не підписаний. Я вважаю, що в Windows 8 і Windows 10 він просто блокує його і зовсім не вказує цього на користувача.

Оскільки це повнофункціональний продукт, який моя компанія планує випустити, нам потрібно отримати посвідчення водія (я вірю у вигляді .cat-файлу?), Який ми можемо надати замовнику, щоб він міг встановити пристрій програмне забезпечення драйвера без випуску.

Я переглянув досить багато документації Майкрософт (особливо це документ ), намагаючись зрозуміти, що потрібно для того, щоб підписати драйвер, але, на жаль, зараз це над головою.

Це те, що я думаю, що я розумію поки що:

  • Мені потрібно подати драйвер (.inf файл?) До уповноваженого органу сертифікації Microsoft (CA). Існує ряд таких там, тож мені потрібно було б знайти той, який підписує водіїв.
  • Після вибору ЦП мені, як правило, потрібно буде сплачувати щорічну плату (найчастіше за 1, 2 або 3 роки) за їх обслуговування. Будь-які драйвери, які я генерую за цей час, будуть постійно підписані, навіть після закінчення терміну служби. Якщо я хочу змінити драйвер або створити новий після закінчення терміну служби, мені потрібно буде придбати послугу ще на 1, 2 або 3 роки.
  • Після сплати гонорару ЦА генерує файл .cat, який є сертифікатом, що гарантує, що драйвер, який я їм дав, не буде змінено. Якщо це зробити, він більше не збігатиметься з файлом .cat і під час встановлення з’явиться помилка

Це правильно? Загрожуючи звучати так, як я шукаю рекомендації щодо конкретних органів управління (я не зауважую), де я можу знайти список ЦО, які можуть зробити для мене цю сертифікацію? Ще кращими будуть їх веб-сайти та / або ціни на різні терміни обслуговування. Хтось тут мав прямий досвід отримання драйвера для продукту на основі мікроконтролера USB, підписаного ЦА, який міг би допомогти мені зрозуміти та пройти процес? Я вже розміщував на форумах MSDN, але там, здається, досить мертвим - минуло два дні, і в моїй темі є лише кілька поглядів.


Чи є ваш драйвер повнофункціональною річчю, якій потрібно виконувати код у режимі ядра, чи це лише inf-файл? Якщо це лише inf-файл, у який вбудовані драйвери (.sys файли) він завантажується?
Джек Б

Тут я не вдається, я не знаю багато про внутрішню роботу ПК та про те, як працюють драйвери. Мій пристрій розроблено навколо MSP430 із вбудованим USB-модулем. Цей пристрій просто має інтерфейс CDC через з'єднання USB, тому все, що він робить, це відкрити віртуальний COM-порт
DerStrom8

Оскільки дизайн зараз сидить, він фактично знаходиться на платі розробки, і коли я намагаюся встановити пристрій за допомогою файлу .inf, я отримую стандартну помилку з Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . Тим часом для тестування я щойно використовував файли .inf та .cat, надані одним із прикладів CDC з пакету MSP430Ware, але коли я випускаю цей продукт, я більше не можу цього робити. Якщо я не помиляюся, це не виконує код у режимі
ядра

1
Якщо коротко: Ви можете підписати це за допомогою звичайного сертифікату коду для підписання коштом приблизно 80 фунтів / рік, коли я подивився. Немає необхідності в усьому крос-підписуванні Microsoft. Але для Windows 8.1 і більш ранніх версій це не надто надійно (ми не змогли пройти через EN61326 з ним), тому ви, можливо, також захочете мати альтернативу. Якщо мене ніхто до цього не б’є, я напишу відповідь після обіду.
Джек Б

1
@AdamLawrence Я повернувся через кілька годин і не побачив, що мені потрібно щось додати до вашої відповіді. Так добре мені.
Джек Б

Відповіді:


16

Насправді це не так вже й погано. Я робив це кілька разів на роботі, записуючи та підписуючи .INF / .CAT для інтерфейсу USB CDC-ACM-to-I 2 C на Microchip PIC24FJ64GB002 .

  • Встановіть стосунки з органом сертифікації. Вам потрібно буде надати їм основну інформацію, яку вони підтвердять. Якщо ви їдете на розширену перевірку (EV), вони попросять набагато більше, але вам не доведеться йти так далеко. Thawte, Digicert і Comodo - деякі приклади ЦО.

  • Придбайте сертифікат підпису коду Authenticode у ЦА. Це те, що вам потрібно підписати .CAT-файл, пов'язаний з вашим .INF-файлом. Для цього рівня підписання вам не потрібен сертифікат режиму ядра.

  • Встановити сертифікат (зрозуміло)

  • Завантажте рамки Windows SDK та комплект драйверів Windows, щоб отримати необхідні інструменти Microsoft (створення та підписання каталогу).

  • Упакуйте та підпишіть водіїв:

    • Використовуйте inf2cat для створення файлу каталогу (.CAT) для файлу .INF
    • Використовуйте signtool для підписання файлу каталогу

З цього моменту ви можете зробити якийсь інсталятор драйверів або використовувати dpinst з SDK, щоб зробити базову автоматизацію установки.

EDIT: Примітки з різних коментарів нижче:

  1. Створення .INF-файлу для завантаження USBSER.SYS - це не створення драйвера в режимі ядра - ви використовуєте USBSER.SYS (вже вбудований, підписаний і надійний), не створюючи щось нове - і як такий не вимагає підписання EV сертифікат та сертифікат WHQL. Базовий сертифікат Authenticode - це все, що потрібно.
  2. Починаючи з Windows 10, вам взагалі не потрібен підписаний .INF для пристроїв USBSER.SYS, оскільки Windows автоматично магічно підбере USB CDC-ACM пристрої (Class_02). Вони також переписали драйвер з нуля, і він працює набагато краще (зараз він обробляє навіть несподівані видалення пристрою та повторні вставки, не блокуючи віртуальний порт COM, що є величезним плюсом!). Однак це означає, що ви все ще можете використовувати підписаний драйвер, якщо дійсно хочете - підписаний драйвер все ще буде "працювати". Є ще багато машин Win 8.1 / 8/7 та старих версій, тому наявність підписаного драйвера все ще дещо важлива для пристроїв USB CDC-ACM.

Подальше розширення щодо ваших питань:

  • Ви нічого не подаєте на підписання до КА - ви купуєте сертифікат підпису коду, встановлюєте його на машину та виконуєте перевірку та підписання .INF.
  • Вам не потрібно сплачувати щорічну плату, але придбаний сертифікат матиме 1-, 2- або трирічний термін дії. Коли термін закінчується, вам потрібно буде придбати новий, щоб мати змогу продовжувати підпис - все, що раніше було підписано, залишатиметься дійсним, але ви втратите можливість підписувати нові речі.
  • .CAT - хеш для .INF - будь-які зміни в .INF будуть виявлені, і сертифікат більше не буде дійсним, а це означає, що .INF поводитиметься як неподписаний.

4
Детальніше: Як підписати драйвери та виконавчі файли Windows Adafruit .
ЗР.

4
Це відмінна відповідь, справді дуже корисна. Ви, безумовно, зробите це набагато простіше, ніж я очікував. Я розберуся в цьому. Тим часом я прийму цю відповідь через чіткі, зрозумілі кроки. Ура!
DerStrom8

2
@ poizan42 Це не драйвер у режимі ядра. Це простий пристрій USB CDC, який відкриває лише віртуальний COM-порт. Виконання коду в режимі ядра не виконується.
DerStrom8

1
Просто хотіла слідкувати. Ці кроки прекрасно спрацювали лише з одним застереженням: inf2cat.exe не постачається з пакетом SDK для Windows, вам також потрібно встановити комплект драйверів Windows (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ … . Дякую вам за вашу допомогу. Зараз я можу встановити своє
драйверне

2
Відповідь змінена. Дякую, що вказали на очевидне (минуло кілька років, як я встановив ланцюжки інструментів)
Адам Лоуренс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.