You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
1.7 KiB

//! Parsed config
use super::*;
pub mod op {
/// The crypt mode
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
pub enum Mode {
Encrypt,
Decrypt,
}
#[derive(Debug, Clone,PartialEq, Eq, Default)]
pub struct Normal {
pub rsa: Vec<(String, Password)>,
pub sign: Vec<(String, Password)>,
pub aes: Vec<(String, Password)>,
pub in_place: bool,
pub mode: Option<Mode>,// `None` is autodetect mode per file
pub files: Vec<(String, Option<String>, Option<Mode> /* `None` is use global*/)>,
}
#[derive(Debug, Clone,PartialEq, Eq)]
pub enum GenerateKey {
Rsa(Rsa),
Aes(Aes),
}
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
pub enum Password
{
No,
Yes,
Specific(String),
}
impl Default for Password
{
#[inline]
fn default() -> Self
{
Self::No
}
}
#[derive(Debug ,PartialEq, Eq, Clone, Hash, Default)]
pub struct KeyDescription
{
pub name: String,
pub email: String,
pub description: String,
pub other: String,
}
#[derive(Debug, Clone,PartialEq, Eq)]
pub struct Rsa
{
pub input: Option<(String, Password)>,
pub output_priv: String,
pub output_pub: Option<String>,
pub password: Password,
pub description: KeyDescription,
}
#[derive(Debug,Clone, PartialEq, Eq)]
pub struct Aes
{
pub input: Option<(String, Password)>,
pub output: String,
pub password: Password,
pub description: KeyDescription,
}
}
#[derive(Debug, Clone,PartialEq, Eq)]
pub enum Operation
{
Normal(op::Normal),
GenerateKey(op::GenerateKey),
KeyInfo(Vec<(String, op::Password)>),
Help,
}
#[derive(Debug, Clone,PartialEq, Eq)]
pub enum KeyKind
{
RsaPublic,
RsaPrivate,
Aes,
}