pub struct RootCertStore {
pub roots: Vec<TrustAnchor<'static>>,
}websocket only.Expand description
A container for root certificates able to provide a root-of-trust for connection authentication.
Fields§
§roots: Vec<TrustAnchor<'static>>The list of roots.
Implementations§
Source§impl RootCertStore
impl RootCertStore
Sourcepub fn empty() -> RootCertStore
pub fn empty() -> RootCertStore
Make a new, empty RootCertStore.
Sourcepub fn add_parsable_certificates<'a>(
&mut self,
der_certs: impl IntoIterator<Item = CertificateDer<'a>>,
) -> (usize, usize)
pub fn add_parsable_certificates<'a>( &mut self, der_certs: impl IntoIterator<Item = CertificateDer<'a>>, ) -> (usize, usize)
Parse the given DER-encoded certificates and add all that can be parsed in a best-effort fashion.
This is because large collections of root certificates often include ancient or syntactically invalid certificates.
Returns the number of certificates added, and the number that were ignored.
Sourcepub fn add(&mut self, der: CertificateDer<'_>) -> Result<(), Error>
pub fn add(&mut self, der: CertificateDer<'_>) -> Result<(), Error>
Add a single DER-encoded certificate to the store.
This is suitable for a small set of root certificates that are expected to parse
successfully. For large collections of roots (for example from a system store) it
is expected that some of them might not be valid according to the rules rustls
implements. As long as a relatively limited number of certificates are affected,
this should not be a cause for concern. Use RootCertStore::add_parsable_certificates
in order to add as many valid roots as possible and to understand how many certificates
have been diagnosed as malformed.
Sourcepub fn subjects(&self) -> Vec<DistinguishedName>
pub fn subjects(&self) -> Vec<DistinguishedName>
Return the DER encoded DistinguishedName of each trust anchor subject in the root
cert store.
Each DistinguishedName will be a DER-encoded X.500 distinguished name, per
RFC 5280 A.1, including the outer SEQUENCE.
Trait Implementations§
Source§impl Clone for RootCertStore
impl Clone for RootCertStore
Source§fn clone(&self) -> RootCertStore
fn clone(&self) -> RootCertStore
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RootCertStore
impl Debug for RootCertStore
Source§impl Extend<TrustAnchor<'static>> for RootCertStore
impl Extend<TrustAnchor<'static>> for RootCertStore
Source§fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = TrustAnchor<'static>>,
fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = TrustAnchor<'static>>,
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl FromIterator<TrustAnchor<'static>> for RootCertStore
impl FromIterator<TrustAnchor<'static>> for RootCertStore
Source§fn from_iter<T>(iter: T) -> RootCertStorewhere
T: IntoIterator<Item = TrustAnchor<'static>>,
fn from_iter<T>(iter: T) -> RootCertStorewhere
T: IntoIterator<Item = TrustAnchor<'static>>,
Auto Trait Implementations§
impl Freeze for RootCertStore
impl RefUnwindSafe for RootCertStore
impl Send for RootCertStore
impl Sync for RootCertStore
impl Unpin for RootCertStore
impl UnsafeUnpin for RootCertStore
impl UnwindSafe for RootCertStore
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
impl<T, U> Captures<U> for Twhere
T: ?Sized,
impl<T> Channel for T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ConditionalSend for Twhere
T: Send,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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>
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>
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