Crates.io | helvetia |
lib.rs | helvetia |
version | 0.2.0 |
source | src |
created_at | 2020-06-21 14:15:32.482916 |
updated_at | 2021-04-15 10:11:00.093501 |
description | A library and API server that allows anonymous storage of secrets, with a simple rule; any user can create a secret using a token, and they can only access it using the same token. |
homepage | https://github.com/apyrgio/helvetia |
repository | https://github.com/apyrgio/helvetia |
max_upload_size | |
id | 256323 |
size | 206,686 |
A library and API server that allows for anonymous storage of secrets, with a simple rule; any user can create a secret using a token, and they can only access it using the same token. Helvetia will then go to great lengths to ensure that the secret remains safe, even from itself.
Helvetia can be used either as a standalone API server or as a library. In the
first case, you can interact with it using its REST API, while in the second
case you can interact with it through its vault
module.
The way Helvetia works is pretty simple. Users first need to create a secret, which consists of the following parts:
Helvetia will then do the following to ensure that the secret is stored securely:
Helvetia has not undergone a security audit and is not ready for use in production. Prefer using other services such as Hashicorp's Vault, if you have a use-case that requires such guarantees. If you're feeling adventurous though and like some of the following features, you are more than welcome to try Helvetia out:
In order to run the Helvetia API server, you need to create an encryption key and provide a directory to store the encrypted secrets. For instance, you can do:
$ mkdir ~/.helvetia
$ cd ~/.helvetia
$ head -c 32 /dev/urandom > key
$ helvetia -k key --store-dir data
By default, Helvetia will store the secrets in a RocksDB database, and encrypt
them using AES-256-GCM. To see the rest of the available options, you can do
helvetia --help
.
You can read the latest docs in https://docs.rs/helvetia. The following sections may be of interest:
When adding this crate to your Cargo.toml
, add it with default-features = false
, to ensure that CLI specific dependencies are not added to your
dependency tree:
helvetia = { version = "x.y.z", default-features = false }
If you want RocksDB support, you can enable it with:
helvetia = { version = "x.y.z", default-features = false, features = ["with-rocksdb"] }
You can run Helvetia using one of the binaries of the stable releases, or the nightly builds. Alternatively, you can install it with one of the following methods:
From cargo:
$ cargo install helvetia
From source:
$ git clone https://github.com/apyrgio/helvetia
$ cd helvetia
$ cargo build --release
$ ./target/release/helvetia --help
Helvetia: Anonymous and secure storage of secrets...
If you want to enable RocksDB support, you can add the --features with-rocksdb
flag in the above commands.
You can read the CONTRIBUTING.md
guide for more info on how to contribute to
this project.
Licensed under MPL-2.0. Please read the NOTICE.md
and LICENSE
files for
the full copyright and license information.