use std::future::Future;
use crate::errors::{AuthError, ConnError};
use crate::frame::{AuthIntent, ChallengeData, FrameBody, ResponseData, Side};
use crate::peer::Identity;
pub trait AsyncSendFrame {
fn send_frame_async(
&mut self,
body: &FrameBody,
) -> impl Future<Output = Result<(), ConnError>> + Send;
}
pub trait AsyncRecvFrame {
fn recv_frame_async(&mut self) -> impl Future<Output = Result<FrameBody, ConnError>> + Send;
}
pub trait AuthConfig: Clone {
fn get_intent(&self) -> AuthIntent;
fn sign_challenge(
&self,
client_chal: &ChallengeData,
server_chal: &ChallengeData,
side: Side,
) -> Result<Option<ResponseData>, AuthError>;
fn verify_response(
&self,
client_chal: &ChallengeData,
server_chal: &ChallengeData,
producer_side: Side,
resp: &ResponseData,
) -> Result<Option<Identity>, AuthError>;
}