RekeyState

Struct RekeyState 

Source
pub struct RekeyState { /* private fields */ }
Available on crate feature crypto only.
Expand description

Tracks the current key epoch and when rekeying is needed.

Implementations§

Source§

impl RekeyState

Source

pub fn new() -> Self

Create a new rekey state starting at epoch 0.

Source

pub fn epoch(&self) -> u32

Get the current epoch.

Source

pub fn send_count(&self) -> u64

Get the send counter for the current epoch.

Source

pub fn recv_count(&self) -> u64

Get the receive counter for the current epoch.

Source

pub fn increment_send(&mut self) -> Result<u64, CryptoError>

Increment the send counter.

Returns the counter value to use for this message.

§Errors

Returns CounterExhaustion if the counter has reached the hard limit.

Source

pub fn record_recv(&mut self, counter: u64)

Record a received message counter.

Note: Actual replay detection is handled by the replay window.

Source

pub fn should_rekey(&self) -> bool

Check if we should initiate a rekey (soft limit reached).

Source

pub fn keys_expired(&self) -> bool

Check if the current keys are expired (hard limit reached).

Source

pub fn can_rekey(&self) -> bool

Check if we can perform another rekey (epoch limit).

Source

pub fn advance_epoch(&mut self) -> Result<(), CryptoError>

Advance to the next epoch.

Resets counters and updates epoch start time.

§Errors

Returns EpochExhaustion if the epoch counter has reached the limit.

Trait Implementations§

Source§

impl Debug for RekeyState

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RekeyState

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V