Что сделано:\n- публичный API сценария входа через доверенное устройство переведён на TrustedDeviceLogin\n- добавлен GetTrustedDeviceLoginSettings\n- отсутствие записи настроек на сервере теперь трактуется как enabled=true и hasPassword=false\n- ttlSeconds убран из клиентского API, TTL заявки фиксирован на сервере: 300 секунд\n- в shine-UI добавлен отдельный экран настроек входа через устройство и статус на основном экране\n- browser wallet переведён на новые TrustedDeviceLogin операции\n- в wallet добавлен выбор rootKey/deviceKey для будущего запроса подписи\n- документация API обновлена\n\nЧто ещё не проверено вручную end-to-end:\n- полный сценарий UI/plugin после этого деплоя не прогонялся руками до конца\n- сам signaling подписи в wallet всё ещё не реализован
2.3 KiB
2.3 KiB
SHiNE Browser Plugin Wallet
Chrome-compatible Manifest V3 plugin for SHiNE wallet-session login.
Что уже умеет
- создать
wallet-sessionчерезStartTrustedDeviceLogin; - показать код подключения;
- дождаться подтверждения на доверенном устройстве;
- принять
session-onlypayload без передачиdeviceKey/rootKey/blockchainKey; - сохранить
sessionPriv/sessionKey/sessionIdв локальном хранилище plugin; - восстанавливать session через
SessionChallenge -> SessionLogin; - держать wallet-state в
background service worker, а popup использовать как UI. - принимать не адрес сервера, а логин серверного аккаунта SHiNE и находить точный
https://.../wss://...адрес через его PDA.
Как загрузить локально
- Открой
chrome://extensions/ - Включи
Developer mode - Нажми
Load unpacked - Выбери папку
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:
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