Функции Guardant API общего назначения
Функции общего назначения позволяют осуществлять сервисные операции, связанные с инициализацией, настройкой и деинициализацией Guardant API, а также выполнять основные операции с электронными ключами:
- Искать электронный ключ, удовлетворяющий заданным условиям поиска
- Инициализировать память ключа
- Читать данные из памяти ключа
- Записывать данные в память ключа
- Устанавливать запреты на чтение/запись памяти ключа
- Преобразовывать информацию при помощи аппаратных алгоритмов ключа
Перечень функций Guardant API общего назначения:
Название функции |
Код доступа |
Краткое описание |
---|---|---|
GrdStartup |
Не нужен |
Инициализировать Guardant API |
GrdStartupEx |
Не нужен |
Инициализировать GrdAPI + задать путь к GnClient.ini |
GrdCleanup |
Не нужен |
Деинициализировать Guardant API |
GrdDllMain |
Не нужен |
Инициализировать сетевые функции для использования в DLL |
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:
Название функции |
Код доступа |
Краткое описание |
---|---|---|
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 |
Общее число кодов возврата |