Wallet-session pairing и browser plugin wallet, оплаты пока не работают

This commit is contained in:
AidarKC
2026-06-16 16:23:08 +04:00
parent 5c155ef503
commit 3efa8bb7ee
41 changed files with 3260 additions and 37 deletions
+8 -2
View File
@@ -183,7 +183,7 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M
"requestId": "esp-set-001",
"payload": {
"enabled": true,
"passwordHash": "argon2id$...",
"passwordHash": "sha256$0123abcd...",
"ttlSeconds": 180
}
}
@@ -191,6 +191,12 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M
Если pairing должен работать **без доп. пароля**, клиент может включить его с пустым `passwordHash`.
Формат непустого `passwordHash`:
```text
sha256$<hex( SHA-256("shine-pairing|" + lower(login.trim()) + "|" + password) )>
```
### Успешный ответ
```json
@@ -222,7 +228,7 @@ K9v3nQ4u8jYk0a2p7cD4mLx1zR0sT5wV6bN8eH3fQ1M
"requestId": "esp-start-001",
"payload": {
"login": "alice",
"passwordHash": "argon2id$...",
"passwordHash": "sha256$0123abcd...",
"requesterSessionKey": "ed25519/BASE64_PUBLIC_KEY",
"requesterSessionType": 1,
"requesterClientPlatform": "Android",
@@ -0,0 +1,22 @@
# wallet-session pairing и SHA-256 пароль pairing
- краткое описание:
- добавлен сценарий `session-only` подключения wallet-plugin через доверенное устройство без передачи постоянных ключей;
- для pairing-пароля убран `argon2id`, вместо него используется только формат `sha256$<hex>`;
- новый plugin `SHiNE-browser-plugin-wallet` получает и хранит только `wallet-session`.
- что проверять:
- в `shine-UI` экран `Войти через другое устройство` создаёт заявку и получает `session-only` approve;
- на доверенном устройстве в `Подключить по коду` кнопка `Подключить wallet-session` действительно не передаёт `device/root/blockchain` ключи;
- новый plugin загружается как Chrome MV3 extension и получает wallet-session;
- pairing c доп. паролем работает только с форматом `sha256$<hex>`;
- pairing без доп. пароля продолжает работать.
- ожидаемый результат:
- requester получает только `sessionId/sessionKey/sessionPriv/storagePwd`;
- доверенное устройство не пересылает постоянные ключи в `session-only` режиме;
- сервер принимает только новый формат pairing-пароля;
- логин по сохранённой wallet-session восстанавливается успешно.
- статус:
- pending
@@ -58,7 +58,7 @@
## 3. Что именно делает сервер
- хранит включённость pairing и optional opaque `passwordHash`;
- хранит включённость pairing и optional `passwordHash` в формате `sha256$<hex>`;
- хранит pairing-заявки всех статусов, но в список активных для доверённого устройства отдаёт только pending `created`;
- рассчитывает короткий код `shortCode` из `7` цифр;
- рассчитывает длинный `fingerprintB58` из `SHA-256` заявки;
@@ -104,3 +104,9 @@
- пароль на сервере, если он включён, только отсеивает лишних;
- онлайн доверенная сессия решает, добавлять ли новую сессию;
- сервер остаётся маршрутизатором и хранилищем состояния, а не владельцем секретов.
Текущий формат pairing-пароля:
```text
sha256$<hex( SHA-256("shine-pairing|" + lower(login.trim()) + "|" + password) )>
```