crypt 0.1.3

A secure and convenient password vault for the command-line.
crypt-0.1.3 is not a library.
Visit the last successful build: crypt-0.1.0

Crypt: A Password Manager

A simple command-line password manager, written in Rust + SQLite. This tool allows you to manage accounts and generate random passwords containing ASCII letters, numbers, and punctuation or XKCD-like passphrases.

Data is encrypted prior to being saved within the SQLite database using the fernet crate. Encryption and decryption require the use of a randomly-generated key saved as vault.key but the key-file is saved in plaintext, which means that an attacker that can access the key-file can also decrypt the database. Further development may allow password-protection of the key-file; please open an issue or pull request if you want this feature!


NOTE: This crate is not ready for use in production yet. There are many items still left to implement prior to a production-ready release - see the TODO section for more details.


Table of Contents

Installation

(Back to top)

To install the package from Crates.io, run the following command:

cargo install crypt

Visit the Crypt page for more information.

Usage

(Back to top)

All arguments can be passed to the app with the following template:

crypt ARGUMENT [VALUES]

Arguments

Summary

Examples

crypt help

Contributing

(Back to top)

Any and all contributions are welcome. Feel free to fork the project, add features, and submit a pull request.

TODO:

  • Create an account in memory (as a struct)
  • Allow random password generation
  • Allow random passphrase generation
  • Create an empty database or file, if not created yet
  • Save new accounts to database or file
  • Pretty-print all saved accounts
  • Allow editing of a saved account
  • Allow deletion of a saved account
  • Allow purging the database
  • Allow user encryption of database or file
  • Allow user-created keys to automatically encrypt/decrypt the database or file
  • Require password to encrypt/decrypt/hash/salt/etc. the key file.
  • Create test suite
  • Publish to crates.io when the package is in a minimally-usable state
  • Restructure and format code according to best practices (dead code, unused imports, etc.)

Development

Setup

git clone https://github.com/christian-cleberg/crypt
cd crypt

Local Testing

If you've made changes to the code and would like to test them, use the following commands.

cargo build --release
./target/release/crypt --help

Building & Publishing

If you are ready to push your changes to crates.io, use the commands below. For beginners, note that you cannot publish changes to a crate you don't own (i.e. you must be added as a contributor on crates.io).

cargo build --release
cargo login [API_TOKEN]
cargo publish --dry-run
cargo publish