hyperion-vault-core 0.2.0

Pure-Rust security core for hyperion-vault: envelope encryption, IP allowlist, token auth, rotation policy
Documentation
use std::time::Duration;

#[derive(Debug, Clone, Copy)]
pub struct RotationPolicy {
    pub interval: Duration,
    pub grace: Duration,
}

impl RotationPolicy {
    pub fn new(interval: Duration, grace: Duration) -> Self {
        Self { interval, grace }
    }

    pub fn next_rotation_unix(&self, from_unix: i64) -> i64 {
        from_unix.saturating_add(self.interval.as_secs() as i64)
    }

    pub fn grace_expiry_unix(&self, superseded_at_unix: i64) -> i64 {
        superseded_at_unix.saturating_add(self.grace.as_secs() as i64)
    }
}

pub fn is_due(now_unix: i64, next_rotation_unix: i64) -> bool {
    next_rotation_unix <= now_unix
}

pub fn version_active(now_unix: i64, expires_at_unix: Option<i64>) -> bool {
    match expires_at_unix {
        None => true,
        Some(expiry) => now_unix < expiry,
    }
}