use std::io;
use thiserror::Error;
#[derive(Debug, Error, Clone)]
pub enum KeyToolError {
#[error("Argument error: {0}")]
InvalidArgument(String),
#[error("OpenSSL error: {0}")]
OpenSslError(String),
#[error("IO error: {0}")]
IoError(String),
}
impl From<io::Error> for KeyToolError {
fn from(err: io::Error) -> Self {
KeyToolError::IoError(err.to_string())
}
}
impl KeyToolError {
pub fn new<T: Into<String>>(msg: T) -> Self {
KeyToolError::InvalidArgument(msg.into())
}
}
impl From<openssl::error::ErrorStack> for KeyToolError {
fn from(e: openssl::error::ErrorStack) -> Self {
KeyToolError::OpenSslError(e.to_string())
}
}