pub struct RequireValidNonce;Expand description
Rejects a signed Interest if its signature nonce has been seen before from the same signer, and rejects signed Interests with no nonce or an implausibly long one. Unsigned Interests are always accepted, since there’s no signer identity to track replay against.
Nonces are tracked per (signature type, key locator) pair in a
fixed-size ring buffer, so this only catches replay within a recent
window rather than for the lifetime of the app; a longer memory would
mean unbounded growth per signer.
Implementations§
Source§impl RequireValidNonce
impl RequireValidNonce
pub fn new() -> RequireValidNonce
Trait Implementations§
Source§impl Clone for RequireValidNonce
impl Clone for RequireValidNonce
Source§fn clone(&self) -> RequireValidNonce
fn clone(&self) -> RequireValidNonce
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for RequireValidNonce
Source§impl Debug for RequireValidNonce
impl Debug for RequireValidNonce
Source§impl Default for RequireValidNonce
impl Default for RequireValidNonce
Source§fn default() -> RequireValidNonce
fn default() -> RequireValidNonce
Returns the “default value” for a type. Read more
Source§impl Hash for RequireValidNonce
impl Hash for RequireValidNonce
Source§impl InterestVerifier for RequireValidNonce
impl InterestVerifier for RequireValidNonce
fn verify<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
interest: &'life1 Interest<Bytes>,
context: Arc<RwLock<TypeMap>>,
_app_handler: AppHandler,
_signature_verifiers: &'life2 (dyn ToVerifier + Sync),
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§impl VerifierEx for RequireValidNonce
impl VerifierEx for RequireValidNonce
Source§fn or<T: Sized>(self, other: T) -> OrVerifier<Self, T>
fn or<T: Sized>(self, other: T) -> OrVerifier<Self, T>
Accepts a packet if either
self or other accepts it.Source§fn and<T: Sized>(self, other: T) -> AndVerifier<Self, T>
fn and<T: Sized>(self, other: T) -> AndVerifier<Self, T>
Accepts a packet only if both
self and other accept it.Auto Trait Implementations§
impl Freeze for RequireValidNonce
impl RefUnwindSafe for RequireValidNonce
impl Send for RequireValidNonce
impl Sync for RequireValidNonce
impl Unpin for RequireValidNonce
impl UnsafeUnpin for RequireValidNonce
impl UnwindSafe for RequireValidNonce
Blanket Implementations§
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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