Всем привет!
Работаю над софтом для некоего (пока не серийного) устройства. Внутре устройства обычный промышленный комп x86 с Дебианом на борту, софт на Qt. Думаю, как решить задачу обновления ПО будущими пользователями устройства.
Сейчас я закидываю исполняемые файлы по ssh в специальный каталог updates и перезагружаю девайс, скрипты запуска проверяют наличие файлов с конкретными именами в этом каталоге и, при их наличии, заменяют текущие исполняемые файлы новыми. Прочие служебные файлы (калибровки) вообще руками закидываю туда, где они должны быть.
Скоро закончу делать функционал работы с флешками из софтового GUI и возникает вопрос, как бы распознать файлы моего софта среди прочих файлов.
Первое, что приходит в голову – цифровая подпись. Положить рядом с софтом или же зашить внутрь открытый ключ, а закрытым подписывать исполняемые файлы софта и архивы с калибровочными файлами. По всей видимости, придётся придумать какой-то свой тупой формат склейки файлов в один, т.е. например склеить в один файл подписанный бинарник новой версии GUI и зашифрованный сигнатурный файл. Соответственно, когда пользователь подключит флешку, то в моём интерфейсе будут отображаться только файлы вот этого придуманного формата (может есть какой готовый, но достаточно редко встречающийся, чтобы не брать банальный .zip, которого может быть куча левых пользовательских файлов на флешке, зачем их показывать в интерфейсе). Затем пользователь ткнёт на нужный, мой софт его загрузит, распакует, сверит подпись и если проверки пройдены, поместит его в каталог обновлений и при перезагрузке устройства, новые файлы накатятся.
Может кто подскажет, как обычно решаются задачи подобного рода?