- Шифрованный файл .qulyp: Argon2id + XChaCha20-Poly1305, атомарная запись и .bak - Записи с TOTP, папками, избранным и историей паролей; генератор паролей - Синхронизация через облачную папку с послезаписным слиянием и ручное слияние файлов - Автоблокировка, автоочистка буфера обмена, тёмная/светлая тема - Сборка под Windows и Linux, CI для Gitea Actions - Заметки проекта в notes/ с лимитами строк (tests/notes.rs) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.0 KiB
Решения
egui/eframe вместо Tauri/Qt. Чистый Rust, один бинарник, без WebView и Node; одинаково на Windows и Linux.
Рендер glow (OpenGL) — легче wgpu и быстрее собирается.
Свой формат, а не .kdbx. KDBX сложен (XML, много версий KDF/шифров). Свой формат — 60 байт заголовка
- зашифрованный JSON, легко проверить. Импорт KDBX — отдельной задачей (см. PLAN).
Argon2id 64 МиБ / 3 прохода / p=4. Рекомендация OWASP-уровня, ~0.5 с на разблокировку. Параметры пишутся в заголовок — можно усилить позже без смены формата.
XChaCha20-Poly1305. 24-байтный случайный nonce на каждое сохранение — без риска повтора. Весь заголовок — AAD, подмена параметров ломает расшифровку.
Синхронизация = файл в облачной папке. Никакого своего сервера. Перед записью файл на диске сливается с памятью; раз в 2 с проверяется внешнее изменение. Слияние — по записям, свежая побеждает, старый пароль уходит в историю, удаления — через надгробия.
Автосохранение после каждого изменения. Нет кнопки «Сохранить» и риска забыть. Старая версия → .qulyp.bak.
RustCrypto старых стабильных версий (argon2 0.5, chacha20poly1305 0.10, hmac 0.12): новые мажорные версии меняют API, а эти широко проверены.
Язык интерфейса — русский. Локализация — если понадобится.