Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Для взаимодействия с операционной системой Рутокен и его файловой системой имеется низкоуровневый протокол, реализующий подмножество стандарта ISO/IEC 7816-4 (Identification cards - Integrated circuit cards - Part 4: Organization, security and commands for interchange). Этот протокол оперирует понятием APDU (Application Protocol Data Unit) и состоит из двух видов APDU: APDU-команда и APDU-ответ. Инициирует обмен с токеном приложение, отправляя APDU-команду и ожидая получить от токена APDU-ответ.

Интерфейс уровня APDU обеспечивает приложениям доступ ко всем функциям токенов. Однако ничто не дается "бесплатно". В данном случае за широкие возможности приходится платить большим объемом программирования: приложение само должно обнаруживать токен, инициировать транзакции, обеспечивать совместный доступ и т.п.

Структура APDU

APDU-команда
Название поляДлина (байт)Описание
CLA1Класс команды
INS1Код команды
P1-P22Параметры команды
LC0,1 или 3Длина передаваемых данных
Command DataNCНабор байтов, представляющий собой передаваемые данные
Le0, 1, 2 или 3Максимальное количество данных, ожидаемых в поле данных ответа

Таким образом, APDU-команда состоит из заголовка и опционально - данных:

ЗаголовокТело
CLA INS P1 P2[Поле LC][Поле данных][ПолеLe]

 

APDU-ответ
Название поляДлина (байт)Описание
Response data Nr (по крайней мере Ne) Данные ответа
 SW1-SW2 2 Статус обработки команды, например 90 00 (hex) означает успешное завершение

Примеры APDU-команд

APDU-командаОписание
CREATE FILEСоздать файл или каталог в текущем каталоге
SELECT FILEСделать текущим файл (или каталог)
READ BINARYПрочитать текущий файл или его часть
UPDATE BINARYПерезаписать содержимое текущего файла или его части
DELETE FILEУдалить текущий файл или каталог
GENERATE KEYСгенерировать ключ шифрования
VERIFYУстановить текущие права доступа
PERFORM SECURITY OPERATIONВыполнить хэширование, зашифрование, расшифрование (и др. операции) данных
GET CHALLENGEСгенерировать случайное число

Несмотря на то, что APDU является базовым уровнем коммуникации с токеном, разработчику скорее всего не понадобится работать с ним напрямую - за исключением, быть может, каких-то экзотических случаев, когда пользование высокоуровневыми интерфейсами по каким-то причинам нежелательно или невозможно. По этой причине описания и примеры работы с APDU Рутокен мы не включаем в состав Комплекта разработчика.