Современные ключи Guardant Sign/Time и Guardant Code, позволяют защищать приложения, запускаемые в ОС GNU/Linux на аппаратных платформах i386 и x86_64. Для этого в комплект разработчика включены статические (libgrdapi.a) и динамические библиотеки (libgrdapi.so) соответствующей разрядности, которые реализуют функционал Guardant API.
Защита Native-приложений GNU/Linux
Для сборки защищаемого приложения, необходимо слинковать защищаемое приложение с библиотекой Guardant API.
Рекомендуется использовать компилятор GCC 4-ой версии, однако, возможно использовать и более ранние версии GCC, и другие компиляторы, например, Intel C++ Compiler (ICC).
Для компиляции с библиотекой Guardant API необходимо выполнить следующее (на примере файла с исходным текстом программы — foobar.c):
$ gcc [-I<путь_к_заголовочному_файлу_GrdAPI.h>] -c foobar.c -o foobar.o $ gcc [-L<путь_к_библиотеке_libgrdapi.a>] foobar.o -o foobar -lpthread -lgrdapi
или
$ gcc [-I<путь_к_заголовочному_файлу_GrdAPI.h>][-L<путь_к_библиотеке_libgrdapi.a>] foobar.c -o foobar-lgrdapi -lpthread
Обратите внимание, что библиотека Guardant API использует библиотеку pthread - POSIX Threads, поэтому для сборки приложений необходимо использовать соответствующую библиотеку.
Установка ключей Guardant в операционных системах GNU/Linux
Ключи Guardant работают в OC GNU/Linux (в том числе и в HID-режиме) без установки дополнительных драйверов и демонов, требуя лишь обеспечить имя и разрешение доступа к файлу устройства. Для обращения к ключу используются соответственно Linux USB Device Filesystem или Linux USB HID Device Interface (в случае HID-режима).
Для работы с ключами в ОС GNU/Linux необходимо добавить правило для штатного средства обработки HotPlugging. На большинстве современных дистрибутивов, таким средством является udev (https://ru.wikipedia.org/wiki/Udev). В комплект разработчика включен набор правил для udev (архив udev-rules.tar.gz ). Указанные правила предписывает udev установить права на чтение и запись для файла устройства, представляющего электронный ключ Guardant в системе. Это позволяет обращаться к ключу с привилегиями любого пользователя системы. Для случаев нетипичного конфигурирования устройств, обратитесь к разделу имена и доступ у устройствам.
Кроме того, поддерживается запуск защищенных Windows приложений с использованием Wine (www.winehq.org). Для этого в комплект разработчика включен проект библиотеки для Wine — grdwine, распространяемый под свободной лицензией GNU Lesser General Public License version 2.1 (поставляется в виде пакета с исходными текстами– grdwine-0.5.5.tar.gz).
Имена и доступ к устройствам
Для ключей, работающих в драйверном режиме
Обращение к ключу происходит через Linux USB Device Filesystem. Подробную информацию см. в файле linux/Documentation/usb/proc_usb_info.txt из документации к Linux. Для успешной работы с ключом в системе нужно разрешить доступ на чтение/запись к файлу устройства.
Для ключей, работающих в HID-режиме
Обращение к ключу происходит через Linux USB HID Device Interface (драйвер usbhid). Подробную информацию см. в файле linux/Documentation/usb/hiddev.txt из документации к Linux. Для успешной работы с ключом в системе нужно изменить имена соответствующих устройств на /dev/grdhidN и разрешить доступ на чтение/запись к файлу устройства.
Пример для hotplug или hotplug-ng
# cp etc/grdnt.usermap /etc/hotplug/usb/grdnt.usermap # cp etc/grdnt /etc/hotplug/usb/grdnt
Установка правил udev
Для ключей как в драйверном, так и в HID-режиме, и в случае использования файлов-устройств USB Device Filesystem
Распаковать архив udev-rules.tar.gz и выполнить установку правил:
$ tar -xvf udev-rules.tar.gz $ ./install.sh
Переменные окружения
Для настройки Guardant API под GNU/Linux следует пользоваться следующими переменными окружения:
GRD_IPC_NAME | директория, в которой процессы будут создавать/открывать для чтения и записи файлы, используемые для синхронизации доступа к ключу. Если переменная не задана, используется значение по умолчанию (/tmp) |
USB_DEVFS_PATH | директория LinuxUSBDeviceFilesystem (точка монтирования или директория, содержащая дерево соответствующих устройств). |
Запуск защищенных Windows-приложений в среде Wine
Для работы приложений Windows, защищённых современных ключами Guardant под Wine, необходима библиотека grdwine.dll.so. Библиотека поставляется в виде исходных текстов (см. grdwine-0.5.5.tar.gz). Это позволяет ее использовать с любой версией Wine, достаточно собрать и установить библиотеку.
Важно
Рекомендуемая к использованию версия Wine — 1.x.x. Корректная работа с более ранними версиями Wine не гарантируется. Загрузить последнюю версию Wine можно по адресу: https://www.winehq.org/download
Важно
Библиотека предназначена только для работы с современными моделями ключей Guardant. C моделями линейки Stealth II и Stealth III эта библиотека не может быть использована.
Установка зависимостей на примере Ubuntu
Для сборки библиотеки на Ubuntu 16.04 требуется предварительно установить пакеты:
$ sudo apt-get install autoconf $ sudo apt-get install wine $ sudo apt-get install wine-dev $ sudo apt-get install wine-dev $ sudo apt-get install libc6-dev-i386 (если требуется сборка 32-разрядной версии библиотеки)
Для Ubuntu 17.10 дополнительно установить:
$ sudo apt-get install wine64-tools (если требуется сборка 64-разрядной версии библиотеки, не совместим с wine32-tools) $ sudo apt-get install wine32-tools (если требуется сборка 32-разрядной версии библиотеки, не совместим с wine64-tools)
Для дистрибутива Ubuntu 16.04 (архитектура i386) достаточно установить пакеты:
$ sudo apt-get install autoconf $ sudo apt-get install wine $ sudo apt-get install wine-dev
Последовательность сборки библиотеки grdwine.dll.so
Распаковать архив grdwine-0.5.5.tar.gz :
$ tar -xvf grdwine-0.5.5.tar.gz $ cd grdwine-0.5.5
Для компиляции и установки 32-разрядной библиотеки выполнить:
$ ./configure --with-wineincs=/usr/include --with-winedlls=/usr/lib/i386-linux-gnu/wine $ make # sudo make install
Для компиляции и установки 64-разрядной библиотеки выполнить:
$ ./configure --enable-win64 --with-wineincs=/usr/include --with-winedlls=/usr/lib/x86_64-linux-gnu/wine $ make # sudo make install
Указанные в примере пути к заголовочным файлам и библиотекам Wine (опции --with-wineincs и --with-winedlls) могут меняться в зависимости от версии Wine, используемого дистрибутива Linux или
заданного префикса для установки (в случае, если Wine устанавливался из исходных кодов)
Для запуска 32-разрядных приложений Windows в дистрибутивах Ubuntu архитектуры x86_64 достаточно собрать только 32-разрядную библиотеку. Сборка 64-разрядной библиотеки требуется для запуска
64-разрядных приложений Windows.
Если правила для udev не были установлены ранее, то их необходимо установить. Подсоедините ключ Guardant к USB-порту компьютера, защищенное приложение готово к работе.
Удаление библиотеки из системы
$ cd grdwine-0.5.5 # make uninstall