yds12 / guarakapa

Password manager for the terminal.
MIT License
3 stars 1 forks source link
cli command-line cryptography password password-manager rust terminal tui

tests

This is a work in progress. Please do not trust it with your passwords.

A password manager for the Linux (X11) terminal written in Rust.

Install and Run

Install dependencies (openssl, libxcb-shape and libxcb-xfixes). For Ubuntu:

$ apt install libssl-dev libxcb-shape0-dev libxcb-xfixes0-dev

Install using cargo:

$ git clone https://github.com/yds12/guarakapa
$ cd guarakapa
$ cargo install --path .

And run:

$ kapa

Run tests with:

$ cargo test -- --test-threads=1               # all tests
$ cargo test --bins --lib                      # unit tests
$ cargo test --test '*' -- --test-threads=1    # integration tests

For now, we have to avoid running integration tests in parallel because they all manipulate the same data file.

About

This project started with the purpose of learning Rust, how to use its testing tools, and the basics of cryptography.

It is a command line program for Linux that enables you to save your passwords and retrieve them (using a master password) directly via the clipboard.

The core design principles are:

We took some inspiration from rooster.

Features

Commands and Usage

The basic commands are:

$ kapa                   # creates a new data file, or, if it already
                         # exists, displays the help text

$ kapa ls                # lists entry names
$ kapa <entry_name>      # gets entry with specified name
$ kapa add <entry_name>  # adds entry with specified name

Learn more about all the commands and options with:

$ kapa --help

Backups can be done by copying the password file (find it with kapa path). We might implement an export function to export everything unencrypted to a JSON, TOML or YAML file.

Cryptography

We will use AES-256 in CBC mode for encryption. An initialization vector (IV) is randomly generated and stored with each message/entry. For the moment, we have no plans to use MAC or anything for authentication -- i.e. you will not be able to tell if the data has been tampered with.