SHiNE-server/SHiNE-browser-plugin-wallet
AidarKC 56db6d0add TrustedDeviceLogin API и настройки входа через устройство
Что сделано:\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 всё ещё не реализован
2026-06-18 14:19:31 +04:00
..
.idea Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00
gradle/wrapper Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00
js/lib TrustedDeviceLogin API и настройки входа через устройство 2026-06-18 14:19:31 +04:00
.gitignore Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00
background.js TrustedDeviceLogin API и настройки входа через устройство 2026-06-18 14:19:31 +04:00
build.gradle Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00
gradlew Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00
gradlew.bat Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00
manifest.json Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00
package-lock.json Автоопределение SHiNE-сервера по логину через PDA 2026-06-16 16:32:33 +04:00
package.json Автоопределение SHiNE-сервера по логину через PDA 2026-06-16 16:32:33 +04:00
popup.css Wallet plugin: офлайн wallet-session и выбор homeserver\n\nСделано:\n- wallet plugin сохраняет PDA-профиль и остаётся офлайн до действия;\n- добавлен каркас выбора ключа подписи и homeserver-устройства;\n- добавлен ручной refresh trusted devices через ListSessions;\n- на регистрации показан первый сервер SHiNE и его адрес;\n- обновлены pending notes для ручной проверки.\n\nЕщё не проверено / не доделано:\n- end-to-end ручная проверка plugin после этих правок не завершена;\n- signaling запроса подписи и ответ подписи ещё не реализованы;\n- локальный browser plugin нужно отдельно reload в Chrome/Opera. 2026-06-18 11:04:34 +04:00
popup.html TrustedDeviceLogin API и настройки входа через устройство 2026-06-18 14:19:31 +04:00
popup.js TrustedDeviceLogin API и настройки входа через устройство 2026-06-18 14:19:31 +04:00
README.md TrustedDeviceLogin API и настройки входа через устройство 2026-06-18 14:19:31 +04:00
settings.gradle Wallet-session pairing и browser plugin wallet, оплаты пока не работают 2026-06-16 16:23:08 +04:00

SHiNE Browser Plugin Wallet

Chrome-compatible Manifest V3 plugin for SHiNE wallet-session login.

Что уже умеет

  • создать wallet-session через StartTrustedDeviceLogin;
  • показать код подключения;
  • дождаться подтверждения на доверенном устройстве;
  • принять 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:

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