solana_tools_lite_cli/flows/
verify.rs1use crate::flows::presenter::Presentable;
2use solana_tools_lite::adapters::io_adapter as io;
3use solana_tools_lite::adapters::io_adapter::{read_message, read_pubkey, read_signature};
4use solana_tools_lite::handlers::verify;
5use solana_tools_lite::models::results::VerifyResult;
6use std::path::Path;
7use crate::shell::error::CliError;
8
9pub fn execute(
12 message: Option<&str>,
13 message_file: Option<&str>,
14 signature: Option<&str>,
15 signature_file: Option<&str>,
16 pubkey: Option<&str>,
17 pubkey_file: Option<&str>,
18 output: Option<&str>,
19 force: bool,
20 json: bool,
21) -> Result<(), CliError> {
22 let msg = read_message(message, message_file)?;
24 let sig = read_signature(signature, signature_file)?;
25 let pk = read_pubkey(pubkey, pubkey_file)?;
26
27 let result = verify::handle(&msg, &sig, &pk)?;
28
29 let saved_path = io::save_pretty_json(&result, output, force, "verification.json")?;
31
32 print_result(&result, json, saved_path.as_deref())?;
34
35 Ok(())
36}
37
38fn print_result(
39 result: &VerifyResult,
40 json: bool,
41 saved_path: Option<&Path>,
42) -> Result<(), CliError> {
43 match saved_path {
44 Some(path) => {
45 eprintln!("[✓] Signature is valid");
46 eprintln!("Saved: {}", path.display());
47 }
48 None => {
49 result.present(json, false, false)?;
51 }
52 }
53 Ok(())
54}