feat: remote-script command palette — RFM/RAM commands in Expanded Script, TS 102 226 §9 PUSH (v3.3.0)
Phase 1 — the Expanded Script C-APDU rows are no longer hex-only: - chain containers gained a kind (chainKind/chainIsEmbedded/chainCommands), so the SIM RFM / USIM RFM / RAM-GP row editors and hex builders can be embedded as one-row "virtual" chains (ber-<kind>-<uid>) with a listener hook (chainListen/chainNotify) refreshing the owning row. - the C-APDU row offers Hex / SIM RFM / USIM RFM / RAM-GP; the built APDU is echoed next to the picker and wrapped in the 22 Command TLV. GET RESPONSE is not offered in the embedded pickers (TS 102 226 5.2.1.1). Phase 2 — "→ Expanded Script" in the SIM RFM / USIM RFM / RAM-GP views imports the built chain as C-APDU rows (chainApduList drops GET RESPONSE and splits multi-APDU FID-chain selects; the RAM "To expanded" preview stays). Phase 3 — the TS 102 226 table 7.1/8.1/9.1 gaps: - RFM: SEARCH RECORD (TS 102 221 11.1.7 / SEEK per TS 151 011 9.2.7), INCREASE (11.1.8 / TS 151 011 9.2.8), CREATE FILE / DELETE FILE / RESIZE FILE (TS 102 222 6.3/6.4/6.10, with an FCP skeleton builder and CLA 80 for RESIZE), SET DATA / RETRIEVE DATA (11.3, block + SFI coding); - RAM: PUT KEY (GP Card Spec 11.8) and the TS 102 226 §9 PUSH command (80 EC 01 P2) with BIP opening (optional OPEN CHANNEL TLVs), CAT_TP (3C/39/36), TCP (35/3C/3E/47) and identification-packet variants. Tests: new frontend/tests/ts102226.test.js (byte-exact spec vectors for every new command, the FCP skeletons, chainApduList) plus C-APDU row tests in ber.test.js; 530 frontend / 390 Python green. Help EN/RU, README/RUS and AGENTS document the Command TLV taxonomy (Tables 5.5/5.9 limits), the picker and the new commands.
This commit is contained in:
+26
-1
@@ -64,6 +64,9 @@ CLA = `A0` (GSM 11.11 / ISO 7816-4).
|
||||
| DEACTIVATE FILE | 04 | Деактивация файла |
|
||||
| VERIFY PIN | 20 | Проверка PIN1 или PIN2 |
|
||||
| CHANGE PIN | 24 | Смена PIN1 или PIN2 |
|
||||
| UNBLOCK PIN | 2C | Разблокировка PIN через PUK |
|
||||
| SEARCH RECORD (SEEK) | A2 | Поиск образца в линейном фиксированном EF; P2 задаёт тип 1/2 и режим (TS 151 011 §9.2.7) |
|
||||
| INCREASE | 32 | Прибавить значение к последней увеличенной/обновлённой записи циклического EF (3 байта, TS 151 011 §9.2.8) |
|
||||
|
||||
#### Методы SELECT
|
||||
|
||||
@@ -91,6 +94,18 @@ CLA = `A0` (GSM 11.11 / ISO 7816-4).
|
||||
|
||||
CLA = `00` (ETSI TS 102 221). Те же команды, что и SIM, но SELECT использует P1=09, P2=0C.
|
||||
|
||||
Дополнительно доступны административные команды UICC (ETSI TS 102 221/102 222):
|
||||
|
||||
| Команда | INS | Описание |
|
||||
|---|---|---|
|
||||
| SEARCH RECORD | A2 | Простой (P2=10/12, P1 = номер записи) и расширенный (P2=18, 2-байтовое indication) поиск по TS 102 221 §11.1.7 |
|
||||
| INCREASE | 32 | Прибавить значение к записи циклического EF; необязательный SFI в P1 (TS 102 221 §11.1.8) |
|
||||
| CREATE FILE | E0 | Создание EF из шаблона FCP; кнопка **Build template** собирает структурный каркас (TS 102 222 §6.3) |
|
||||
| DELETE FILE | E4 | Удаление EF/DF по FID (TS 102 222 §6.4) |
|
||||
| RESIZE FILE | D4 | Изменение размера файла (FCP с FID + новый размер); CLA `80` по TS 102 222 Table 1 (TS 102 222 §6.10) |
|
||||
| SET DATA | DB | Запись BER-TLV объекта; P2 выбирает первый/следующий/повторный блок (+SFI) (TS 102 221 §11.3.2) |
|
||||
| RETRIEVE DATA | CB | Чтение BER-TLV объекта или списка тегов (`5C`); P2 как выше (TS 102 221 §11.3.1) |
|
||||
|
||||
#### Ссылки
|
||||
|
||||
- ETSI TS 102 221: UICC-Terminal Interface
|
||||
@@ -109,11 +124,17 @@ CLA = `00` (ETSI TS 102 221). Те же команды, что и SIM, но SELE
|
||||
|
||||
| Тип | Тег | Описание |
|
||||
|---|---|---|
|
||||
| C-APDU | 22 | APDU |
|
||||
| C-APDU | 22 | Любая команда удалённого управления: hex или собранная редакторами SIM RFM / USIM RFM / RAM-GP (TS 102 226 §5.2.1.0) |
|
||||
| Immediate Action | 81 | Proactive-команда или action indicator |
|
||||
| Error Action | 82 | Proactive-команда при ошибке |
|
||||
| Script Chaining | 83 | Данные для многопакетных скриптов |
|
||||
|
||||
#### Строки C-APDU
|
||||
|
||||
Строка C-APDU начинает в режиме **Hex** (вставьте любую команду) и может переключиться на одно-строчный редактор **SIM RFM**, **USIM RFM** или **RAM/GP**, который собирает команду из полей — итоговый APDU оборачивается в TLV `22` и показывается рядом с выбором. GET RESPONSE там не предлагается: расширенный формат не несёт GET RESPONSE (TS 102 226 §5.2.1.1). Кнопка **→ Расширенный скрипт** в представлениях SIM RFM / USIM RFM / RAM-GP добавляет их команды строками C-APDU (строки GET RESPONSE отбрасываются).
|
||||
|
||||
Только REFRESH, DISPLAY TEXT и PLAY TONE допустимы как Immediate Action (TS 102 226 Table 5.5), и только DISPLAY TEXT и PLAY TONE — как Error Action (Table 5.9); поведение карты для других проактивных команд не определено.
|
||||
|
||||
#### Сборщик Immediate Action
|
||||
|
||||
- **Action indicator**: `81` / `82`
|
||||
@@ -145,9 +166,13 @@ CLA = `80` (GlobalPlatform v2.3.1). Удалённое управление со
|
||||
| GET DATA | CA | tag | Чтение объектов данных |
|
||||
| STORE DATA | E2 | 00/40/80/C0 | Запись данных |
|
||||
| SET STATUS | F0 | 80/40/60 | Управление жизненным циклом |
|
||||
| PUT KEY | D0 | key ver | Замена ключа: P1 = версия ключа, P2 = идентификатор, данные = новый ключевой материал (GP Card Spec §11.8) |
|
||||
| PUSH | EC | 01 | Просьба приложению открыть BIP-канал / CAT_TP / TCP или отправить пакет идентификации (TS 102 226 §9) |
|
||||
| EXTERNAL AUTHENTICATE | 82 | 00 | Аутентификация SCP |
|
||||
| INTERNAL AUTHENTICATE | 88 | 00 | Challenge-response |
|
||||
|
||||
**PUSH** (TS 102 226 §9.2) — это C-APDU (`80 EC 01 P2`), адресованный приложению, поддерживающему BIP и/или CAT_TP (не триггер HTTP-администрирования — тот собирается в конструкторе HTTP OTA выше). P2: `01` открытие BIP-канала (COMPREHENSION-TLV OPEN CHANNEL, необязательно), `02` CAT_TP (порт назначения в transport level `3C` с типом протокола 00, необязательные buffer size `39` / channel data `36`), `03` TCP (bearer `35`, transport level `3C` с типом протокола 02 = TCP-клиент, удалённое соединение, адрес назначения `3E`, NAA/APN `47`), `04` пакет идентификации (channel data `36`; при отсутствии используется ICCID). Проактивную OPEN CHANNEL выдаёт само приложение; успех — `90 00`, отказ — `6F 00` с Result TLV в данных ответа, некорректные данные отклоняются с `6A 80`.
|
||||
|
||||
#### Привилегии (INSTALL [for install])
|
||||
|
||||
Три байта привилегий по GP Spec Tables 11-7, 11-8, 11-9.
|
||||
|
||||
Reference in New Issue
Block a user