From 5b21ae1c4a4891cccc033623d8a100a9bb17672b Mon Sep 17 00:00:00 2001 From: parazyd Date: Wed, 19 Jul 2023 17:32:23 +0200 Subject: [PATCH] darkirc: Implement --gen-secret --- bin/darkirc/darkirc_config.toml | 2 ++ bin/darkirc/src/main.rs | 7 +++++++ bin/darkirc/src/settings.rs | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/bin/darkirc/darkirc_config.toml b/bin/darkirc/darkirc_config.toml index 769e802ed..c6f6cbeca 100644 --- a/bin/darkirc/darkirc_config.toml +++ b/bin/darkirc/darkirc_config.toml @@ -45,6 +45,8 @@ transport_mixing = false ## ==================== ## ## You can create a shared secret with `darkirc --gen-secret`. +## Never share this secret over unencrypted channels or with someone +## who you do not want to be able to read all the channel messages. ## Use it like this example: #[channel."#foo"] #secret = "7CkVuFgwTUpJn5Sv67Q3fyEDpa28yrSeL5Hg2GqQ4jfM" diff --git a/bin/darkirc/src/main.rs b/bin/darkirc/src/main.rs index 9c5057063..63d0d4fe0 100644 --- a/bin/darkirc/src/main.rs +++ b/bin/darkirc/src/main.rs @@ -85,6 +85,13 @@ async fn realmain(settings: Args, executor: Arc>) -> Result<( return Ok(()) } + if settings.gen_secret { + let secret_key = crypto_box::SecretKey::generate(&mut OsRng); + let encoded = bs58::encode(secret_key.to_bytes()); + println!("{}", encoded.into_string()); + return Ok(()) + } + //////////////////// // Initialize the base structures //////////////////// diff --git a/bin/darkirc/src/settings.rs b/bin/darkirc/src/settings.rs index 369b4fa39..ca4d0428d 100644 --- a/bin/darkirc/src/settings.rs +++ b/bin/darkirc/src/settings.rs @@ -71,6 +71,10 @@ pub struct Args { #[structopt(long)] pub gen_keypair: bool, + /// Generate a new NaCl secret for an encrypted channel and exit + #[structopt(long)] + pub gen_secret: bool, + /// Path to save keypair in #[structopt(short)] pub output: Option,