From a4334bb53f9c491e96db7165e382d4583cc78936 Mon Sep 17 00:00:00 2001 From: dasman Date: Tue, 11 Feb 2025 16:38:48 +0300 Subject: [PATCH] tau: remove ring crate and use darkfi-sdk --- Cargo.lock | 2 +- bin/tau/taud/Cargo.toml | 2 +- bin/tau/taud/src/main.rs | 63 +++++++++---------- contrib/localnet/taud-four-nodes/seed.toml | 6 +- .../taud-four-nodes/taud_full_node1.toml | 8 +-- .../taud-four-nodes/taud_full_node2.toml | 6 +- .../taud-four-nodes/taud_full_node3.toml | 6 +- .../taud-four-nodes/taud_full_node4.toml | 6 +- 8 files changed, 49 insertions(+), 50 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f13fc923..552ea36f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7490,13 +7490,13 @@ dependencies = [ "chrono", "crypto_box", "darkfi", + "darkfi-sdk", "darkfi-serial", "easy-parallel", "futures", "libc", "log", "rand 0.8.5", - "ring 0.17.8", "serde", "signal-hook", "signal-hook-async-std", diff --git a/bin/tau/taud/Cargo.toml b/bin/tau/taud/Cargo.toml index bf4e90e93..ada5dac51 100644 --- a/bin/tau/taud/Cargo.toml +++ b/bin/tau/taud/Cargo.toml @@ -24,6 +24,7 @@ darkfi = { path = "../../../", features = [ "rpc", ] } +darkfi-sdk = {path = "../../../src/sdk", features = ["async"]} darkfi-serial = "0.4.2" # Event Graph DB @@ -33,7 +34,6 @@ sled-overlay = "0.1.6" blake3 = "1.5.5" crypto_box = { version = "0.9.1", features = ["std", "chacha20"] } rand = "0.8.5" -ring = "0.17.8" # Encoding and parsing bs58 = "0.5.1" diff --git a/bin/tau/taud/src/main.rs b/bin/tau/taud/src/main.rs index 582c54316..978150025 100644 --- a/bin/tau/taud/src/main.rs +++ b/bin/tau/taud/src/main.rs @@ -22,6 +22,7 @@ use std::{ ffi::CString, fs::{create_dir_all, remove_dir_all}, io::{stdin, Write}, + str::FromStr, sync::{Arc, OnceLock}, }; @@ -37,10 +38,6 @@ use futures::{select, FutureExt}; use libc::mkfifo; use log::{debug, error, info}; use rand::rngs::OsRng; -use ring::{ - rand::SystemRandom, - signature::{Ed25519KeyPair, KeyPair, Signature, UnparsedPublicKey, ED25519}, -}; use sled_overlay::sled; use smol::{fs, stream::StreamExt}; use structopt_toml::StructOptToml; @@ -62,6 +59,11 @@ use darkfi::{ Error, Result, }; +use darkfi_sdk::crypto::{ + schnorr::{SchnorrPublic, SchnorrSecret, Signature}, + Keypair, PublicKey, +}; + mod jsonrpc; mod settings; @@ -78,17 +80,18 @@ use crate::{ struct Workspace { read_key: ChaChaBox, - write_key: Option, - write_pubkey: UnparsedPublicKey>, + write_key: Option, + write_pubkey: PublicKey, } impl Workspace { fn new() -> Self { let secret_key = SecretKey::generate(&mut OsRng); + let keypair = Keypair::default(); Self { read_key: ChaChaBox::new(&secret_key.public_key(), &secret_key), write_key: None, - write_pubkey: UnparsedPublicKey::new(&ED25519, vec![0]), + write_pubkey: keypair.public, } } } @@ -101,12 +104,12 @@ pub struct EncryptedTask { #[derive(SerialEncodable, SerialDecodable)] struct SignedTask { task: Vec, - signature: Vec, + signature: Signature, } impl SignedTask { fn new(task: &TaskInfo, signature: Signature) -> Self { - Self { task: serialize(task), signature: signature.as_ref().to_vec() } + Self { task: serialize(task), signature } } } @@ -198,9 +201,10 @@ fn parse_configured_workspaces(data: &toml::Value) -> Result Result key, Err(e) => { error!(target: "taud", "Failed parsing write_key: {}", e); return Err(Error::ParseFailed("Failed parsing write_key")) } }; - ws.write_key = Some(ed25519); + ws.write_key = Some(secret); } } else { return Err(Error::ParseFailed("Workspace write_key not a string")) @@ -230,7 +236,8 @@ fn parse_configured_workspaces(data: &toml::Value) -> Result>) -> Res continue } + // Encryption // Chachabox secret key (read_key) used for encrypting tasks. let secret_key = SecretKey::generate(&mut OsRng); let encoded = bs58::encode(secret_key.to_bytes()); - // Ed25519 secret key (write_key) used for signing tasks. - let rng = SystemRandom::new(); - let pkcs8_bytes = Ed25519KeyPair::generate_pkcs8(&rng).unwrap(); - // openssl genpkey -algorithm ED25519 - let kp = Ed25519KeyPair::from_pkcs8(pkcs8_bytes.as_ref()).unwrap(); - let sk = bs58::encode(pkcs8_bytes).into_string(); - - // Ed25519 public key (write_public_key) used for verifying tasks. - let peer_public_key_bytes = kp.public_key().as_ref(); - let pk = bs58::encode(peer_public_key_bytes).into_string(); + // Signature + // Secret key (write_key) used for signing tasks. + let keypair = Keypair::random(&mut OsRng); + let sk = format!("{}", keypair.secret); + // Public key (write_public_key) used for verifying tasks. + let pk = format!("{}", keypair.public); println!("Please add the following to the config file:"); println!("[workspace.\"{}\"]", workspace); diff --git a/contrib/localnet/taud-four-nodes/seed.toml b/contrib/localnet/taud-four-nodes/seed.toml index 1131614ba..5b4e20d13 100644 --- a/contrib/localnet/taud-four-nodes/seed.toml +++ b/contrib/localnet/taud-four-nodes/seed.toml @@ -42,9 +42,9 @@ nickname = "seed" #write_key = "" [workspace."test"] -read_key = "DDEza5ifrphkKTvMSP1c8dR5RyUgn1WQHBvnAJKNzDRK" -write_public_key = "CAX5qCXCTGwqT27ixzdgm4H54kbh2HtrXbzj9odAyjxh" -# write_key = "nGpVmGTNjfvJ9ojqijQwUMsbjrzaqHK5RniGAx9LTJfm49QcGY48RCaJ6riePvtr7xwUCyfvrwjxS8oqnDgpiZhS8KCQrykRYAwuFoHb41PSEMALu" +read_key = "AXApLyi8id3T1MwKkrgdYZtkpUag5qMmambDHGkdFiY2" +# write_key = "7jvrj4Rxnm1UcAjz5Y1CNFEfZiGMg9F1ekfbbEakkicA" +write_public_key = "2LW4qXxR5QSybtMeRtX69GdqNWxgAbDVyMT6aWe37MT7" # P2P network settings [net] diff --git a/contrib/localnet/taud-four-nodes/taud_full_node1.toml b/contrib/localnet/taud-four-nodes/taud_full_node1.toml index 4361eb436..4d4f55dc9 100644 --- a/contrib/localnet/taud-four-nodes/taud_full_node1.toml +++ b/contrib/localnet/taud-four-nodes/taud_full_node1.toml @@ -41,10 +41,10 @@ nickname = "node1" #write_public_key = "Fgsc8tep4KX3Rb2drq8RxMyrHFWQ7wZaZPpF9F3GQYFG" #write_key = "" -[workspace."test"] -read_key = "DDEza5ifrphkKTvMSP1c8dR5RyUgn1WQHBvnAJKNzDRK" -write_public_key = "CAX5qCXCTGwqT27ixzdgm4H54kbh2HtrXbzj9odAyjxh" -write_key = "nGpVmGTNjfvJ9ojqijQwUMsbjrzaqHK5RniGAx9LTJfm49QcGY48RCaJ6riePvtr7xwUCyfvrwjxS8oqnDgpiZhS8KCQrykRYAwuFoHb41PSEMALu" +[workspace."darkfi-dev"] +read_key = "AXApLyi8id3T1MwKkrgdYZtkpUag5qMmambDHGkdFiY2" +write_key = "7jvrj4Rxnm1UcAjz5Y1CNFEfZiGMg9F1ekfbbEakkicA" +write_public_key = "2LW4qXxR5QSybtMeRtX69GdqNWxgAbDVyMT6aWe37MT7" # P2P network settings [net] diff --git a/contrib/localnet/taud-four-nodes/taud_full_node2.toml b/contrib/localnet/taud-four-nodes/taud_full_node2.toml index eb51190be..ab43c2298 100644 --- a/contrib/localnet/taud-four-nodes/taud_full_node2.toml +++ b/contrib/localnet/taud-four-nodes/taud_full_node2.toml @@ -42,9 +42,9 @@ nickname = "node2" #write_key = "" [workspace."test"] -read_key = "DDEza5ifrphkKTvMSP1c8dR5RyUgn1WQHBvnAJKNzDRK" -write_public_key = "CAX5qCXCTGwqT27ixzdgm4H54kbh2HtrXbzj9odAyjxh" -write_key = "nGpVmGTNjfvJ9ojqijQwUMsbjrzaqHK5RniGAx9LTJfm49QcGY48RCaJ6riePvtr7xwUCyfvrwjxS8oqnDgpiZhS8KCQrykRYAwuFoHb41PSEMALu" +read_key = "AXApLyi8id3T1MwKkrgdYZtkpUag5qMmambDHGkdFiY2" +write_key = "7jvrj4Rxnm1UcAjz5Y1CNFEfZiGMg9F1ekfbbEakkicA" +write_public_key = "2LW4qXxR5QSybtMeRtX69GdqNWxgAbDVyMT6aWe37MT7" # P2P network settings [net] diff --git a/contrib/localnet/taud-four-nodes/taud_full_node3.toml b/contrib/localnet/taud-four-nodes/taud_full_node3.toml index 03cf9d1c7..065e5331f 100644 --- a/contrib/localnet/taud-four-nodes/taud_full_node3.toml +++ b/contrib/localnet/taud-four-nodes/taud_full_node3.toml @@ -42,9 +42,9 @@ nickname = "node3" #write_key = "" [workspace."test"] -read_key = "DDEza5ifrphkKTvMSP1c8dR5RyUgn1WQHBvnAJKNzDRK" -write_public_key = "CAX5qCXCTGwqT27ixzdgm4H54kbh2HtrXbzj9odAyjxh" -write_key = "nGpVmGTNjfvJ9ojqijQwUMsbjrzaqHK5RniGAx9LTJfm49QcGY48RCaJ6riePvtr7xwUCyfvrwjxS8oqnDgpiZhS8KCQrykRYAwuFoHb41PSEMALu" +read_key = "AXApLyi8id3T1MwKkrgdYZtkpUag5qMmambDHGkdFiY2" +write_key = "7jvrj4Rxnm1UcAjz5Y1CNFEfZiGMg9F1ekfbbEakkicA" +write_public_key = "2LW4qXxR5QSybtMeRtX69GdqNWxgAbDVyMT6aWe37MT7" # P2P network settings [net] diff --git a/contrib/localnet/taud-four-nodes/taud_full_node4.toml b/contrib/localnet/taud-four-nodes/taud_full_node4.toml index 856e76a52..2a6985e23 100644 --- a/contrib/localnet/taud-four-nodes/taud_full_node4.toml +++ b/contrib/localnet/taud-four-nodes/taud_full_node4.toml @@ -42,9 +42,9 @@ nickname = "node4" #write_key = "" [workspace."test"] -read_key = "DDEza5ifrphkKTvMSP1c8dR5RyUgn1WQHBvnAJKNzDRK" -write_public_key = "CAX5qCXCTGwqT27ixzdgm4H54kbh2HtrXbzj9odAyjxh" -# write_key = "nGpVmGTNjfvJ9ojqijQwUMsbjrzaqHK5RniGAx9LTJfm49QcGY48RCaJ6riePvtr7xwUCyfvrwjxS8oqnDgpiZhS8KCQrykRYAwuFoHb41PSEMALu" +read_key = "AXApLyi8id3T1MwKkrgdYZtkpUag5qMmambDHGkdFiY2" +# write_key = "7jvrj4Rxnm1UcAjz5Y1CNFEfZiGMg9F1ekfbbEakkicA" +write_public_key = "2LW4qXxR5QSybtMeRtX69GdqNWxgAbDVyMT6aWe37MT7" # P2P network settings [net]