pub struct SecurityConfig<T, C> {
pub trusted_store: T,
pub certificate: C,
}Expand description
A security config has both a trusted store and a client certificate.
- This is used to configure the client certificate issuer: we need both
- When issuing client certificates: the certificate (+intermediates) to sign the CMS extension.
- When validating client certificates: the trusted roots to validate the issuing cert in the signed CMS extension
- This is also used to configure the Root CA
- The Root CA doesn’t need to be secure. It’s just there to sanity check client certs are owned by us before the custom validation logic kicks in.
- The Root CA is the issuer of client certificates. Technically we need an issuer, but the real validation is the CMS extension.
Fields§
§trusted_store: T§certificate: CTrait Implementations§
Source§impl<T: IsGlobal, C: CertificateConfig> CertificateConfig for SecurityConfig<T, C>
impl<T: IsGlobal, C: CertificateConfig> CertificateConfig for SecurityConfig<T, C>
type Error = <C as CertificateConfig>::Error
Source§fn intermediates(&self) -> Result<Arc<Vec<X509>>, Self::Error>
fn intermediates(&self) -> Result<Arc<Vec<X509>>, Self::Error>
Computes the list of intermediate certificates.
Source§fn certificate(&self) -> Result<Arc<X509CertificateInfo>, Self::Error>
fn certificate(&self) -> Result<Arc<X509CertificateInfo>, Self::Error>
Computes the X509 leaf certificate
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Whether the certificate can change over time, ie Let’s Encrypt certificates.
Source§fn memoize(self) -> MemoizedCertificate<Self>where
Self: Sized,
fn memoize(self) -> MemoizedCertificate<Self>where
Self: Sized,
Returns a memoized CertificateConfig.
Source§fn cache(self) -> Result<CachedCertificate, Self::Error>where
Self: Sized,
fn cache(self) -> Result<CachedCertificate, Self::Error>where
Self: Sized,
Returns a cached CertificateConfig.
Source§impl<T: Clone, C: Clone> Clone for SecurityConfig<T, C>
impl<T: Clone, C: Clone> Clone for SecurityConfig<T, C>
Source§fn clone(&self) -> SecurityConfig<T, C>
fn clone(&self) -> SecurityConfig<T, C>
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<T: TrustedStoreConfig, C: IsGlobal> TrustedStoreConfig for SecurityConfig<T, C>
impl<T: TrustedStoreConfig, C: IsGlobal> TrustedStoreConfig for SecurityConfig<T, C>
Auto Trait Implementations§
impl<T, C> Freeze for SecurityConfig<T, C>
impl<T, C> RefUnwindSafe for SecurityConfig<T, C>where
T: RefUnwindSafe,
C: RefUnwindSafe,
impl<T, C> Send for SecurityConfig<T, C>
impl<T, C> Sync for SecurityConfig<T, C>
impl<T, C> Unpin for SecurityConfig<T, C>
impl<T, C> UnwindSafe for SecurityConfig<T, C>where
T: UnwindSafe,
C: UnwindSafe,
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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<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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request