Об этом проекте
Keep — это Android-приложение для порогового подписания по схеме FROST (Flexible Round-Optimized Schnorr Threshold Signatures), созданное как специализированный подписант событий Nostr. Оно позволяет пользователям хранить доли ключа FROST на своем телефоне и подписывать события Nostr, при этом ни одно устройство никогда не хранит полный приватный ключ. Приложение реализует протокол Android-подписанта NIP-55 (intents и content provider) и удаленное подписание NIP-46 (bunker-сервис), поэтому совместимые Nostr-клиенты могут запрашивать подписи напрямую.
Ключевые возможности, описанные в README:
- Пороговое подписание FROST с настраиваемыми схемами, такими как 2-из-3 и 3-из-5.
- Протокол Android-подписанта NIP-55 и удаленное подписание NIP-46.
- Импорт и экспорт долей FROST через QR-код или текст, а также импорт существующих ключей nsec.
- Поддержка нескольких аккаунтов с разрешениями и политиками подписания для каждого приложения.
- История подписаний и журнал аудита.
- Биометрическая аутентификация и PIN-код, с аппаратным хранением ключей через Android Keystore.
- Аварийный выключатель для экстренного удаления ключей.
- Поддержка SOCKS-прокси (Tor) и пиннинг сертификатов для соединений с реле.
- Шифрование и дешифрование NIP-44, а также операции NIP-04.
- Фоновое подписание с настраиваемыми лимитами скорости.
- Зашифрованное резервное копирование и восстановление.
- Координация дескрипторов Bitcoin-кошелька для мультиподписи.
Поддерживаемые операции NIP-55 включают get_public_key, sign_event, nip04_encrypt, nip04_decrypt, nip44_encrypt, nip44_decrypt и decrypt_zap_event.
Распространение осуществляется через Zapstore, Obtainium, релизы GitHub и F-Droid. Для сборки требуются зафиксированные версии инструментов: Rust 1.89.0, Android NDK 29.0.14206865, cargo-ndk 4.1.2 и JDK 17; сборка завершается ошибкой при несоответствии версий. Gradle автоматически пересобирает библиотеки Rust при изменении исходников. Скрипт позволяет обновлять Kotlin-привязки из хост-сборки без NDK для проверки типов, хотя такие сборки завершаются ошибкой во время выполнения с UnsatisfiedLinkError. Другой скрипт проверяет зафиксированные версии в скриптах сборки и CI-процессах.
Вклад принимается через issues и pull requests на GitHub. Приветствуются переводы, с базовыми локалями для бразильского португальского, испанского, немецкого и японского; управляемая платформа переводов отмечена как бэклог, а CI проверяет расхождения локалей. Проект лицензирован под MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.