Команды навигации
9.2.1 SELECT
Выбор текущего файла.
тип команды | in/out (case 4) |
формат команды:
CLA | 00 | |||||||||||||||
INS | A4 | |||||||||||||||
P1 | режим выбора файла (1) 00 – выбор файла по идентификатору (Lc=2) или (2) навигация по директории (см. P2) (Lc=0) (3) 01 – выбор DF под текущим DF по идентификатору (4) 02 – выбор EF под текущим DF по идентификатору (5) 03 – выбор родительского файла текущего DF (поле данных пусто) (6) 04 – выбор директории по имени (7) 08 – выбор файла по абсолютному пути (от MF) (8) 09 – выбор файла по относительному пути (от текущего DF) |
|||||||||||||||
P2 | Биты 1,2 для режимов (2),(6): 00 – выбрать первый файл 10 – выбрать следующий файл Биты 3,4: |
|||||||||||||||
Lc, данные |
|
|||||||||||||||
Le | обычно 0 – все имеющиеся данные | |||||||||||||||
ответ | FCI или FCP, или FMD, или ничего |
характерные статусы ошибок:
6283 | Выбранный файл блокирован |
6700 | Неправильная длина входных данных |
6984 | Входные данные команды имеют недопустимые значения |
6A82 | Файл не найден |
6A86 | Неправильные значения параметров P1/P2 |
По сравнению с ISO 7816-4 внесены следующие изменения:
- Последовательный перебор приложений с одинаковым именем делается не подачей одной и той же команды, а установкой P2[1..2] = 02
- Не поддерживаются режимы выбора последнего и предыдущего файла P2 [1..2]=01,03
Если выбираемого файла не существуют, то текущим остается ранее выбранный файл.
Зарезервированные идентификаторы для P1=00:
- идентификатор 3F00 зарезервирован за MF;
- идентификатор 3FFF обозначает текущий DF;
- идентификатор 0000 обозначает текущий файл (EF или DF).
Если текущий файл – DF, то действуют следующие правила:
- Анализируются зарезервированные идентификаторы, причем 3FFF означает сам текущий DF.
- При выборе первого файла (только для SELECT) (P1=00 P2=00), текущим становится первый файл вложенной директории, т.е. происходит «погружение» в DF.
- При выборе следующего файла (P1=00, P2=03), текущим становится следующий за DF файл, расположенный на том же уровне, т.е. «погружения» не происходит. Таким образом, всю директорию можно просмотреть, последовательно выбирая следующий файл, при этом не будет производиться погружение во вложенные директории.
- При выборе файла по идентификатору поиск производится в следующем порядке:
- внутри DF
- на одном уровне с DF
- анализируется идентификатор родительского DF - При выборе родительского DF (P1=03) выбирается родительский файл данного DF.
Если текущий файл – EF, то действуют следующие правила:
- Анализируются зарезервированные идентификаторы.
- При выборе файла по идентификатору поиск производится в следующем порядке:
- внутри текущего DF
- анализируется идентификатор текущего DF - При выборе родительского DF (P1=03) выбирается родительский файл текущего DF (т.е. осуществляется выбор «дедушки»)
Выбор по пути равносилен последовательному выполнению нескольких команд SELECT в режиме выбора по идентификатору (P1=0). При выборе файла с указанием пути, начало пути (MF или текущий DF не указываются). Выбор по абсолютному пути выглядит так, как если бы в начало пути был добавлен идентификатор 3F00, а по относительному пути – идентификатор 3FFF.
Имя DF (AID) находится в контексте DF. При выборе DF по имени, поиск начинается с MF и производится по всем директориям карты с погружением в поддиректории. В режиме P2=2, поиск продолжается, начиная со следующего DF в порядке обхода. Поиск производится по частичному совпадению, т.е. достаточно, чтобы совпали первые Lc байт имени. Если Lc = 0, то будет выбран первый встречный DF, вообще имеющий AID.
Содержание FCI, FCP и FMD соответствует ISO 7816-4 (см. раздел «Структуры данных на карте»).
Фактически, FMD для DF – содержание контекста DF; для EF FMD не определен. Контекст DF, возвращаемый в качестве FMD, должен иметь фактический размер не более 127 байт. В противном случае при запросе вывода FMD или FCI будет возвращено столько тэгов контекста DF, чтобы суммарная их длина не превысила 127 байт (без индикации ошибки).
В случае указания отличного от нуля значения уровня выдачи информации по команде SELECT (объект с тэгом 8D шаблона A5 в FCP) для родительского файла выбранного файла объем выводимой информации будет соответствующим образом редуцирован.