use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum Operation {
SignCert(SignCertSpec),
SignDocument(SignDocSpec),
ThresholdSign(ThresholdSignSpec),
Encrypt(EncryptSpec),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SignCertSpec {
pub permitted_cert_types: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SignDocSpec {
pub permitted_mime_types: Vec<String>,
pub permitted_formats: Vec<SignatureFormat>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum SignatureFormat {
Raw,
Cms,
Xmldsig,
Jws,
Cose,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ThresholdSignSpec {
pub permitted_schemes: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EncryptSpec {
pub permitted_recipients: Vec<String>,
}