#[non_exhaustive]pub struct VerifyPolicy {
pub max_age: Option<Duration>,
pub max_clock_skew_future: Option<Duration>,
pub require_timestamp: bool,
}Expand description
Tunables governing which signed timestamps are accepted at verification time.
A max_age of None disables the past-side check and a
max_clock_skew_future of None disables the future-side check;
both default to Some(...) in the presets.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.max_age: Option<Duration>Maximum permissible age of a signature. A created (or Date)
timestamp older than now - max_age is rejected. None
disables the past-side check.
max_clock_skew_future: Option<Duration>Maximum permissible future skew. A timestamp claimed to be more
than max_clock_skew_future ahead of the verifier’s clock is
rejected, to catch badly-set signer clocks and straight-out
forgeries. None disables the future-side check.
require_timestamp: boolIf true, a request carrying neither a created parameter nor
a Date header is rejected. Defaults to false to stay
compatible with servers that only emit one of the two.
Implementations§
Source§impl VerifyPolicy
impl VerifyPolicy
Sourcepub const fn mastodon() -> Self
pub const fn mastodon() -> Self
Returns the policy Mastodon applies to inbound federated requests: 12 hours past, 5 minutes future, timestamps optional.
Sourcepub const fn strict() -> Self
pub const fn strict() -> Self
Returns a tight policy appropriate for internal services where every hop has NTP-synchronised clocks: 5 minutes past, 1 minute future, and timestamps are mandatory.
Sourcepub const fn no_freshness_check() -> Self
pub const fn no_freshness_check() -> Self
Returns a policy that disables freshness checking entirely.
Only intended for byte-level conformance tests against static RFC 9421 / Cavage fixtures that bake fixed timestamps into their inputs. Do not use in production.
Sourcepub fn check(
&self,
created_unix: Option<i64>,
expires_unix: Option<i64>,
date_header: Option<&str>,
now: DateTime<Utc>,
) -> Result<(), Error>
pub fn check( &self, created_unix: Option<i64>, expires_unix: Option<i64>, date_header: Option<&str>, now: DateTime<Utc>, ) -> Result<(), Error>
Evaluates the policy against a signature whose created
parameter is created_unix (seconds since epoch), expires
parameter is expires_unix, and whose companion Date header
(if any) contained date_header. Returns Ok when the
signature is fresh, or a specific error otherwise.
§Errors
Returns Error::TimestampMissing when require_timestamp
is on and no source is available, Error::TimestampTooOld
when now - source > max_age, Error::TimestampInFuture
when the source is too far ahead of now, and
Error::TimestampExpired when expires is already in the
past.
Trait Implementations§
Source§impl Clone for VerifyPolicy
impl Clone for VerifyPolicy
Source§fn clone(&self) -> VerifyPolicy
fn clone(&self) -> VerifyPolicy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VerifyPolicy
impl Debug for VerifyPolicy
Source§impl Default for VerifyPolicy
impl Default for VerifyPolicy
Source§fn default() -> Self
fn default() -> Self
Returns Self::mastodon — the Fediverse-compatible default.
Source§impl PartialEq for VerifyPolicy
impl PartialEq for VerifyPolicy
impl Copy for VerifyPolicy
impl Eq for VerifyPolicy
impl StructuralPartialEq for VerifyPolicy
Auto Trait Implementations§
impl Freeze for VerifyPolicy
impl RefUnwindSafe for VerifyPolicy
impl Send for VerifyPolicy
impl Sync for VerifyPolicy
impl Unpin for VerifyPolicy
impl UnsafeUnpin for VerifyPolicy
impl UnwindSafe for VerifyPolicy
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.