Browse Source

bin/ircd: recover public key from private key

Dastan-glitch 3 years ago
parent
commit
f975326386
2 changed files with 16 additions and 0 deletions
  1. 12 0
      bin/ircd/src/main.rs
  2. 4 0
      bin/ircd/src/settings.rs

+ 12 - 0
bin/ircd/src/main.rs

@@ -138,6 +138,18 @@ async fn realmain(settings: Args, executor: Arc<smol::Executor<'_>>) -> Result<(
         return Ok(())
     }
 
+    if settings.secret.is_some() {
+        let secret = settings.secret.clone().unwrap();
+        let bytes: [u8; 32] = bs58::decode(secret).into_vec()?.try_into().unwrap();
+        let secret = crypto_box::SecretKey::from(bytes);
+        let pubkey = secret.public_key();
+        let pub_encoded = bs58::encode(pubkey.as_bytes()).into_string();
+
+        println!("pubkey recoverd: {}", pub_encoded);
+
+        return Ok(())
+    }
+
     //
     // P2p setup
     //

+ 4 - 0
bin/ircd/src/settings.rs

@@ -86,6 +86,10 @@ pub struct Args {
     #[structopt(long)]
     pub gen_keypair: bool,
 
+    /// Recover public key from secret key
+    #[structopt(long = "recover_pubkey")]
+    pub secret: Option<String>,
+
     /// Path to save keypair in
     #[structopt(short)]
     pub output: Option<String>,