Функции Guardant API общего назначения
Функции общего назначения позволяют осуществлять сервисные операции, связанные с инициализацией, настройкой и деинициализацией Guardant API, а также выполнять основные операции с электронными ключами:
- Искать электронный ключ, удовлетворяющий заданным условиям поиска
- Инициализировать память ключа
- Читать данные из памяти ключа
- Записывать данные в память ключа
- Устанавливать запреты на чтение/запись памяти ключа
- Преобразовывать информацию при помощи аппаратных алгоритмов ключа
Перечень функций Guardant API общего назначения:
Название функции | Код доступа | Краткое описание |
---|---|---|
GrdStartup | Не нужен | Инициализировать Guardant API |
GrdStartupEx | Не нужен | Инициализировать GrdAPI + задать путь к GnClient.ini |
GrdCleanup | Не нужен | Деинициализировать Guardant API |
GrdGetLastError | Не нужен | Получить информацию о последней ошибкеиз защищенного контейнера |
GrdFormatMessage | Не нужен | Преобразовать код ошибки в текстовое сообщение |
GrdGetInfo | Не нужен | Получить информацию из защищенного контейнера |
GrdIsValidHandle | Не нужен | Проверить валидность хэндла защищенногоконтейнера |
GrdCreateHandle | Не нужен | Создать хэндл защищенного контейнера |
GrdCloseHandle | Не нужен | Закрыть хэндл защищенного контейнера |
GrdSetAccessCodes | Public и Read обязательно, остальные по необходимости | Поместить коды доступа в защищенный контейнер |
GrdSetWorkMode | Не нужен | Установить режимы работы Guardant API |
GrdSetFindMode | Не нужен | Установить режимы поиска электронных ключей |
GrdFind | Private Read | Найти электронный ключ, удовлетворяющий критериям поиска |
GrdLogin | Private Read | Зарегистрироваться на электронном ключе |
GrdLogout | Private Read | Снять регистрацию с электронного ключа |
GrdLock | Private Read | Заблокировать ключ на время выполнения операций, требующих монопольного режима работы с ключом |
GrdUnlock | Private Read | Разблокировать электронный ключ |
GrdCheck | Private Read | Проверить наличие электронного ключа |
GrdDecGP | Private Read+ PrivateWrite | Декрементировать счетчик GP |
GrdRead | Private Read | Прочитать данные из памяти электронного ключа |
GrdWrite | Private Write | Записать данные в память электронного ключа |
GrdSign | Private Read | Вычислить ЭЦП массива данных |
GrdVerifySign | Не нужен | Проверить ЭЦП массива данных |
GrdSeek | Не нужен | Переместить указатель на текущий адрес памятиэлектронного ключа |
GrdInit | Private master | Инициализировать память электронного ключа |
GrdProtect | Private master | Установить аппаратные запреты чтения/записи и записать количество аппаратных алгоритмов и защищенных ячеек |
GrdTransform | Private Read | Преобразовать данные аппаратно- или программно-реализованным алгоритмом |
GrdTransformEx | Private Read | Преобразовать данные аппаратно- или программно-реализованным алгоритмом |
GrdCrypt | Private Read | Закодировать/раскодировать данные аппаратноили программно-реализованным алгоритмом |
GrdCryptEx | Private Read | Закодировать/раскодировать данные аппаратноили программно-реализованным алгоритмом |
GrdHash | Private Read | Вычислить значение хэш-функции программноили аппаратно-реализованным алгоритмом |
GrdHashEx | Private Read | Расширенный вариант GrdHash |
GrdCodeInit | PrivateRead | Инициализировать пароль быстрого взаимообратного преобразования |
GrdEnCode | не нужен | Закодировать данные быстрым взаимообратнымпреобразованием |
GrdDeCode | не нужен | Раскодировать данные быстрым взаимообратнымпреобразованием |
GrdCRC | не нужен | Вычислить CRC |
Функции(методы) общего назначения:
Функции общего назначения позволяют осуществлять сервисные операции, связанные с инициализацией, настройкой и деинициализацией Guardant API, а также выполнять основные операции с электронными ключами:
- Искать электронный ключ, удовлетворяющий заданным условиям поиска
- Инициализировать память ключа
- Читать данные из памяти ключа
- Записывать данные в память ключа
- Устанавливать запреты на чтение/запись памяти ключа
- Преобразовывать информацию при помощи аппаратных алгоритмов ключа
Перечень функций Guardant API общего назначения:
Название функции | Код доступа | Краткое описание |
---|---|---|
Не нужен | Инициализировать GrdAPI + задать путь к GnClient.ini | |
Не нужен | Деинициализировать Guardant API | |
Не нужен | Получить информацию о последней ошибкеиз защищенного контейнера | |
Не нужен | Преобразовать код ошибки в текстовое сообщение | |
Не нужен | Получить информацию из защищенного контейнера | |
Не нужен | Проверить валидность хэндла защищенногоконтейнера | |
Не нужен | Создать хэндл защищенного контейнера | |
Не нужен | Закрыть хэндл защищенного контейнера |
Работа с памятью ключа:
Название функции | Код доступа | Краткое описание |
---|---|---|
Не нужен | Установить режимы работы Guardant API | |
Private Read | Прочитать данные из памяти электронного ключа | |
Private Write | Записать данные в память электронного ключа | |
Не нужен | Переместить указатель на текущий адрес памятиэлектронного ключа | |
Private master | Инициализировать память электронного ключа | |
Private master | Установить аппаратные запреты чтения/записи и записать количество аппаратных алгоритмов и защищенных ячеек |
Монопольная работа с ключом:
Название функции | Код доступа | Краткое описание |
---|---|---|
Private Read | Заблокировать ключ на время выполнения операций, требующих монопольного режима работы с ключом | |
Private Read | Разблокировать электронный ключ |
Поиск и проверка наличия ключа:
Название функции | Код доступа | Краткое описание |
---|---|---|
Public и Read обязательно, остальные по необходимости | Поместить коды доступа в защищенный контейнер | |
Не нужен | Установить режимы поиска электронных ключей | |
Private Read | Найти электронный ключ, удовлетворяющий критериям поиска | |
Private Read | Зарегистрироваться на электронном ключе | |
Private Read | Снять регистрацию с электронного ключа | |
Private Read | Проверить наличие электронного ключа |
Работа с аппаратными и программно-реализованными алгоритмами:
Название функции | Код доступа | Краткое описание |
---|---|---|
Private Read | Преобразовать данные аппаратно- или программно-реализованным алгоритмом | |
Private Read | Закодировать/раскодировать данные аппаратноили программно-реализованным алгоритмом | |
Private Read | Расширенный вариант GrdHash | |
Private Read | Вычислить ЭЦП массива данных | |
Не нужен | Проверить ЭЦП массива данных | |
не нужен | Вычислить CRC |
Функции(методы) Guardant Code:
Название функции | Код доступа | Краткое описание |
---|---|---|
| Загружает код приложения в формате GCEXE во flash- память ключа | |
| Исполняет код, предварительно загруженный в ключ | |
| Возвращает информацию из дескриптора загруженного кода | |
| Задает режим работы ключей Guardant Code/Code Time через драйвер Guardant или в HID режиме |
Функции(методы) для ключей Time:
Название функции | Код доступа | Краткое описание |
---|---|---|
Private Master | Установить время микросхемы таймера ключа | |
Private Read | Получить время таймера ключа | |
Private Read | Получить оставшееся время работы алгоритма | |
Не нужен | Заполнить поля структуры TgrdSystemTime | |
Не нужен | Получить значение полей структуры TgrdSystemTime |
Функции(методы) для удаленного обновления ключей Time:
Название функции | Код доступа | Краткое описание |
---|---|---|
Private Read | Сгенерировать зашифрованное число-вопрос | |
Private Read | Расширенная версия GrdTRU_GenerateQuestionTime | |
Private Read | Расшифровать и проверить подлинностьчисла-вопроса | |
Private Read | Расширенная версия GrdTRU_DecryptQuestionTime |
Устаревшие функции (методы):
Название функции | Код доступа | Краткое описание |
---|---|---|
Private Read+ PrivateWrite | Декрементировать счетчик GP | |
Private Read | Преобразовать данные аппаратно- или программно-реализованным алгоритмом | |
Private Read | Закодировать/раскодировать данные аппаратноили программно-реализованным алгоритмом | |
Private Read | Вычислить значение хэш-функции программноили аппаратно-реализованным алгоритмом | |
PrivateRead | Инициализировать пароль быстрого взаимообратного преобразования | |
не нужен | Закодировать данные быстрым взаимообратнымпреобразованием | |
не нужен | Раскодировать данные быстрым взаимообратнымпреобразованием |
Функции(методы) Guardant API для работы с Trusted Remote Update
Технология удаленного обновления Trusted Remote Update может быть реализована не только при помощи утилит, входящих в Комплект разработчика. При желании разработчики могут встраивать поддержку этой технологии непосредственно в свои приложения, используя набор предназначенных для этой цели функций:
Название функции | Код доступа | Краткое описание |
---|---|---|
GrdTRU_SetKey | Private Master | Инициализировать память электронного ключа и записать секретный ключ TRU |
GrdTRU_GenerateQuestion | Private Read | Сгенерировать число-вопрос |
GrdTRU_GenerateQuestionEx | Private Read | Расширенная версия GrdTRU_GenerateQuestion |
GrdTRU_DecryptQuestion | Private Read | Декодировать и проверить подлинность числа-вопроса |
GrdTRU_DecryptQuestionEx | Private Read | Расширенная версия GrdTRU_DecryptQuestion |
GrdTRU_SetAnswerProperties | Не нужен | Установить параметры числа-ответа |
GrdTRU_EncryptAnswer | Private Read | Сгенерировать и кодировать число-ответ |
GrdTRU_EncryptAnswerEx | Private Read | Расширенная версия GrdTRU_EncryptAnswer |
GrdTRU_ApplyAnswer | Private Read | Записать число-ответ в ключ Guardant |
Функции Guardant API для работы с защищенными ячейками
Для работы с защищенными ячейками существуют специальные функции Guardant API:
Название функции | Код доступа | Краткое описание |
---|---|---|
GrdPI_Activate | Private Readи пароль на данную операцию, если он задан в ключе | Активировать алгоритм / защищенную ячейку |
GrdPI_Deactivate |
| Деактивировать аппаратный алгоритмили защищенную ячейку |
GrdPI_Read |
| Прочитать данные из защищенной ячейки |
GrdPI_Update |
| Обновить данные в защищенной ячейке |
GrdPI_GetCounter |
| Получить значение счетчика запусков алгоритма |
Функции Guardant API для работы с ключами с RTC
Для работы с ключами, поддерживающими технологию Time, существуют специальные функции Guardant API:
Название функции | Код доступа | Краткое описание |
---|---|---|
GrdSetTime | Private Master | Установить время микросхемы таймера ключа |
GrdGetTime | Private Read | Получить время таймера ключа |
GrdPI_GetTimeLimit | Private Read | Получить оставшееся время работы алгоритма |
GrdMakeSystemTime | Не нужен | Заполнить поля структуры TgrdSystemTime |
GrdSplitSystemTime | Не нужен | Получить значение полей структуры TgrdSystemTime |
GrdTRU_ GenerateQuestionTime | Private Read | Сгенерировать зашифрованное число-вопрос |
GrdTRU_GenerateQuestionTimeEx | Private Read | Расширенная версия GrdTRU_GenerateQuestionTime |
GrdTRU_ DecryptQuestionTime | Private Read | Расшифровать и проверить подлинностьчисла-вопроса |
GrdTRU_DecryptQuestionTimeEx | Private Read | Расширенная версия GrdTRU_ DecryptQuestionTime |
Функции Guardant API для работы с Trusted Remote Update
Технология удаленного обновления Trusted Remote Update может быть реализована не только при помощи утилит, входящих в Комплект разработчика. При желании разработчики могут встраивать поддержку этой технологии непосредственно в свои приложения, используя набор предназначенных для этой цели функций:
Название функции | Код доступа | Краткое описание |
---|---|---|
GrdTRU_SetKey | Private Master | Инициализировать память электронного ключа и записать секретный ключ TRU |
GrdTRU_GenerateQuestion | Private Read | Сгенерировать число-вопрос |
GrdTRU_GenerateQuestionEx | Private Read | Расширенная версия GrdTRU_GenerateQuestion |
GrdTRU_DecryptQuestion | Private Read | Декодировать и проверить подлинность числа-вопроса |
GrdTRU_DecryptQuestionEx | Private Read | Расширенная версия GrdTRU_DecryptQuestion |
GrdTRU_SetAnswerProperties | Не нужен | Установить параметры числа-ответа |
GrdTRU_EncryptAnswer | Private Read | Сгенерировать и кодировать число-ответ |
GrdTRU_EncryptAnswerEx | Private Read | Расширенная версия GrdTRU_EncryptAnswer |
GrdTRU_ApplyAnswer | Private Read | Записать число-ответ в ключ Guardant |
Функции Guardant API для работы с ключами Guardant Code
См. Сервисные функции для работы с загружаемым кодом.
Внутреннее Guardant API Code для загружаемого кода
См. Guardant Code API.
Функции Guardant API для управления драйверами
Для того чтобы инсталлировать, деинсталлировать и настраивать драйверы Guardant из собственных приложений можно использовать функции управления драйверами, которые реализованы в виде динамически загружаемой библиотеки.
Название функции | Краткое описание |
---|---|
GrdDrvInstall | Инсталлировать драйверы Guardant |
GrdDrvUnInstall | Деинсталлировать драйверы Guardant |
GrdDrvIsInstalled | Проверить наличие драйверов Guardant в системе |
GrdDrvGetVersion | Получить версию драйверов Guardant,установленных в системе |
GrdDrvSetPortUseState | Установить режимы использования порта |
GrdDrvGetPortUseState | Получить текущие установленныережимы использования порта |
GrdDrvSetPrnPortTimeOut | Установить значение таймаута для LPT порта |
GrdDrvGetPrnPortTimeOut | Получить текущее установленное значение таймаутадля LPT порта |
GrdDrvSetPortProperties | Установить параметры работы с LPT портом |
GrdDrvGetPortProperties | Получить текущие установленные параметры работыс LPT портом |
GrdDrvSetPortPropertiesAuto | Установить параметры работы с LPT портом по умолчанию |
GrdDrvGetSystemInfo | Получить системную информацию о конфигурацииLPT и USB-портов |
Местонахождение файлов API
Категории файлов | Каталог с API |
Заголовочные файлы | Guardant\Guardant %#%%PublicCode%\Include |
Библиотеки и объектные модули | Guardant\Guardant %#%%PublicCode%\Lib |
Примеры работы с Guardant API | Guardant\Guardant %#%%PublicCode%\Samples| |
Коды ошибок Guardant API
Функции Guardant API, предназначенные для работы с электронными ключами, могут возвращать следующие коды ошибок:
Название ошибки | Код | Краткое описание |
---|---|---|
GrdE_Ok | 0 | Операция выполнена успешно |
GrdE_DongleNotFound | 1 | Не найден ключ, отвечающий заданным условиям поиска |
GrdE_AddressTooBig | 3 | Указанный адрес слишком велик |
GrdE_Gpis0 | 5 | Счетчик запусков GP исчерпан (значение равно нулю) |
GrdE_InvalidCommand | 6 | Неверная команда обращения к ключу |
GrdE_VerifyError | 8 | Ошибка верификации записи в память ключа |
GrdE_NetProtocolNotFound | 9 | Сетевой протокол не найден |
GrdE_NetResourceExhaust | 10 | Сетевой ресурс ключа Guardant Net исчерпан |
GrdE_NetConnectionLost | 11 | Потеряно соединение с сервером Guardant Net |
GrdE_NetDongleNotFound | 12 | Сервер Guardant Net не найден |
GrdE_NetServerMemory | 13 | Ошибка распределения памяти сервера Guardant Net |
GrdE_DPMI | 14 | Ошибка DPMI |
GrdE_Internal | 15 | Внутренняя ошибка сервера Guardant Net |
GrdE_NetServerReloaded | 16 | Сервер Guardant Net был перезагружен |
GrdE_VersionTooOld | 17 | Данная команда не поддерживается данной версией ключа (ключ старой версии) |
GrdE_BadDriver | 18 | Необходим драйвер Windows NT |
GrdE_NetProtocol | 19 | Ошибка сетевого протокола |
GrdE_NetPacket | 20 | Получен сетевой пакет недопустимого формата |
GrdE_NeedLogin | 21 | Требуется регистрация на сервере Guardant Net |
GrdE_NeedLogout | 22 | Необходимо снять регистрацию на сервере Guardant |
GrdE_DongleLocked | 23 | Ключ Guardant Net занят другим приложением |
GrdE_DriverBusy | 24 | Драйвер не может захватить порт |
GrdE_CRCError | 30 | Ошибка CRC при обращении к ключу |
GrdE_CRCErrorRead | 31 | Ошибка CRC при чтении данных из ключа |
GrdE_CRCErrorWrite | 32 | Ошибка CRC при записи данных в ключ |
GrdE_Overbound | 33 | Выход за границу памяти ключа |
GrdE_AlgoNotFound | 34 | Аппаратный алгоритм с таким номеромв ключе не найден |
GrdE_CRCErrorFunc | 35 | Ошибка CRC аппаратного алгоритма |
GrdE_AllDonglesFound | 36 | Все ключи перебраны |
GrdE_ProtocolNotSup | 37 | Слишком старая версия Guardant API |
GrdE_InvalidCnvType | 38 | Задан несуществующий метод взаимообратногопреобразования |
GrdE_UnknownError | 39 | Неизвестная ошибка при работе с алгоритмом/ячейкой, операция могла не завершиться |
GrdE_AccessDenied | 40 | Неверный пароль доступа к защищенной ячейке |
GrdE_StatusUnchangeable | 41 | Статус защищенной ячейки изменить нельзя |
GrdE_NoService | 42 | Для алгоритма/ячейки сервис не предусмотрен |
GrdE_InactiveItem | 43 | Алгоритм/ячейка находятся в состоянии Inactive, команда не выполнена |
GrdE_DongleServerTooOld | 44 | Попытка выполнить операцию, которую не поддерживает эта версия сервера Guardant Net |
GrdE_DongleBusy | 45 | В данный момент ключ не может выполнять никаких операций |
GrdE_InvalidArg | 46 | Задано недопустимое значение одного из аргументов функции |
GrdE_MemoryAllocation | 47 | Ошибка распределения памяти |
GrdE_InvalidHandle | 48 | Недопустимый хендл |
GrdE_ContainerInUse | 49 | Этот защищенный контейнер уже используется |
GrdE_Reserved50 | 50 | Зарезервировано |
GrdE_Reserved51 | 51 | Зарезервировано |
GrdE_Reserved52 | 52 | Зарезервировано |
GrdE_SystemDataCorrupted | 53 | Нарушена целостность системных данных |
GrdE_NoQuestion | 54 | Вопрос для удаленного обновленияне был сгенерирован |
GrdE_InvalidData | 55 | Недопустимый формат данныхдля удаленного обновления |
GrdE_QuestionOK | 56 | Вопрос для удаленного обновления уже сгенерирован |
GrdE_UpdateNotComplete | 57 | Процедура записи при удаленном обновлениине завершена |
GrdE_InvalidHash | 58 | Неверное знач. хэша данных удаленного обновления |
GrdE_GenInternal | 59 | Внутренняя ошибка |
GrdE_AlreadyInitialized | 60 | Эта копия Guardant API уже инициализирована |
GrdE_LastError | 61 | Неизвестная ошибка |
GrdE_DuplicateNames | 63 | Числовое имя аппаратного алгоритма/ защищенной ячейки уже существует |
GrdE_AATFormatError | 64 | Несуществующий адрес в AAT-таблице |
GrdE_SessionKeyNtGen | 65 | Сессионный ключ не создан |
GrdE_InvalidPublicKey | 66 | Недействительный открытый ключ |
GrdE_InvalidDigitalSign | 67 | Недействительная ЭЦП |
GrdE_SessionKeyGenError | 68 | Ошибка при создании сессионного ключа |
GrdE_InvalidSessionKey | 69 | Недействительный сессионный ключ |
GrdE_SessionKeyTooOld | 70 | Просроченный сессионный ключ |
GrdE_NeedInitialization | 71 | Необходима инициализация |
GrdE_gcProhibitCode | 72 | Ошибка при проверке загружаемого кода. Адрес точки входа некорректен или обнаружены запрещенные команды или обращение к недопустимым адресам |
GrdE_gcLoadableCodeTimeOut | 73 | Тайм-аут при выполнении загружаемого кода |
GrdE_gcFlashSizeFromDescriptorTooSmall | 74 | В дескрипторе загружаемого кода указан недостаточный размер Flash-памяти |
GrdE_Reserved75 | 75 | Зарезервировано |
GrdE_Reserved76 | 76 | Зарезервировано |
GrdE_Reserved77 | 77 | Зарезервировано |
GrdE_Reserved78 | 78 | Зарезервировано |
GrdE_Reserved79 | 79 | Зарезервировано |
GrdE_gcIncorrectMask | 80 | В дескрипторе загружаемого кода указаннедостаточный размер памяти для структуры TGrdLoadableCodeData |
GrdE_gcRamOverboundInProtect | 81 | В дескрипторе загружаемого кода указан неверный размер RAM |
GrdE_gcFlashOverboundInProtect | 82 | В дескрипторе загружаемого кода указан неверный размер Flash-памяти |
GrdE_gcIntersectionOfCodeAreasInProtect | 83 | Обнаружено пересечение областей Flash-памяти, заданных в нескольких дескрипторах |
GrdE_gcBmapFileTooBig | 84 | Слишком большой размер BMAP-файла |
GrdE_gcZeroLengthProgram | 85 | Загружаемый код имеет нулевую длину |
GrdE_gcDataCorrupt | 86 | Ошибка при контроле целостности данных |
GrdE_gcProtocolError | 87 | Ошибка в протоколе Guardant Code |
GrdE_gcGCEXENotFound | 88 | Нет загруженной программы пользователя |
GrdE_gcNotEnoughRAM | 89 | Объявленный в программе пользователяRAM-буфер ввода-вывода недостаточен для передачи\приема данных |
GrdE_gcException | 90 | При выполнении загружаемого кода произошло нарушение защиты виртуальной среды |
GrdE_gcRamOverboundInCodeLoad | 91 | Буфер ввода-вывода, заданный в загружаемом коде, выходит за допустимую область RAM |
GrdE_gcFlashOverboundInCodeLoad | 92 | Загружаемый код выходит за пределы допустимой области Flash-памяти |
GrdE_gcIntersectionOfCodeAreasInCodeLoad | 93 | Адресное пространство загружаемого кода пересекается с уже загруженным. Необходима инициализация памяти |
GrdE_gcGCEXEFormatError | 94 | Неверный формат GCEXE файла |
GrdE_gcRamAccessViolation | 95 | Заданы пересекающиеся области ОЗУдля запускающего и запускаемого кода |
GrdE_gcCallDepthOverflow | 96 | Превышен уровень вложенности вызовов GcaCodeRun (<1) |
GrdE_LastError | 97 | Общее число кодов возврата |