Об этом проекте

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.