Guardant Code SDK
В состав программного комплекта Guardant входит специальный инструментарий, который позволяет полноценно работать с электронными ключами, поддерживающими технологию Загружаемый код.
Для разработки и отладки кода служит специальный раздел Guardant API, все функции которого проиллюстрированы подробными примерами. Преобразование и загрузка подготовленного кода производится стандартной утилитой программирования (редактором памяти) электронного ключа.
Весь процесс работы с ключами семейства Code детально документирован, во многих случаях приведены пошаговые инструкции.
Guardant Code API
Интерфейс прикладного программирования электронных ключей с загружаемым кодом можно разделить на внутренний и внешний.
Внутренний Guardant Code API
Внутренний Guardant Code API позволяет задействовать сервисы микропрограммы ключа, обращаясь к ним из загружаемого кода. Большинство функций Guardant Code API аналогичны функциям основного Guardant API:
- Считывание/запись информации в EEPROM-память ключа;
- Работа с защищенными ячейками;
- Работа с аппаратными алгоритмами;
- Вычисление и проверка цифровой подписи.
Однако есть ряд интересных возможностей, которые присущи именно API ключей семейства Code — в частности, можно управлять светодиодом ключа.
Внешний Guardant Code API
Внешний Guardant Code API составляют всего несколько функций, которые позволяют загружать предварительно подготовленный код во Flash-память ключа и исполнять его из защищенного приложения. Однако, что касается загрузки кода в ключ, то удобнее и быстрее выполнять эту процедуру при помощи редактора памяти.
Средства разработки, примеры и документация
В качестве языка программирования для загружаемого кода используется язык C, а точнее его подмножество, основой для которого является стандарт ANSI C.
Перед загрузкой в ключ код должен быть скомпилирован. Поскольку система команд процессора архитектуры ARM7, используемого в ключе, отличается от системы команд x86-совместимых процессоров, для работы потребуется компилятор, способный генерировать двоичный код, совместимый с архитектурой ARM7.
Для компиляции загружаемого кода применяются компилятор и линкер GCC, стандартная библиотека С для встраиваемых систем newlib, утилита make и несколько сервисных утилит. Примеры и makefile для работы с загружаемым кодом, входящие в комплект разработчика, рассчитаны на использование компилятора GCC и инструментария WinARM, как на самый доступный вариант. В качестве альтернативы можно использовать и другие языки программирования высокого уровня, для которых есть компилятор ARM7.
Специально подготовленные конфигурационные файлы и скрипты, входящие в состав примеров, позволяют легко скомпилировать произвольный код на языке C для загрузки его в ключ Guardant Code.
Каждый пример состоит из двух частей:
- Проект Visual Studio 2005 .NET, который демонстрирует использование внутреннего Guardant Code API (инициализация и запуск загруженного кода);
- Пример для загрузки кода в ключ, который содержит проект GCC-ARM в виде исходного кода на C и makefile.
Обработка и загрузка кода в ключ
После подготовки код необходимо загрузить в ключ. Для этого используется утилита GrdUtil.exe. Редактор памяти предоставляет удобный сервис для работы с загружаемым кодом, в том числе автоматическое преобразование из Bin-файла в формат, пригодный для записи в ключ (GCEXE), и, собственно, запись GCEXE во Flash-память.
В GrdUtil.exe реализована эффективная схема подготовки кода для записи в электронный ключ и безопасной передачи обновлений загружаемого кода конечным пользователям. Преобразование кода в формат GCEXE производится утилитой автоматически при записи данных в ключ, не требуя от разработчиков никаких дополнительных действий для ее реализации.
