crypt

Crates.iocrypt
lib.rscrypt
version0.1.7
sourcesrc
created_at2014-11-21 10:30:46.82922
updated_at2023-02-19 03:34:28.052584
descriptionA secure and convenient password vault for the command-line.
homepagehttps://github.com/christian-cleberg/crypt
repositoryhttps://github.com/christian-cleberg/crypt
max_upload_size
id283
size256,681
Christian Cleberg (christian-cleberg)

documentation

README

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

Argument (Short) Argument (Long) Explanation
-h --help Print the welcome message
-n --new Create a new account
-l --list List all saved accounts
-e --edit [UUID] [FIELD_NAME] Edit a saved account
-d --delete [UUID] Delete a saved account
-p --purge Purge all accounts and delete the vault

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
Commit count: 0

cargo fmt