async_imap/
authenticator.rs

1/// This trait allows for pluggable authentication schemes. It is used by [`Client::authenticate`] to
2/// [authenticate using SASL](https://tools.ietf.org/html/rfc3501#section-6.2.2).
3///
4/// [`Client::authenticate`]: crate::Client::authenticate
5pub trait Authenticator {
6    /// The type of the response to the challenge. This will usually be a `Vec<u8>` or `String`.
7    type Response: AsRef<[u8]>;
8
9    /// Each base64-decoded server challenge is passed to `process`.
10    /// The returned byte-string is base64-encoded and then sent back to the server.
11    fn process(&mut self, challenge: &[u8]) -> Self::Response;
12}