use malwaredb_server::{
crypto::{EncryptionOption, FileEncryption},
State,
};
use std::process::ExitCode;
use anyhow::Result;
use clap::Parser;
#[derive(Clone, Debug, Parser, Eq, PartialEq)]
pub struct Create {
#[arg(long = "type")]
key_type: EncryptionOption,
}
impl Create {
pub async fn execute(&self, state: State) -> Result<ExitCode> {
let key = FileEncryption::from(self.key_type);
let id = state.db_type.add_file_encryption_key(&key).await?;
println!("Added {} key {id}", self.key_type);
println!("Please restart Malware DB for the key to be used for subsequent submissions.");
Ok(ExitCode::SUCCESS)
}
}
#[derive(Clone, Debug, Parser, Eq, PartialEq)]
pub struct List {}
impl List {
pub async fn execute(&self, state: State) -> Result<ExitCode> {
let keys = state.db_type.get_encryption_key_names_ids().await?;
for (key_id, key_algo) in keys {
println!("{key_id}: {key_algo}");
}
Ok(ExitCode::SUCCESS)
}
}