pub struct ReloadableResolver { /* private fields */ }Available on crate features
compio-tls or http3 or tls only.Expand description
Certificate resolver whose key can be swapped at runtime; keep the Arc passed to
TlsCert::resolver to reload. Each handshake costs one lock-free Arc clone.
§Example
use std::sync::Arc;
use tako_rs_server::{ReloadableResolver, TlsCert};
let resolver = Arc::new(ReloadableResolver::from_pem("cert.pem", "key.pem")?);
let cert = TlsCert::resolver(resolver.clone());
let server = tako_rs_server::Server::builder().tls(cert).build();
// Later, after a cert rotation:
resolver.reload_from_pem("cert.pem", "key.pem")?;Implementations§
Source§impl ReloadableResolver
impl ReloadableResolver
Sourcepub fn from_pem(
cert_path: &str,
key_path: &str,
) -> Result<ReloadableResolver, Error>
Available on crate feature tls only.
pub fn from_pem( cert_path: &str, key_path: &str, ) -> Result<ReloadableResolver, Error>
tls only.Loads a certificate chain and key from PEM files.
Sourcepub fn reload_from_pem(
&self,
cert_path: &str,
key_path: &str,
) -> Result<(), Error>
Available on crate feature tls only.
pub fn reload_from_pem( &self, cert_path: &str, key_path: &str, ) -> Result<(), Error>
tls only.Atomically swaps in a key loaded from PEM files; established sessions are unaffected and new handshakes use it.
Sourcepub fn reload(&self, ck: CertifiedKey)
Available on crate feature tls only.
pub fn reload(&self, ck: CertifiedKey)
tls only.Atomically swaps in a prebuilt rustls::sign::CertifiedKey.
Trait Implementations§
Source§impl Debug for ReloadableResolver
Available on crate feature tls only.
impl Debug for ReloadableResolver
Available on crate feature
tls only.Source§impl ResolvesServerCert for ReloadableResolver
Available on crate feature tls only.
impl ResolvesServerCert for ReloadableResolver
Available on crate feature
tls only.Source§fn resolve(&self, _client_hello: ClientHello<'_>) -> Option<Arc<CertifiedKey>>
fn resolve(&self, _client_hello: ClientHello<'_>) -> Option<Arc<CertifiedKey>>
Choose a certificate chain and matching key given simplified
ClientHello information. Read more
Source§fn only_raw_public_keys(&self) -> bool
fn only_raw_public_keys(&self) -> bool
Return true when the server only supports raw public keys.
Auto Trait Implementations§
impl !Freeze for ReloadableResolver
impl !RefUnwindSafe for ReloadableResolver
impl !UnwindSafe for ReloadableResolver
impl Send for ReloadableResolver
impl Sync for ReloadableResolver
impl Unpin for ReloadableResolver
impl UnsafeUnpin for ReloadableResolver
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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