docs: fix version compatibility (PWA vs server majors), broaden descriptions, drop the header slogan (v2.3.1)
- version check in pysimConnect() now compares the server major against SIMPLE_VERSION (2.3.1) instead of the hardcoded 1.x assumption; the header version is rendered from the same constant - removed the 'SIM OTA with a Human Face' slogan (span, i18n key, translate hook) to free header space - broaden the PWA description in manifest.json/package.json and the help overview (EN/RU): APDU workbench, OTA lab, CAT/STK simulator, card profiler - version compatibility tables in README/RUS, help EN/RU and docs/api.md now describe the major-version rule - README/RUS: Cards promoted to a top-level section; EN duplicate Theme/Localisation sections removed - docs: /api/cardinfo documented; SCP81 'expose framing options' next-work item dropped (done); local AGENTS.md not-implemented note corrected - SW cache simple-v190
This commit is contained in:
+28
-26
@@ -412,28 +412,6 @@ Delivery PoR (SPI2 `01`) проще — карта возвращает PoR на
|
||||
- ISO 9797-1
|
||||
- NIST SP 800-38B (CMAC)
|
||||
|
||||
### Карты
|
||||
|
||||
Хранит сохранённые конфигурации карт (пресеты) в `localStorage`. Пресет содержит криптографические ключи, настройки SPI, TAR и счётчик повторов для SCP80-операций, а также пару **PSK identity / PSK key** для слушателя SCP81 HTTP OTA. «Карты» — **верхнеуровневая вкладка**. При подключении карты читается её EF.ICCID, и пресет с тем же ICCID автоматически выбирается в обоих видах SCP80.
|
||||
|
||||
| Поле | Описание |
|
||||
|---|---|
|
||||
| Name | Понятная метка (обязательна) |
|
||||
| ICCID | Опциональный идентификатор карты; кнопка **С карты** подставляет EF.ICCID подключённой карты (активна, только когда ICCID читается) |
|
||||
| SPI1 / SPI2 | Уровень безопасности и настройки PoR |
|
||||
| Индекс KIc / KID | Номер версии ключа (задаётся вместе с ключами) |
|
||||
| Ключ KIc / KID | Hex-ключи шифрования и MAC |
|
||||
| TAR | Toolkit Application Reference (3 байта) |
|
||||
| Счётчик (CNTR) | 10-значный hex-счётчик повторов, автоматически увеличивается после каждой успешной отправки SCP80 |
|
||||
| PSK identity | SCP81 HTTP OTA: идентификатор, который карта присылает в TLS-рукопожатии |
|
||||
| PSK key | SCP81 HTTP OTA: 32 hex-символа (16 байт); ключ выбирается по идентификатору, который предъявляет карта |
|
||||
|
||||
Столбец **SCP81** показывает, задана ли в пресете рабочая пара PSK: **✓** (идентификатор и ключ), **⚠** (только одно из двух — слушатель такой пресет игнорирует), **—** (PSK нет). Идентификатор и ключ задаются вместе.
|
||||
|
||||
**Добавить карту:** заполните имя, ICCID (опционально — кнопка **С карты** подставляет EF.ICCID подключённой карты), SPI1/SPI2, ключи и индексы KIc/KID, TAR, при необходимости пару PSK и нажмите **Add**. Дубликат ICCID (сравнение без пробелов и с учётом сырой hex-формы) отклоняется с указанием конфликтующего пресета. Карта появится в списке и станет доступна в выпадающем списке **Card preset** на вкладке RAM.
|
||||
|
||||
**Изменить/удалить:** **Edit** загружает пресет в форму (кнопка Add становится **Save**; **Cancel** очищает форму); **Remove** удаляет строку из `localStorage`. Успешная отправка SCP80 увеличивает и сохраняет счётчик повторов, а изменения сразу передаются работающему слушателю SCP81.
|
||||
|
||||
### RAM
|
||||
|
||||
Все операции RAM отправляются как защищённые пакеты SCP80 (ETSI TS 102 225) через SMS-PP-DOWNLOAD ENVELOPE. Карта должна поддерживать SCP03 (AES или 3DES) для безопасной транспортировки.
|
||||
@@ -459,6 +437,30 @@ Delivery PoR (SPI2 `01`) проще — карта возвращает PoR на
|
||||
|
||||
---
|
||||
|
||||
## Карты
|
||||
|
||||
Хранит сохранённые конфигурации карт (пресеты) в `localStorage`. Пресет содержит криптографические ключи, настройки SPI, TAR и счётчик повторов для SCP80-операций, а также пару **PSK identity / PSK key** для слушателя SCP81 HTTP OTA. «Карты» — **верхнеуровневая вкладка**. При подключении карты читается её EF.ICCID, и пресет с тем же ICCID автоматически выбирается в обоих видах SCP80.
|
||||
|
||||
| Поле | Описание |
|
||||
|---|---|
|
||||
| Name | Понятная метка (обязательна) |
|
||||
| ICCID | Опциональный идентификатор карты; кнопка **С карты** подставляет EF.ICCID подключённой карты (активна, только когда ICCID читается) |
|
||||
| SPI1 / SPI2 | Уровень безопасности и настройки PoR |
|
||||
| Индекс KIc / KID | Номер версии ключа (задаётся вместе с ключами) |
|
||||
| Ключ KIc / KID | Hex-ключи шифрования и MAC |
|
||||
| TAR | Toolkit Application Reference (3 байта) |
|
||||
| Счётчик (CNTR) | 10-значный hex-счётчик повторов, автоматически увеличивается после каждой успешной отправки SCP80 |
|
||||
| PSK identity | SCP81 HTTP OTA: идентификатор, который карта присылает в TLS-рукопожатии |
|
||||
| PSK key | SCP81 HTTP OTA: 32 hex-символа (16 байт); ключ выбирается по идентификатору, который предъявляет карта |
|
||||
|
||||
Столбец **SCP81** показывает, задана ли в пресете рабочая пара PSK: **✓** (идентификатор и ключ), **⚠** (только одно из двух — слушатель такой пресет игнорирует), **—** (PSK нет). Идентификатор и ключ задаются вместе.
|
||||
|
||||
**Добавить карту:** заполните имя, ICCID (опционально — кнопка **С карты** подставляет EF.ICCID подключённой карты), SPI1/SPI2, ключи и индексы KIc/KID, TAR, при необходимости пару PSK и нажмите **Add**. Дубликат ICCID (сравнение без пробелов и с учётом сырой hex-формы) отклоняется с указанием конфликтующего пресета. Карта появится в списке и станет доступна в выпадающем списке **Card preset** на вкладке RAM.
|
||||
|
||||
**Изменить/удалить:** **Edit** загружает пресет в форму (кнопка Add становится **Save**; **Cancel** очищает форму); **Remove** удаляет строку из `localStorage`. Успешная отправка SCP80 увеличивает и сохраняет счётчик повторов, а изменения сразу передаются работающему слушателю SCP81.
|
||||
|
||||
---
|
||||
|
||||
## Card Reader (интеграция с pySim)
|
||||
|
||||
Подключение к встроенному [`pysim-simple-server`](pysim_simple_server/) для работы с картой.
|
||||
@@ -612,11 +614,11 @@ SIMple — Progressive Web App. Можно установить для offline-
|
||||
|
||||
| PWA (SIMple) | Сервер | Статус |
|
||||
|---|---|---|
|
||||
| 1.x.x | 1.x.x | ✅ Совместимы |
|
||||
| 1.x.x | 0.x.x | ❌ Сервер устарел |
|
||||
| 1.x.x | 2.x.x+ | ⚠️ Сервер новее — обновите PWA |
|
||||
| любая | та же мажорная | ✅ Совместимы |
|
||||
| любая | старее мажорная | ❌ Сервер устарел — обновите сервер |
|
||||
| любая | новее мажорная | ⚠️ Сервер новее — обновите PWA |
|
||||
|
||||
PWA проверяет версию сервера при подключении через `GET /api/version`.
|
||||
PWA проверяет версию сервера при подключении через `GET /api/version` и сравнивает мажорную версию (например, PWA 2.x с сервером 2.x; сервер 1.x помечается как устаревший).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user