Skip to main content

TpmResponder

Struct TpmResponder 

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

The responder end of a TpmTransport, for serving TPM commands.

Where a TpmDevice sends commands and receives responses, a TpmResponder receives commands and sends responses. Both ends share the same transport and frame codec; only the direction of use differs, which makes this crate usable for the TPM side of an exchange, such as an emulator.

Command decoding and response marshaling are left to the caller (for example via tpm2_protocol), keeping this type focused on transport and framing.

Implementations§

Source§

impl TpmResponder

Source

pub fn new(transport: Box<dyn TpmTransport>) -> Self

Creates a TpmResponder serving over the given transport.

Source

pub fn recv_command(&mut self) -> Result<&[u8], TpmDeviceError>

Receives the next command frame, returning its raw bytes.

§Errors

Returns UnexpectedEof when the peer disconnects, or other TpmDeviceError variants when the transport fails.

Source

pub fn send_response(&mut self, frame: &[u8]) -> Result<(), TpmDeviceError>

Sends a marshaled response frame.

§Errors

Returns a TpmDeviceError when the transport fails to send the frame.

Source

pub fn serve<H>(&mut self, handler: H) -> Result<(), TpmDeviceError>
where H: FnMut(&[u8]) -> Vec<u8>,

Serves commands until the peer disconnects.

Each received command frame is passed to handler, whose returned bytes are written back as the response frame. Returns Ok(()) once the peer closes the transport.

§Errors

Returns a TpmDeviceError when receiving a command or sending a response fails for any reason other than a clean disconnect.

Trait Implementations§

Source§

impl Debug for TpmResponder

Source§

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

Formats the value using the given formatter. Read more

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> 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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