Skip to content

stepan41k/p-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пример

1. Структура данных

type Entry struct {
    Service  string `json:"service"`  // например, "github.com"
    Login    string `json:"login"`
    Password string `json:"password"`
    Note     string `json:"note"`
}

type Vault struct {
    Entries []Entry `json:"entries"`
}

2. Логика добавления пароля

  • Запрос мастер-пароля: Пользователь вводит мастер-пароль в терминале.
  • Download: Скачиваем существующий файл vault.enc из Selectel S3 в память (массив байт). Если файла еще нет — создаем пустой объект Vault.
  • Decrypt: Превращаем байты из S3 в чистый JSON с помощью мастер-пароля.
  • Десериализация: json.Unmarshal превращает JSON в структуру Vault.
  • Модификация: Добавляем в массив Entries новую запись.
  • Сериализация: json.Marshal превращает обновленный Vault обратно в JSON.
  • Encrypt: Шифруем JSON новым солью и нонсом.
  • Upload: Отправляем зашифрованные байты в Selectel S3, заменяя старый файл.

3. Логика получения пароля

  • Поиск: Пользователь выбирает сервис, например: github.
  • Запрос мастер-пароля: без него не расшифровать.
  • Download: Получаем vault.enc из S3.
  • Decrypt: Получаем чистый JSON.
  • Поиск в памяти: Проходим циклом по Vault.Entries
  • Очистка: Очень важно — после вывода пароля в терминал, затрите переменные в памяти (обнулять слайсы байт).
image

About

TUI Password Manager with Cloud Storage

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors