Struct digest_auth::AuthorizationHeader

source ·
pub struct AuthorizationHeader {
    pub realm: String,
    pub nonce: String,
    pub opaque: Option<String>,
    pub userhash: bool,
    pub algorithm: Algorithm,
    pub response: String,
    pub username: String,
    pub uri: String,
    pub qop: Option<Qop>,
    pub cnonce: Option<String>,
    pub nc: u32,
}
Expand description

Header sent back to the server, including password hashes.

This can be obtained by calling AuthorizationHeader::from_prompt(), or from the WwwAuthenticateHeader prompt struct with .respond()

Fields§

§realm: String

Authorization realm

§nonce: String

Server nonce

§opaque: Option<String>

Server opaque

§userhash: bool

Flag that userhash was used

§algorithm: Algorithm

Hash algorithm

§response: String

Computed digest

§username: String

Username or hash (owned because of the computed hash)

§uri: String

Requested URI

§qop: Option<Qop>

QOP chosen from the list offered by server, if any None in legacy compat mode (RFC 2069)

§cnonce: Option<String>

Client nonce None in legacy compat mode (RFC 2069)

§nc: u32

How many requests have been signed with this server nonce Not used in legacy compat mode (RFC 2069) - it’s still incremented though

Implementations§

source§

impl AuthorizationHeader

source

pub fn from_prompt( prompt: &mut WwwAuthenticateHeader, context: &AuthContext<'_>, ) -> Result<AuthorizationHeader>

Construct using a parsed prompt header and an auth context, selecting suitable algorithm options. The WwwAuthenticateHeader struct contains a nc field that is incremented by this method.

For subsequent requests, simply reuse the same WwwAuthenticateHeader and - if the server supports nonce reuse - it will work automatically.

§Errors

Fails if the source header is malformed so much that we can’t figure out a proper response (e.g. given but invalid QOP options)

source

pub fn digest(&mut self, context: &AuthContext<'_>)

Build the response digest from Auth Context.

This function is used by client to fill the Authorization header. It can be used by server using a known password to replicate the hash and then compare “response”.

This function sets cnonce if it was None before, or reuses it.

Fields updated in the Authorization header:

  • qop (if it was auth-int before but no body was given in context)
  • cnonce (if it was None before)
  • username copied from context
  • response
source

pub fn to_header_string(&self) -> String

Produce a header string (also accessible through the Display trait)

source

pub fn parse(input: &str) -> Result<Self>

Construct from the Authorization header string

§Errors

If the header is malformed (e.g. missing mandatory fields)

Trait Implementations§

source§

impl Clone for AuthorizationHeader

source§

fn clone(&self) -> AuthorizationHeader

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 AuthorizationHeader

source§

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

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

impl Display for AuthorizationHeader

source§

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

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

impl FromStr for AuthorizationHeader

source§

fn from_str(input: &str) -> Result<Self>

Parse HTTP header

source§

type Err = Error

The associated error which can be returned from parsing.
source§

impl PartialEq for AuthorizationHeader

source§

fn eq(&self, other: &AuthorizationHeader) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for AuthorizationHeader

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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

source§

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

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

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 176 bytes