Struct devices::usb::backend::fido_backend::fido_guest::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
impl FidoGuestKey
pub fn new() -> Result<Self>
sourcepub fn reset(&mut self)
pub fn reset(&mut self)
Resets the guest key representation, stopping the poll and clearing the packet queue.
sourcepub fn return_data_to_guest(
&mut self,
transfer_opt: Option<FidoTransfer>
) -> Result<Option<FidoTransfer>>
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§
impl RefUnwindSafe for FidoGuestKey
impl Send for FidoGuestKey
impl Sync for FidoGuestKey
impl Unpin for FidoGuestKey
impl UnwindSafe for FidoGuestKey
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.