Struct KeyRotationManager
pub struct KeyRotationManager {
store: Arc<dyn SecretStore>,
current_version: RwLock<RawRwLock, u64>,
rotation_interval: Duration,
last_rotation: RwLock<RawRwLock, Instant>,
key_prefix: String,
}Expand description
Manages automatic key rotation for encryption keys.
Fields§
§store: Arc<dyn SecretStore>§current_version: RwLock<RawRwLock, u64>§rotation_interval: Duration§last_rotation: RwLock<RawRwLock, Instant>§key_prefix: StringImplementations§
§impl KeyRotationManager
impl KeyRotationManager
pub fn new(
store: Arc<dyn SecretStore>,
key_prefix: impl Into<String>,
) -> KeyRotationManager
pub fn new( store: Arc<dyn SecretStore>, key_prefix: impl Into<String>, ) -> KeyRotationManager
Create a new key rotation manager.
pub fn with_rotation_interval(self, interval: Duration) -> KeyRotationManager
pub fn with_rotation_interval(self, interval: Duration) -> KeyRotationManager
Set the rotation interval.
pub async fn get_current_key(&self) -> Result<SecretValue, SecretError>
pub async fn get_current_key(&self) -> Result<SecretValue, SecretError>
Get the current encryption key.
pub async fn get_key_version(
&self,
version: u64,
) -> Result<SecretValue, SecretError>
pub async fn get_key_version( &self, version: u64, ) -> Result<SecretValue, SecretError>
Get a specific key version.
pub fn needs_rotation(&self) -> bool
pub fn needs_rotation(&self) -> bool
Check if rotation is needed.
pub fn rotate(&self)
pub fn rotate(&self)
Rotate to a new key version.
Note: The actual key must be pre-provisioned in the secret store.
pub fn current_version(&self) -> u64
pub fn current_version(&self) -> u64
Get the current key version number.
Auto Trait Implementations§
impl !Freeze for KeyRotationManager
impl !RefUnwindSafe for KeyRotationManager
impl Send for KeyRotationManager
impl Sync for KeyRotationManager
impl Unpin for KeyRotationManager
impl !UnwindSafe for KeyRotationManager
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.