pub struct Authenticator { /* private fields */ }Implementations§
Source§impl Authenticator
impl Authenticator
pub const ALPN: &'static [u8] = b"/iroh/auth/0.1"
Sourcepub fn new<S: IntoSecret>(secret: S) -> Self
pub fn new<S: IntoSecret>(secret: S) -> Self
Examples found in repository?
examples/basic.rs (line 20)
18async fn main() -> Result<(), String> {
19 // 1. Create the authenticator with a shared secret
20 let auth = Authenticator::new("my-super-secret-password");
21
22 // 2. Build the endpoint with the auth hooks
23 let endpoint = Endpoint::builder()
24 .hooks(auth.clone())
25 .bind()
26 .await.map_err(|e| e.to_string())?;
27
28 // 3. The authenticator needs a reference to the bound endpoint
29 // to initiate authentication handshakes.
30 auth.set_endpoint(&endpoint);
31
32 // 4. Register the auth protocol handler
33 let router = Router::builder(endpoint)
34 .accept(Authenticator::ALPN, auth.clone())
35
36 // Register your actual application protocols here
37 .accept(b"/my-app/1.0", MyProtocolHandler)
38 .spawn();
39
40 // ... run your application
41 router.shutdown().await.map_err(|e| e.to_string())?;
42 Ok(())
43}Sourcepub fn set_endpoint(&self, endpoint: &Endpoint)
pub fn set_endpoint(&self, endpoint: &Endpoint)
Examples found in repository?
examples/basic.rs (line 30)
18async fn main() -> Result<(), String> {
19 // 1. Create the authenticator with a shared secret
20 let auth = Authenticator::new("my-super-secret-password");
21
22 // 2. Build the endpoint with the auth hooks
23 let endpoint = Endpoint::builder()
24 .hooks(auth.clone())
25 .bind()
26 .await.map_err(|e| e.to_string())?;
27
28 // 3. The authenticator needs a reference to the bound endpoint
29 // to initiate authentication handshakes.
30 auth.set_endpoint(&endpoint);
31
32 // 4. Register the auth protocol handler
33 let router = Router::builder(endpoint)
34 .accept(Authenticator::ALPN, auth.clone())
35
36 // Register your actual application protocols here
37 .accept(b"/my-app/1.0", MyProtocolHandler)
38 .spawn();
39
40 // ... run your application
41 router.shutdown().await.map_err(|e| e.to_string())?;
42 Ok(())
43}pub fn is_authenticated(&self, id: &PublicKey) -> bool
Sourcepub async fn auth_accept(
&self,
conn: Connection,
) -> Result<(), AuthenticatorError>
pub async fn auth_accept( &self, conn: Connection, ) -> Result<(), AuthenticatorError>
Accept an incoming connection and perform SPAKE2 authentication. On success, adds the remote ID to the authenticated set. Returns Ok(()) on success, or an AuthenticatorError on failure.
Sourcepub async fn auth_open(
&self,
conn: Connection,
) -> Result<(), AuthenticatorError>
pub async fn auth_open( &self, conn: Connection, ) -> Result<(), AuthenticatorError>
Open an outgoing connection and perform SPAKE2 authentication. On success, adds the remote ID to the authenticated set. Returns Ok(()) on success, or an AuthenticatorError on failure.
Trait Implementations§
Source§impl Clone for Authenticator
impl Clone for Authenticator
Source§fn clone(&self) -> Authenticator
fn clone(&self) -> Authenticator
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 moreSource§impl Debug for Authenticator
impl Debug for Authenticator
Source§impl EndpointHooks for Authenticator
impl EndpointHooks for Authenticator
Source§async fn after_handshake<'a>(
&'a self,
conn_info: &'a ConnectionInfo,
) -> AfterHandshakeOutcome
async fn after_handshake<'a>( &'a self, conn_info: &'a ConnectionInfo, ) -> AfterHandshakeOutcome
Intercept both incoming and outgoing connections once the TLS handshake has completed. Read more
Source§async fn before_connect<'a>(
&'a self,
remote_addr: &'a EndpointAddr,
alpn: &'a [u8],
) -> BeforeConnectOutcome
async fn before_connect<'a>( &'a self, remote_addr: &'a EndpointAddr, alpn: &'a [u8], ) -> BeforeConnectOutcome
Intercept outgoing connections before they are started. Read more
Source§impl ProtocolHandler for Authenticator
impl ProtocolHandler for Authenticator
Source§async fn accept(&self, connection: Connection) -> Result<(), AcceptError>
async fn accept(&self, connection: Connection) -> Result<(), AcceptError>
Handle an incoming connection. Read more
Source§fn on_accepting(
&self,
accepting: Accepting,
) -> impl Future<Output = Result<Connection, AcceptError>> + Send
fn on_accepting( &self, accepting: Accepting, ) -> impl Future<Output = Result<Connection, AcceptError>> + Send
Optional interception point to handle the
Accepting state. Read moreAuto Trait Implementations§
impl Freeze for Authenticator
impl RefUnwindSafe for Authenticator
impl Send for Authenticator
impl Sync for Authenticator
impl Unpin for Authenticator
impl UnwindSafe for Authenticator
Blanket Implementations§
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