SHA256
41 lines
2.3 KiB
Markdown
41 lines
2.3 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.
|
|
- принимать не адрес сервера, а логин серверного аккаунта SHiNE и находить точный `https://...` / `wss://...` адрес через его PDA.
|
|
|
|
## Как загрузить локально
|
|
|
|
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
|
|
npx esbuild js/lib/vendor/solana-publickey-entry.js --bundle --format=esm --platform=browser --outfile=js/lib/vendor/solana-publickey-bundle.js
|
|
```
|