mostro_client/cli/
conversation_key.rs1use crate::parser::common::{
2 print_info_line, print_key_value, print_section_header, print_success_message,
3};
4use anyhow::Result;
5use nip44::v2::ConversationKey;
6use nostr_sdk::prelude::*;
7
8pub async fn execute_conversation_key(trade_keys: &Keys, receiver: PublicKey) -> Result<()> {
9 print_section_header("🔐 Conversation Key Generator");
10 print_key_value("🔑", "Trade Keys", &trade_keys.public_key().to_hex());
11 print_key_value("🎯", "Receiver", &receiver.to_string());
12 print_info_line("💡", "Deriving conversation key...");
13 println!();
14
15 let ck = ConversationKey::derive(trade_keys.secret_key(), &receiver)?;
17 let key = ck.as_bytes();
18 let mut ck_hex = vec![];
19 for i in key {
20 ck_hex.push(format!("{:02x}", i));
21 }
22 let ck_hex = ck_hex.join("");
23
24 println!("🔐 Conversation Key:");
25 println!("─────────────────────────────────────");
26 println!("{}", ck_hex);
27 println!("─────────────────────────────────────");
28 print_success_message("Conversation key generated successfully!");
29
30 Ok(())
31}