~cyborg/crypt

A ridiculously simple password manager for the command line.
implement half-working delete & edit functions
add more details around the encryption used
update dependencies and clean up code

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~cyborg/crypt
read/write
git@git.sr.ht:~cyborg/crypt

You can also use your local clone with git send-email.

#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

#Contributing

(Back to top)

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

#TODO:

  • [x] Create an account in memory (as a struct)
  • [x] Allow random password generation
  • [x] Allow random passphrase generation
  • [x] Create an empty database or file, if not created yet
  • [x] Save new accounts to database or file
  • [x] Pretty-print all saved accounts
  • [ ] Allow editing of a saved account
  • [ ] Allow deletion of a saved account
  • [ ] Allow purging the database
  • [x] Allow user encryption of database or file
  • [x] 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