use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Debug, Serialize)]
pub struct GenerateCertificateResponse {
pub ca_chain: Option<Vec<String>>,
pub certificate: String,
pub expiration: Option<u64>,
pub issuing_ca: String,
pub private_key: String,
pub private_key_type: String,
pub serial_number: String,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct GenerateIntermediateResponse {
pub csr: String,
pub private_key: Option<String>,
pub private_key_type: Option<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct CrossSignResponse {
pub csr: String,
pub key_id: Option<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct GenerateRootResponse {
pub certificate: String,
pub issuing_ca: String,
pub serial_number: String,
pub expiration: u64,
pub issuer_id: String,
pub issuer_name: Option<String>,
pub key_id: Option<String>,
pub key_name: Option<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ListCertificatesResponse {
pub keys: Vec<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ListRolesResponse {
pub keys: Vec<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ReadCertificateResponse {
pub certificate: String,
pub revocation_time: i64,
pub ca_chain: Option<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ReadCRLConfigResponse {
pub disable: bool,
pub expiry: String,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct RevokeCertificateResponse {
pub revocation_time: u64,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct RotateCRLsResponse {
pub success: bool,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ReadURLsResponse {
pub issuing_certificates: Vec<String>,
pub crl_distribution_points: Vec<String>,
pub ocsp_servers: Vec<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ReadRoleResponse {
pub allow_any_name: bool,
pub allow_bare_domains: bool,
pub allow_glob_domains: bool,
pub allow_ip_sans: bool,
pub allow_localhost: bool,
pub allow_subdomains: bool,
pub allow_token_displayname: bool,
pub allow_wildcard_certificates: bool,
pub allowed_domains: Vec<String>,
pub allowed_domains_template: bool,
pub allowed_other_sans: Vec<String>,
pub allowed_serial_numbers: Vec<String>,
pub allowed_uri_sans: Vec<String>,
pub allowed_uri_sans_template: bool,
pub allowed_user_ids: Vec<String>,
pub basic_constraints_valid_for_non_ca: bool,
pub client_flag: bool,
pub cn_validations: Vec<String>,
pub code_signing_flag: bool,
pub country: Vec<String>,
pub email_protection_flag: bool,
pub enforce_hostnames: bool,
pub ext_key_usage: Vec<String>,
pub ext_key_usage_oids: Vec<String>,
pub generate_lease: bool,
pub issuer_ref: String,
pub key_bits: u64,
pub key_type: String,
pub key_usage: Vec<String>,
pub locality: Vec<String>,
pub max_ttl: u64,
pub no_store: bool,
pub not_after: String,
pub not_before_duration: u64,
pub organization: Vec<String>,
pub ou: Vec<String>,
pub policy_identifiers: Vec<String>,
pub postal_code: Vec<String>,
pub province: Vec<String>,
pub require_cn: bool,
pub server_flag: bool,
pub signature_bits: u16,
pub street_address: Vec<String>,
pub ttl: u64,
pub use_csr_common_name: bool,
pub use_csr_sans: bool,
pub use_pss: bool,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct SignCertificateResponse {
pub ca_chain: Option<Vec<String>>,
pub certificate: String,
pub issuing_ca: String,
pub serial_number: String,
pub expiration: u64,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct SignIntermediateResponse {
pub ca_chain: Option<Vec<String>>,
pub certificate: String,
pub issuing_ca: String,
pub serial_number: String,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct SignSelfIssuedResponse {
pub certificate: String,
pub issuing_ca: String,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ListIssuersResponse {
pub key_info: HashMap<String, KeyInfo>,
pub keys: Vec<String>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct KeyInfo {
pub is_default: bool,
pub issuer_name: String,
pub key_id: String,
pub serial_number: String,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ReadIssuerCertificateResponse {
pub certificate: String,
pub ca_chain: Vec<String>,
pub issuer_id: String,
pub issuer_name: String,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct SignIntermediateIssuerResponse {
pub certificate: String,
pub ca_chain: Vec<String>,
pub issuing_ca: String,
pub serial_number: String,
pub expiration: u64,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct ImportIssuerResponse {
pub imported_issuers: Option<Vec<String>>,
pub imported_keys: Option<Vec<String>>,
pub existing_issuers: Option<Vec<String>>,
pub existing_keys: Option<Vec<String>>,
pub mapping: Option<HashMap<String, String>>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct SetDefaultIssuerResponse {
pub default: String,
pub default_follows_latest_issuer: bool,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct UpdateIssuerResponse {
pub ca_chain: Option<Vec<String>>,
pub certificate: String,
pub issuer_id: String,
pub issuer_name: String,
pub key_id: Option<String>,
pub leaf_not_after_behavior: Option<String>,
pub manual_chain: Option<Vec<String>>,
pub usage: String,
pub revocation_signature_algorithm: String,
pub issuing_certificates: Vec<String>,
pub crl_distribution_points: Vec<String>,
pub delta_crl_distribution_points: Option<Vec<String>>,
pub ocsp_servers: Vec<String>,
pub enable_aia_url_templating: Option<bool>,
pub disable_critical_extension_checks: Option<bool>,
pub disable_path_length_checks: Option<bool>,
pub disable_name_checks: Option<bool>,
pub disable_name_constraint_checks: Option<bool>,
}
#[derive(Deserialize, Debug, Serialize)]
pub struct GenerateIntermediateCSRResponse {
pub csr: String,
pub key_id: Option<String>,
}