pub struct SignedRegisterState(/* private fields */);
Expand description

An encoded and signed RegisterState.

This signature can be used by the upstream server to ensure that the downstream client did not tamper with the token without keeping state between requests. For more information, see RegisterState.

The format and contents of SignedRegisterState are intentionally opaque. Downstream clients do not need to interpret it, and the upstream can change its contents at any time. Parsing and validation is only performed on the upstream.

In the current implementation, the serialized state has the format {state}:{signature}, where each component is:

  • state: A URL-safe base64 encoding of the JSON serialized RegisterState.
  • signature: A URL-safe base64 encoding of the SHA512 HMAC of the encoded state.

To create a signed state, use RegisterChallenge::sign. To validate the signature and read the state, use SignedRegisterChallenge::unpack. In both cases, a secret for signing has to be supplied.

Implementations§

source§

impl SignedRegisterState

source

pub fn as_str(&self) -> &str

Returns the string representation of the token.

source

pub fn unpack( &self, secret: &[u8], max_age: Option<Duration> ) -> Result<RegisterState, UnpackError>

Unpacks the encoded state and validates the signature.

If max_age is specified, then the timestamp in the state is validated against the current time stamp. If the stored timestamp is too old, UnpackError::SignatureExpired is returned.

Trait Implementations§

source§

impl Clone for SignedRegisterState

source§

fn clone(&self) -> SignedRegisterState

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SignedRegisterState

source§

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

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

impl<'de> Deserialize<'de> for SignedRegisterState

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for SignedRegisterState

source§

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

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

impl Serialize for SignedRegisterState

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

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

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,