spiffe::workload_api::x509_source

Struct X509Source

Source
pub struct X509Source { /* private fields */ }
Expand description

Represents a source of X.509 SVIDs and X.509 bundles.

X509Source implements the BundleSource and SvidSource traits.

The methods return cloned instances of the underlying objects.

Implementations§

Source§

impl X509Source

Source

pub async fn default() -> Result<Arc<Self>, X509SourceError>

Builds a new X509Source using a default WorkloadApiClient and no SVID picker. Since no SVID picker is provided, the get_svid method will return the default SVID.

This method is asynchronous and may return an error if the initialization fails.

Source

pub fn updated(&self) -> Receiver<()>

Returns a watch::Receiver<()> that can be used to listen for notifications when the X509Source is updated.

§Example

``no_run let mut update_channel = source.updated(); // Get the watch receiver for the source

// Asynchronously handle updates in a loop tokio::spawn(async move { loop { match update_channel.changed().await { Ok() => { println!(“X509Source was updated!”); }, Err() => { println!(“Watch channel closed; exiting update loop”); break; } } } });

Source

pub fn close(&self) -> Result<(), X509SourceError>

Closes the X509Source cancelling all spawned tasks.

Trait Implementations§

Source§

impl BundleSource for X509Source

Source§

fn get_bundle_for_trust_domain( &self, trust_domain: &TrustDomain, ) -> Result<Option<Self::Item>, Box<dyn Error + Send + Sync + 'static>>

Retrieves the X.509 bundle for the given trust domain.

§Arguments
  • trust_domain - The trust domain for which the X.509 bundle is to be retrieved.
§Returns

A Result containing an Option<X509Bundle> for the given trust domain. If the bundle is not found, returns Ok(None).

§Errors

Returns a boxed error if the source is closed or if there is an issue accessing the bundle.

Source§

type Item = X509Bundle

The type of the bundles provided by the source.
Source§

impl Debug for X509Source

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl SvidSource for X509Source

Source§

fn get_svid( &self, ) -> Result<Option<Self::Item>, Box<dyn Error + Send + Sync + 'static>>

Retrieves the X.509 SVID from the source.

§Returns

An Result<Option<X509Svid>, Box<dyn Error + Send + Sync + 'static>> containing the X.509 SVID if available. Returns Ok(None) if no SVID is found. Returns an error if the source is closed or if there’s an issue fetching the SVID.

Source§

type Item = X509Svid

The type of the SVIDs provided by the source.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T