use crate::error::SessionError::NoSecurityLayer;
use crate::io::Write;
#[cfg(any(doc, feature = "unstable_custom_mechanism"))]
pub use crate::context::{Demand, DemandReply, EmptyProvider, Provider, ProviderExt, ThisProvider};
#[cfg(any(doc, feature = "unstable_custom_mechanism"))]
pub use crate::error::MechanismErrorKind;
#[allow(unused_imports)]
pub use crate::error::{MechanismError, SessionError};
pub use crate::session::{MechanismData, State};
pub trait Authentication: Send + Sync {
fn step(
&mut self,
session: &mut MechanismData,
input: Option<&[u8]>,
writer: &mut dyn Write,
) -> Result<State, SessionError>;
fn encode(&mut self, _input: &[u8], _writer: &mut dyn Write) -> Result<usize, SessionError> {
Err(NoSecurityLayer)
}
fn decode(&mut self, _input: &[u8], _writer: &mut dyn Write) -> Result<usize, SessionError> {
Err(NoSecurityLayer)
}
fn has_security_layer(&self) -> bool {
false
}
}
#[cfg(test)]
mod test {
static_assertions::assert_obj_safe!(super::Authentication);
}