pub struct Authenticator { /* private fields */ }Implementations§
Source§impl Authenticator
impl Authenticator
pub const ALPN: &'static [u8] = crate::ALPN
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(iroh::endpoint::presets::N0)
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).await;
31
32 // 4. Register the auth protocol handler
33 let router = Router::builder(endpoint)
34 .accept(iroh_auth::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 async fn set_endpoint(&self, endpoint: &Endpoint)
pub async 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(iroh::endpoint::presets::N0)
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).await;
31
32 // 4. Register the auth protocol handler
33 let router = Router::builder(endpoint)
34 .accept(iroh_auth::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 async fn is_authenticated(&self, id: &PublicKey) -> bool
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 (const: unstable) · 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: &'a Connection,
) -> AfterHandshakeOutcome
async fn after_handshake<'a>( &'a self, conn: &'a Connection, ) -> 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 !RefUnwindSafe for Authenticator
impl !UnwindSafe for Authenticator
impl Freeze for Authenticator
impl Send for Authenticator
impl Sync for Authenticator
impl Unpin for Authenticator
impl UnsafeUnpin 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<P> DynProtocolHandler for Pwhere
P: ProtocolHandler,
impl<P> DynProtocolHandler for Pwhere
P: ProtocolHandler,
Source§fn accept(
&self,
connection: Connection,
) -> Pin<Box<dyn Future<Output = Result<(), AcceptError>> + Send + '_>>
fn accept( &self, connection: Connection, ) -> Pin<Box<dyn Future<Output = Result<(), AcceptError>> + Send + '_>>
Source§fn on_accepting(
&self,
accepting: Accepting,
) -> Pin<Box<dyn Future<Output = Result<Connection, AcceptError>> + Send + '_>>
fn on_accepting( &self, accepting: Accepting, ) -> Pin<Box<dyn Future<Output = Result<Connection, AcceptError>> + Send + '_>>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more