Skip to main content

BrokerRecipient

Struct BrokerRecipient 

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

A recipient backed by the broker AeadService.UnsealCose RPC.

The adapter forwards the exact embedded tagged COSE_Encrypt bytes from OpenRequest::cose_encrypt to the broker. It never parses and re-encodes the message, preserving the protected-header bytes bound by COSE AAD.

Implementations§

Source§

impl BrokerRecipient

Source

pub fn new( client: Arc<Mutex<Client>>, key_id: &str, ) -> Result<Self, SealedInvocationError>

Build a broker-backed recipient for key_id.

§Errors

Returns SealedInvocationError::Profile if key_id is outside the COSE kid bounds.

Source

pub fn unseal_cose_request( &self, request: &OpenRequest<'_>, ) -> Result<UnsealCoseRequest, OpenError>

Build the exact UnsealCose request this recipient would send.

This is primarily useful for tests and for callers that need to inspect broker request construction without performing the RPC.

§Errors

Returns OpenError::RecipientKeyMismatch if this recipient’s key id is not a UTF-8 catalog name.

Source

pub fn unseal_cose_request_for( key_id: &KeyId, request: &OpenRequest<'_>, ) -> Result<UnsealCoseRequest, OpenError>

Build an UnsealCose request for key_id without requiring a client.

This is the pure request-construction half of the broker-backed recipient and is useful in tests for checking that exact COSE bytes are forwarded.

§Errors

Returns OpenError::RecipientKeyMismatch if key_id is not a UTF-8 catalog name.

Trait Implementations§

Source§

impl Clone for BrokerRecipient

Source§

fn clone(&self) -> BrokerRecipient

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Recipient for BrokerRecipient

Source§

fn key_id(&self) -> &KeyId

The recipient (static X25519) key id.
Source§

async fn open( &self, request: &OpenRequest<'_>, ) -> Result<Zeroizing<Vec<u8>>, OpenError>

Open the message, returning the plaintext in a zeroizing buffer.

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<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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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