use clap::Parser;
use cosmian_kms_client::KmsClient;
use self::{decrypt::DecryptAction, encrypt::EncryptAction, keys::KeysCommands};
use crate::{
actions::kms::rsa::{sign::SignAction, signature_verify::SignatureVerifyAction},
error::result::KmsCliResult,
};
pub mod decrypt;
pub mod encrypt;
pub mod keys;
pub mod sign;
pub mod signature_verify;
#[derive(Parser)]
pub enum RsaCommands {
#[command(subcommand)]
Keys(KeysCommands),
Encrypt(EncryptAction),
Decrypt(DecryptAction),
Sign(SignAction),
SignVerify(SignatureVerifyAction),
}
impl RsaCommands {
pub async fn process(&self, kms_rest_client: KmsClient) -> KmsCliResult<()> {
match self {
Self::Keys(command) => Box::pin(command.process(kms_rest_client)).await?,
Self::Encrypt(action) => action.run(kms_rest_client).await?,
Self::Decrypt(action) => action.run(kms_rest_client).await?,
Self::Sign(action) => action.run(kms_rest_client).await?,
Self::SignVerify(action) => {
action.run(kms_rest_client).await?;
return Ok(());
}
}
Ok(())
}
}