street-cred

Crates.iostreet-cred
lib.rsstreet-cred
version0.1.3
sourcesrc
created_at2022-11-13 02:21:50.216031
updated_at2023-11-03 02:13:59.114314
descriptionManage encrypted secrets for your applications.
homepagehttps://github.com/Endoze/street-cred
repositoryhttps://github.com/Endoze/street-cred
max_upload_size
id713928
size76,442
Endoze (endoze)

documentation

https://docs.rs/street-cred

README

Street Cred

Build Status Coverage Status Crate Docs

Manage encrypted secrets for your applications.

Installation

As a command line tool:

cargo install street-cred

As a dependency of a Rust project:

cargo add street-cred

CLI Usage

Street Cred expects your encryption key to be in an environment variable named MASTER_KEY or in a file in the current directory named master.key.

# Initialize a new project with an encrypted secrets file and encryption key
street-cred init

# Edit existing file
street-cred edit secrets.txt.enc

Library Usage

You can also use Street Cred as a library for simple encryption/decryption in your own code.

use street_cred::FileEncryption;

let file_path = String::from("secrets.txt.enc");
let encryption_key = String::from("425D76994EE6101105DDDA2EE2604AA0");
let file_encryption = FileEncryption::new(file_path, encryption_key);

if let Some(decrypted_contents) = file_encryption.decrypt() {
  // do something with decrypted_contents
};

Inpsiration

Seeing how Ruby on Rails allowed storing encrypted secrets along side existing application code, I wanted this same capability without the Ruby/Rails requirement. This cli app and library allow developers to use the same pattern of storing encrypted secrets in repositories.

Security Notes

You should ensure that you never commit or track your encryption key in your repository if you choose to use this code to store encrypted secrets in a code repository. You can set up git to ignore both the encryption key and unencrypted file to ensure they are never committed.

Here's a sample gitignore setup that assumes a key stored in master.key and encrypted secrets in secrets.txt.enc:

# .gitignore
master.key
secrets.txt
Commit count: 42

cargo fmt