Проблема обновления информации в ключах, уже находящихся у пользователей приложения, актуальна и для загружаемого кода. Рано или поздно в этот код может потребоваться внести изменения или исправления.
Для успешного обновления загружаемого кода необходимо выполнение следующих условий:
- У разработчика должна храниться прошивка (файл маски), содержащая ключевые пары для шифрования и подписи загружаемого кода.
- У конечного пользователя должен находиться электронный ключ Guardant Code, содержащий дескриптор алгоритма с загружаемым кодом, а также закрытый ключ для расшифрования кода и открытый ключ для проверки ЭЦП.
- Ключевые пары в маске и ключе должны быть идентичны.
Для обновления загружаемого кода необходимо сгенерировать новый GCEXE-файл с обновленным кодом, зашифрованным и подписанным на соответствующих ключах.
Само обновление может производиться как при помощи технологии TRU, так и прямой загрузкой GCEXE-файла из защищаемого приложения функцией GrdCodeLoad().
При желании можно сделать процедуру обновления загружаемого кода «прозрачной» для пользователя. Тогда от него потребуется только получить обновление, поместить его рядом с исполняемым файлом приложения (или в специально для этого предназначенную директорию) и запустить приложение.
Утилита создания GUI-мастера обновления загружаемого кода.
Утилита представляет собой консольное приложение, на вход которого подается источник данных о новой версии загружаемого кода, а на выходе формируется GUI-мастер обновления для ключа.
Опции командной строки.
Опция | Назначение | Пример использования |
/MASKFILENAME | Извлечение экземпляров загружаемого кода с указанными номерами из файла маски, преобразование их в GCEXE-файлы и интеграция в мастер обновления. Будут обновлены только указанные алгоритмы (экземпляры кода). | /MASKFILENAME="D:\Default.nsd",0,2 |
/GCEXEFILENAME | Интеграция готового GCEXE-файла в мастер обновления. В ключе будет обновлен экземпляр загружаемого кода с указанным номером. | /GCEXEFILENAME="D:\mp0.gcexe",1 |
/OUTFILENAME | Имя создаваемого файл-мастера. Опционально. Если не указано, то имя генерируется по умолчанию | /OUTFILENAME="D:\Updatewizard.exe" |
/DONGLEID | Привязка микропрограмм из маски к определенному ID ключа. Опционально. | /DONGLEID=11ABCDEF |
/ver= | Установить версию для мастера обновления | /ver=1,0,0,1 |
GCEXE-файлы интегрируются в качестве ресурсов приложения. Мастер сам определит интегрированные экземпляры загружаемого кода и попытается прописать их в ключ в процессе обновления.
В данной версии нет никаких привязок к ключам помимо ID. Также программа не может хранить одновременно GCEXE-файлы для нескольких версий ключей. Для каждой версии ключа нужно будет генерировать свой мастер.
Пример использования:
makegcupdate /maskfilename="C:\Code\GuardantCode.nsd",0 /ver=1,0,0,5 /OUTFILENAME="GCWiz.exe"