39 lines
1.9 KiB
Markdown
39 lines
1.9 KiB
Markdown
# SHiNE Browser Plugin Wallet
|
||
|
||
Chrome-compatible Manifest V3 plugin for SHiNE wallet-session login.
|
||
|
||
## Что уже умеет
|
||
|
||
- создать `wallet-session` через `StartEspPairing`;
|
||
- показать код подключения;
|
||
- дождаться подтверждения на доверенном устройстве;
|
||
- принять `session-only` payload без передачи `deviceKey/rootKey/blockchainKey`;
|
||
- сохранить `sessionPriv/sessionKey/sessionId` в локальном хранилище plugin;
|
||
- восстанавливать session через `SessionChallenge -> SessionLogin`;
|
||
- держать wallet-state в `background service worker`, а popup использовать как UI.
|
||
|
||
## Как загрузить локально
|
||
|
||
1. Открой `chrome://extensions/`
|
||
2. Включи `Developer mode`
|
||
3. Нажми `Load unpacked`
|
||
4. Выбери папку `SHiNE-browser-plugin-wallet/`
|
||
|
||
## Ограничения текущего этапа
|
||
|
||
- plugin пока не держит постоянный фоновый WS-канал после закрытия popup, но хранит wallet-state в `background`;
|
||
- на этом этапе реализован только `session-only login`;
|
||
- запросы на подпись будут следующим этапом.
|
||
- pairing-пароль, если он используется, должен генерироваться в формате `sha256$<hex>` от строки `shine-pairing|loginLower|password`.
|
||
|
||
## Сборка crypto bundle
|
||
|
||
Для обычной загрузки plugin это не нужно: bundled crypto-файл уже лежит в репозитории.
|
||
|
||
Если понадобится пересобрать локальный crypto bundle:
|
||
|
||
```bash
|
||
npm install
|
||
npx esbuild js/lib/vendor/noble-ed25519-entry.js --bundle --format=esm --platform=browser --outfile=js/lib/vendor/noble-ed25519-bundle.js
|
||
```
|