From 532d447b9efed7a6aeb83922fb1d3359b7e37682 Mon Sep 17 00:00:00 2001 From: Matt Johnston <matt@ucc.asn.au> Date: Sun, 14 May 2023 23:06:29 +0800 Subject: [PATCH] Make auth_unchallenged async More async auth methods will probably follow --- src/behaviour.rs | 2 +- src/conn.rs | 2 +- src/servauth.rs | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/behaviour.rs b/src/behaviour.rs index 207f818..7cb3bdd 100644 --- a/src/behaviour.rs +++ b/src/behaviour.rs @@ -226,7 +226,7 @@ pub trait ServBehaviour { /// /// Implementations may need to take care to avoid leaking user existence /// based on timing. - fn auth_unchallenged(&mut self, username: TextString) -> bool { + async fn auth_unchallenged(&mut self, username: TextString<'_>) -> bool { false } diff --git a/src/conn.rs b/src/conn.rs index e275df9..ab41414 100644 --- a/src/conn.rs +++ b/src/conn.rs @@ -305,7 +305,7 @@ impl<C: CliBehaviour, S: ServBehaviour> Conn<C, S> { if let ClientServer::Server(serv) = &mut self.cliserv { disp.zeroize_payload = true; let sess_id = self.sess_id.as_ref().trap()?; - let success = serv.auth.request(p, sess_id, s, b.server()?)?; + let success = serv.auth.request(p, sess_id, s, b.server()?).await?; if success { self.state = ConnState::Authed; } diff --git a/src/servauth.rs b/src/servauth.rs index 4ce8bc4..5b701ee 100644 --- a/src/servauth.rs +++ b/src/servauth.rs @@ -21,11 +21,11 @@ impl ServAuth { } /// Returns `true` if auth succeeds - pub fn request( + pub async fn request( &mut self, - mut p: packets::UserauthRequest, + mut p: packets::UserauthRequest<'_>, sess_id: &SessId, - s: &mut TrafSend, + s: &mut TrafSend<'_, '_>, b: &mut impl ServBehaviour, ) -> Result<bool> { @@ -38,9 +38,9 @@ impl ServAuth { let username = p.username.clone(); - let inner = || { + let inner = async { // even allows "none" auth - if b.auth_unchallenged(p.username) { + if b.auth_unchallenged(p.username).await { return Ok(AuthResp::Success) as Result<_> } @@ -80,7 +80,7 @@ impl ServAuth { }; // failure sends a list of available methods - match inner()? { + match inner.await? { AuthResp::Success => { self.authed = true; s.send(packets::UserauthSuccess {})?; -- GitLab