Skip to content

fix(cache): hash API key before storing in cache.redb #42

Description

@xodapi

Что сделать

cache_key() в src/cli/cache.rs использует api_key в открытом виде как часть ключа записи в redb:

fn cache_key(api_key: &str, api_base: &str) -> String {
    format!("{}|{}", api_key, api_base.trim_end_matches('/'))
}

Это означает, что VIBEMODE_API_KEY хранится в открытом виде внутри cache.redb (лежит в APPDATA / ~/.config). Любой пользователь системы с доступом к этому файлу может извлечь ключ.

Конкретные изменения

  1. Заменить cache_key на хеш от api_key + api_base:
    • Использовать std::collections::hash_map::DefaultHasher для получения stable хеша
    • Формат ключа: <hash>|api_base
  2. Убедиться, что кэш по-прежнему корректно работает (читается и записывается)

Критерии приёмки

  • cargo test --locked проходит
  • cargo clippy --all-targets -- -D warnings чистый
  • Кэш продолжает работать корректно после изменения формата ключа

Что нельзя трогать

  • Cargo.toml (новые зависимости не нужны)
  • Формат JSON-вывода
  • Любые другие модули кроме src/cli/cache.rs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agentГотово к выполнению агентом

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions