Память электронных ключей Guardant Sign / Time / Sign Net / Time Net можно логически разбить на следующие области (все адреса даны в системе адресации SAM):
- Байты с 0 по 9 включительно недоступны для записи. Эта память используется ключом для собственных нужд. Содержимое этой памяти программируют на стадии производства ключей; она может использоваться только для чтения. При попытке записи в нее функцией API возвращается ошибка GrdE_OK. Эта память недоступна в режиме UAM.
- Байты с 14 по 25 включительно доступны только для чтения. Там содержатся Общий код, аппаратная версия ключа, сетевой ресурс ключа, биты типов и моделей ключа и ID. Поля этой памяти полезны, когда надо определить, например, ID ключа. Данные в эту память заносятся на стадии производства ключей. При попытке записи в нее возвращается GrdE_OK. Эта память недоступна в режиме UAM.
- Байты с 10 по 13 и с 26 по 29 включительно доступны только для операций GrdProtect и GrdInit или GrdTRU_SetKey. Содержат адреса запретов на чтение/запись, количество аппаратных алгоритмов и защищенных ячеек в ключе. При попытке записи в эту память не через GrdProtect возвращается GrdE_OK. Эта память недоступна в режиме UAM.
- Байты с 30 по 43 включительно всегда доступны для чтения и записи и содержат т. н. поля общего назначения: номер программы, версию, серийный номер, маску, счетчик запусков GP (счетчик #1), максимальный ресурс сетевых лицензий (счетчик #2), индекс для дистанционного программирования ключа. Эти поля доступны в режиме UAM. Эти поля в основном используются для формирования параметров поиска нужного ключа и активно используются утилитами автоматической защиты.
- Байты с 44 по 3959 включительно доступны для чтения и записи, если на них не установлен запрет, и могут использоваться для хранения данных пользователя, дескрипторов аппаратных алгоритмов и защищенных ячеек. Эти байты обнуляются при выполнении функции GrdInit или GrdTRU_SetKey.
- Байты с 3960 по 3967 включительно зарезервированы, поэтому их не рекомендуется использовать. Доступны в режиме UAM.
Адрес | Адрес | Длина | Запрет: | Имя поля | Описание поля |
Системные поля | |||||
0 | N/A | 1 | W | kmModel | Код модели ключа |
1 | N/A | 1 | W | kmMemSize | Код объема памяти. Значение поля соответствует степени, в которую нужно возвести число 2, чтобы получить объем памяти ключа в байтах |
2 | N/A | 1 | W | kmProgVer | Версия программы в ключе. Это поле может быть использовано для идентификации ключей с заказными микропрограммами |
3 | N/A | 1 | W | kmProtocol | Версия протокола обмена с ключом. Для внутреннего применения. Используется утилитами диагностики |
4 | N/A | 2 | W | kmClientVer | Версия ядра нижнего уровня. Значение 0x104 соответствует версии 1.4. Для внутреннего применения. Используется утилитами диагностики |
6 | N/A | 1 | W | kmUserAddr | SAM-адрес начала пользовательской (UAM) памяти в двухбайтовых словах |
7 | N/A | 1 | W | kmAlgoAddr | Адрес таблицы размещения защищенных ячеек в словах |
8 | N/A | 2 | W | kmPrnPort | Адрес параллельного порта, к которому подсоединен ключ. Для USB-ключей Guardant значение равно 0 |
10 | N/A | 2 | W | kmWriteProtectS3 | Адрес SAM первого байта, доступного для записи. Число 0 означает отсутствие запретов на запись. Запрет может быть установлен только с адреса 44 SAM (*) |
12 | N/A | 2 | kmReadProtectS3 | Адрес SAM первого байта, доступного для чтения. Число 0 означает отсутствие запретов на чтение. Запрет может быть установлен только с адреса 44 SAM. (*) | |
14 | N/A | 4 | W | kmPublicCode | Общий код в числовом виде |
18 | N/A | 1 | W | kmVersion | Аппаратная версия ключа: |
19 | N/A | 1 | W | kmLANRes | Максимальный LAN ресурс ключа Guardant Net, программируемый при продаже ключа. Для локальных ключей значение равно 0 |
20 | N/A | 2 | W | kmType | Биты типа ключа. Поле может участвовать в условии поиска ключа |
22 | N/A | 4 | W | kmID | ID (уникальный идентификационный номер) ключа. Может участвовать в условии поиска ключа. Записывается на стадии производства. Гарантируется, что двух ключей с одинаковыми ID не может быть. Это поле используется в специальном режиме автоматической защиты. Можно настроить приложение на ID ключа, и тогда оно будет работать только с ключом, содержащим этот ID. |
26 | N/A | 1 | W | kmWriteProtect | Не используется. Должно быть равно FFh (см. kmWriteProtectS3) (*) |
27 | N/A | 1 | W | kmReadProtect | Не используется. Должно быть равно FFh (см. kmReadProtectS3) (*) |
28 | N/A | 1 | W | kmAlgoNum | Количество защищенных ячеек (*) |
29 | N/A | 1 | W | kmTableLMS | Номер защищенной ячейки, в которой хранится таблица лицензий. В Guardant Code не используется, поскольку это локальные ключи (*) |
Поля общего назначения | |||||
30 | 0 | 1 | kmNProg | Номер программы. Может участвовать в условии поиска ключа | |
31 | 1 | 1 | kmVer | Версия. Может участвовать в условии поиска ключа | |
32 | 2 | 2 | kmSN | Серийный номер. Может участвовать в условии поиска ключа | |
34 | 4 | 2 | kmMask | Битовая маска. Может участвовать в условии поиска ключа | |
36 | 6 | 2 | kmGP | Счетчик запусков программы GP (счетчик #1). Не может участвовать в условии поиска ключа. Использование этого поля не рекомендуется | |
38 | 8 | 2 | kmRealLANRes | Реальный сетевой ресурс ключа Guardant Net (счетчик #2). Не может участвовать в условии поиска ключа. | |
40 | 10 | 4 | kmIndex | Индекс для удаленного программирования. Не может участвовать в условии поиска ключа. | |
Поля свободного назначения | |||||
44 | 14 | 3916 | kmUserData | Начиная с этого адреса могут располагаться данные (в том числе дескрипторы алгоритмов) | |
Поля специального назначения | |||||
3960 | 3930 | 8 | Это поле используется программами диагностики электронного ключа. СТРОГО не рекомендуется использовать. Не обнуляется операцией Init. Доступны в режиме UAM |
(*) Только функции GrdInit и GrdTRU_SetKey могут обнулить значение этого поля. Запись в поле возможна только после обнуления и только функцией GrdProtect. При попытке записи в эту память не через GrdProtect возвращается GrdE_OK, но запись не производится. Эта память недоступна в режиме UAM.