SHA256
Wallet-session pairing и browser plugin wallet, оплаты пока не работают
This commit is contained in:
@@ -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) )>
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user