pub struct ScramCredentials {
pub salt: Vec<u8>,
pub iteration_count: u32,
pub stored_key: Vec<u8>,
pub server_key: Vec<u8>,
}Expand description
SCRAM-SHA-256 credential bundle as defined by RFC 5802.
These values are derived from a user’s password via PBKDF2-SHA-256 and stored so that the server never needs to see the raw password for SCRAM authentication.
Derivation (per RFC 5802 §3):
SaltedPassword = PBKDF2-SHA-256(password, salt, i)
ClientKey = HMAC-SHA-256(SaltedPassword, "Client Key")
StoredKey = SHA-256(ClientKey) // stored here
ServerKey = HMAC-SHA-256(SaltedPassword, "Server Key") // stored hereFields§
§salt: Vec<u8>Random salt bytes used in the PBKDF2 derivation.
iteration_count: u32Number of PBKDF2 iterations (≥ 4096 recommended by RFC 7677).
stored_key: Vec<u8>SHA-256(ClientKey) — used to verify the client proof without storing the key.
server_key: Vec<u8>HMAC-SHA-256(SaltedPassword, "Server Key") — used to produce the server signature.
Trait Implementations§
Source§impl Clone for ScramCredentials
impl Clone for ScramCredentials
Source§fn clone(&self) -> ScramCredentials
fn clone(&self) -> ScramCredentials
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 moreSource§impl Debug for ScramCredentials
impl Debug for ScramCredentials
Source§impl PartialEq for ScramCredentials
impl PartialEq for ScramCredentials
Source§fn eq(&self, other: &ScramCredentials) -> bool
fn eq(&self, other: &ScramCredentials) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for ScramCredentials
impl StructuralPartialEq for ScramCredentials
Auto Trait Implementations§
impl Freeze for ScramCredentials
impl RefUnwindSafe for ScramCredentials
impl Send for ScramCredentials
impl Sync for ScramCredentials
impl Unpin for ScramCredentials
impl UnsafeUnpin for ScramCredentials
impl UnwindSafe for ScramCredentials
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
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§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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