1use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6use crate::CertProfile;
7
8#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
10#[serde(deny_unknown_fields)]
11#[non_exhaustive]
12pub struct GenerateCsrParams {
13 pub subject: String,
15 #[serde(default)]
17 pub san: Option<Vec<String>>,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
22#[serde(deny_unknown_fields)]
23#[non_exhaustive]
24pub struct IssueCertificateParams {
25 #[serde(default = "end_entity")]
30 pub profile: CertProfile,
31 #[serde(default = "ten_years")]
33 pub validity_days: u32,
34 #[serde(default)]
38 pub issuer_cn: Option<String>,
39 #[serde(default)]
41 pub path_len: Option<u8>,
42}
43
44fn end_entity() -> CertProfile {
45 CertProfile::EndEntity
46}
47
48fn ten_years() -> u32 {
49 3650
50}
51
52impl Default for IssueCertificateParams {
53 fn default() -> Self {
54 Self {
55 profile: end_entity(),
56 validity_days: ten_years(),
57 issuer_cn: None,
58 path_len: None,
59 }
60 }
61}