coil-tls 0.1.1

TLS management primitives for the Coil framework.
Documentation
use std::fmt;

use super::planning::TlsRuntime;
use super::planning::{ChallengeTicket, HotReloadEvent, RenewalPlan};
use super::state::TlsControlPlaneState;
use crate::{CertificateId, CertificateRecord, TlsInstant, TlsModelError};

mod memory;
mod shared;
#[cfg(test)]
mod testing;

pub(super) use memory::MemoryTlsControlPlaneStore;
pub use shared::PostgresTlsControlPlaneStore;
#[cfg(test)]
pub(crate) use testing::TestPersistenceTlsControlPlaneStore;
#[cfg(test)]
pub(crate) use testing::test_persistence_state_path;

pub trait TlsControlPlaneStore: fmt::Debug + Send + Sync {
    fn snapshot(&self) -> TlsControlPlaneState;
    fn import_certificate(&self, record: CertificateRecord) -> Result<(), TlsModelError>;
    fn queue_renewal(
        &self,
        runtime: &TlsRuntime,
        certificate_id: &CertificateId,
        now: TlsInstant,
    ) -> Result<RenewalPlan, TlsModelError>;
    fn begin_renewal(
        &self,
        runtime: &TlsRuntime,
        certificate_id: &CertificateId,
        replacement_certificate_id: CertificateId,
    ) -> Result<ChallengeTicket, TlsModelError>;
    fn fail_renewal(
        &self,
        certificate_id: &CertificateId,
    ) -> Result<CertificateRecord, TlsModelError>;
    fn activate_replacement(
        &self,
        runtime: &TlsRuntime,
        certificate_id: &CertificateId,
        replacement: CertificateRecord,
    ) -> Result<HotReloadEvent, TlsModelError>;
}