use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::CertProfile;
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
#[non_exhaustive]
pub struct GenerateCsrParams {
pub subject: String,
#[serde(default)]
pub san: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
#[non_exhaustive]
pub struct IssueCertificateParams {
#[serde(default = "end_entity")]
pub profile: CertProfile,
#[serde(default = "ten_years")]
pub validity_days: u32,
#[serde(default)]
pub issuer_cn: Option<String>,
#[serde(default)]
pub path_len: Option<u8>,
}
fn end_entity() -> CertProfile {
CertProfile::EndEntity
}
fn ten_years() -> u32 {
3650
}
impl Default for IssueCertificateParams {
fn default() -> Self {
Self {
profile: end_entity(),
validity_days: ten_years(),
issuer_cn: None,
path_len: None,
}
}
}