#secret #encryption #cryptography #command-line-tool

bin+lib etoml

用于在加密 TOML 文件中管理秘密的命令行工具

3 个不稳定版本

0.2.1 2023 年 9 月 8 日
0.2.0 2023 年 9 月 8 日
0.1.0 2023 年 9 月 8 日

#10#secrets

每月 22 次下载

MIT 许可证

2MB
506

CI badge Latest version Docs

etoml

一个创建和管理应用秘密的工具,这些秘密在加密的 (使用 ChaCha) toml 文件中受到保护。

基本上是 Rust/Toml 的 ejson 端口。

  • 它为您生成一对公钥和私钥
  • 公钥与您的秘密一起存储在您的存储库中的 secrets.etoml
  • 私钥存储在 /opt/etoml/keys (您的服务器上)
  • secrets.etoml 中的值通过 CLI 工具加密

与 ejson 的主要区别在于它提供了一个直接将您的秘密解密到应用程序中的 struct 的函数。

Demonstration

安装

cargo安装 etoml

用法

要创建/管理秘密文件,您使用命令行界面

Usage: etoml-write <COMMAND>

Commands:
  init     Create a new encrypted TOML file
  encrypt  (Re-)encrypt unencrypted values in an existinf etoml file
  decrypt  decrypt unencrypted values in an existinf etoml file
  help     Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help

在您的应用程序中,您可以定义一个具有匹配字段的 struct,以将您的秘密解码到其中

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
struct AppSecrets {
    github: String
}

fn main() -> Result<(), etoml::EtomlError>  {
    let secrets = etoml::decrypt_default::<AppSecrets>()?;
    println!("Github key: {}", secrets.github);
    Ok(())
}

依赖项

~3.5–5MB
~99K SLoC