Skip to main content

FingerprintKey

Struct FingerprintKey 

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

The process-local secret that keys HeaderFingerprints, with the public epoch that names it.

The key is random, lives in memory only and is zeroed on drop. There is no Clone, no serde and Debug prints the epoch only. The epoch is not a proof of anything: two keys may share one, and a fingerprint only verifies when the key itself reproduces its tag.

Implementations§

Source§

impl FingerprintKey

Source

pub fn generate() -> Result<Self, Error>

A fresh key and an independently drawn epoch from the OS generator.

Source

pub fn from_parts(key: Zeroizing<[u8; 32]>, epoch: [u8; 16]) -> Self

Rebuild a key that has to survive a hot upgrade, or a known test key.

Source

pub fn fingerprint(&self, name: &str, value: &SecretValue) -> HeaderFingerprint

The fingerprint of value as the header name (case-insensitive).

Source

pub fn verify( &self, name: &str, value: &SecretValue, fingerprint: &HeaderFingerprint, ) -> bool

Whether fingerprint was issued by this very key for this header and value. A matching epoch is necessary, never sufficient: the full tag is checked in constant time.

Trait Implementations§

Source§

impl Debug for FingerprintKey

Source§

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

Formats the value using the given formatter. 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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.