Skip to main content

NonceStore

Struct NonceStore 

Source
pub struct NonceStore { /* private fields */ }
Expand description

Nonce store for replay protection

Implementations§

Source§

impl NonceStore

Source

pub fn new() -> Self

Create a new nonce store with default settings

Source

pub fn with_config(max_nonces: usize, expiration_secs: u64) -> Self

Create a nonce store with custom settings

Source

pub fn current_timestamp() -> u64

Get the current timestamp in seconds since UNIX epoch

Source

pub fn is_expired(&self, timestamp: u64) -> bool

Check if a timestamp is expired

Source

pub fn check_nonce( &mut self, nonce: u64, timestamp: u64, ) -> Result<(), SecurityError>

Check and record a nonce Returns Ok(()) if the nonce is valid and not seen before Returns Err(ReplayAttack) if the nonce was already used Returns Err(ExpiredTimestamp) if the timestamp is too old

Source

pub fn cleanup_expired(&mut self)

Remove expired nonces from the store

Source

pub fn len(&self) -> usize

Get the number of tracked nonces

Source

pub fn is_empty(&self) -> bool

Check if the store is empty

Source

pub fn clear(&mut self)

Clear all tracked nonces

Trait Implementations§

Source§

impl Default for NonceStore

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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