Struct FidoGuestKey

Source
pub struct FidoGuestKey {
    pub pending_in_packets: VecDeque<[u8; 64]>,
    pub idle: u8,
    pub timer: PollTimer,
}
Expand description

FidoGuestKey is the struct representation of a virtual fido device as seen by the guest VM. It takes care of bubbling up transactions from the host into the guest and show a representation of the device’s state into the guest.

Fields§

§pending_in_packets: VecDeque<[u8; 64]>

Queue of packets already processed by the host that need to be sent to the guest.

§idle: u8

HID Idle state of the security key.

§timer: PollTimer

Timer used to poll to periodically send packets to pending USB transfers.

Implementations§

Source§

impl FidoGuestKey

Source

pub fn new() -> Result<Self>

Source

pub fn reset(&mut self)

Resets the guest key representation, stopping the poll and clearing the packet queue.

Source

pub fn return_data_to_guest( &mut self, transfer_opt: Option<FidoTransfer>, ) -> Result<Option<FidoTransfer>>

Sends data to the guest by associating a given transfer to the oldest packet in the queue. If the data from the host hasn’t been read yet (the packet queue is empty), it returns the same transfer back to the caller, unmodified.

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.
§

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

§

fn vzip(self) -> V