pub enum ScramState {
Initial,
ServerFirstSent {
username: String,
client_nonce: String,
server_nonce: String,
salt: Vec<u8>,
iterations: u32,
auth_message: String,
},
Complete,
}Expand description
SCRAM-SHA-256 authentication state machine
Implements the full SCRAM protocol for secure password-based authentication. This is significantly more secure than PLAIN because:
- The password is never sent over the wire (even encrypted)
- The server stores derived keys, not the password
- Mutual authentication (server proves it knows the password too)
- Protection against replay attacks via nonces
Variants§
Initial
Waiting for client-first-message
ServerFirstSent
Waiting for client-final-message
Fields
Complete
Authentication complete (success or failure pending verification)
Trait Implementations§
Source§impl Clone for ScramState
impl Clone for ScramState
Source§fn clone(&self) -> ScramState
fn clone(&self) -> ScramState
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for ScramState
impl RefUnwindSafe for ScramState
impl Send for ScramState
impl Sync for ScramState
impl Unpin for ScramState
impl UnwindSafe for ScramState
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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<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