pub struct Device { /* private fields */ }Implementations§
Source§impl Device
impl Device
Sourcepub fn new(file: File, log_format: LogFormat) -> Result<Self, DeviceError>
pub fn new(file: File, log_format: LogFormat) -> Result<Self, DeviceError>
Creates a new TPM device from an owned transport.
§Errors
Returns an error if the system poller cannot be created.
Sourcepub fn execute<C: TpmCommandObject>(
&mut self,
command: &C,
sessions: &[TpmsAuthCommand],
) -> Result<(TpmResponseBody, TpmAuthResponses), DeviceError>
pub fn execute<C: TpmCommandObject>( &mut self, command: &C, sessions: &[TpmsAuthCommand], ) -> Result<(TpmResponseBody, TpmAuthResponses), DeviceError>
Performs the whole TPM command transmission process.
§Errors
Returns Interrupted when
user interrupts the program.
Returns Io when an I/O operation
fails.
Returns Timeout when the
transmission timeouts.
Returns TpmProtocol when
either built command or parsed response is malformed.
Returns TpmRc when the chip
responses with a return code.
Sourcepub fn get_capability<T, F, N>(
&mut self,
cap: TpmCap,
property_start: u32,
count: u32,
extract: F,
next_prop: N,
) -> Result<Vec<T>, DeviceError>where
T: Copy,
F: for<'a> FnMut(&'a TpmuCapabilities) -> Result<&'a [T], DeviceError>,
N: Fn(&T) -> u32,
pub fn get_capability<T, F, N>(
&mut self,
cap: TpmCap,
property_start: u32,
count: u32,
extract: F,
next_prop: N,
) -> Result<Vec<T>, DeviceError>where
T: Copy,
F: for<'a> FnMut(&'a TpmuCapabilities) -> Result<&'a [T], DeviceError>,
N: Fn(&T) -> u32,
Fetches a complete list of capabilities from the TPM, handling pagination.
§Errors
This function will return an error if the underlying execute call fails
or if the TPM returns a response of an unexpected type.
Sourcepub fn fetch_handles(&mut self, class: u32) -> Result<Vec<Handle>, DeviceError>
pub fn fetch_handles(&mut self, class: u32) -> Result<Vec<Handle>, DeviceError>
Retrieves all handles of a specific type from the TPM.
§Errors
Returns a DeviceError if the get_capability_page call to the TPM device fails.
Sourcepub fn get_capability_page(
&mut self,
cap: TpmCap,
property: u32,
count: u32,
) -> Result<(bool, TpmsCapabilityData), DeviceError>
pub fn get_capability_page( &mut self, cap: TpmCap, property: u32, count: u32, ) -> Result<(bool, TpmsCapabilityData), DeviceError>
Fetches and returns one page of capabilities of a certain type from the TPM.
§Errors
This function will return an error if the underlying execute call fails
or if the TPM returns a response of an unexpected type.
Sourcepub fn get_tpm_property(&mut self, property: TpmPt) -> Result<u32, DeviceError>
pub fn get_tpm_property(&mut self, property: TpmPt) -> Result<u32, DeviceError>
Reads a specific TPM property.
§Errors
Returns a DeviceError if the capability or property is not found, or
if the get_capability call fails.
Sourcepub fn read_public(
&mut self,
handle: TpmHandle,
) -> Result<(TpmtPublic, Tpm2bName), DeviceError>
pub fn read_public( &mut self, handle: TpmHandle, ) -> Result<(TpmtPublic, Tpm2bName), DeviceError>
Reads the public area of a TPM object.
§Errors
Returns a DeviceError if the underlying TPM2_ReadPublic command
execution fails or if the TPM returns a response of an unexpected type.
Sourcepub fn find_persistent(
&mut self,
target: &TpmtPublic,
) -> Result<Option<(TpmHandle, Tpm2bName)>, DeviceError>
pub fn find_persistent( &mut self, target: &TpmtPublic, ) -> Result<Option<(TpmHandle, Tpm2bName)>, DeviceError>
Finds a persistent handle by its public area.
§Errors
Returns a DeviceError if fetching handles or reading public areas fails.
Sourcepub fn save_context(
&mut self,
save_handle: TpmHandle,
) -> Result<TpmsContext, DeviceError>
pub fn save_context( &mut self, save_handle: TpmHandle, ) -> Result<TpmsContext, DeviceError>
Saves the context of a transient object or session.
§Errors
Returns a DeviceError if the underlying TPM2_ContextSave command
execution fails or if the TPM returns a response of an unexpected type.
Sourcepub fn load_context(
&mut self,
context: TpmsContext,
) -> Result<TpmHandle, DeviceError>
pub fn load_context( &mut self, context: TpmsContext, ) -> Result<TpmHandle, DeviceError>
Loads a TPM context and returns the handle.
§Errors
Returns a DeviceError if the TPM2_ContextLoad command fails.
Sourcepub fn flush_context(&mut self, handle: TpmHandle) -> Result<(), DeviceError>
pub fn flush_context(&mut self, handle: TpmHandle) -> Result<(), DeviceError>
Flushes a transient object or session from the TPM and removes it from the cache.
§Errors
Returns a DeviceError if the underlying TPM2_FlushContext command
execution fails.
Sourcepub fn flush_session(&mut self, context: TpmsContext) -> Result<(), DeviceError>
pub fn flush_session(&mut self, context: TpmsContext) -> Result<(), DeviceError>
Loads a session context and then flushes the resulting handle.
§Errors
Returns DeviceError on ContextLoad or FlushContext failure.
Sourcepub fn start_session(
&mut self,
session_type: TpmSe,
auth_hash: TpmAlgId,
bind: TpmHandle,
) -> Result<(TpmStartAuthSessionResponse, Tpm2bNonce), DeviceError>
pub fn start_session( &mut self, session_type: TpmSe, auth_hash: TpmAlgId, bind: TpmHandle, ) -> Result<(TpmStartAuthSessionResponse, Tpm2bNonce), DeviceError>
Starts a new authorization session.
This function sends a TPM2_StartAuthSession command to the TPM and
returns the raw response, which can be used to construct a higher-level
session object.
§Errors
Returns DeviceError on TPM command failure.
Sourcepub fn evict_control(
&mut self,
auth: TpmHandle,
object_handle: TpmHandle,
persistent_handle: TpmHandle,
sessions: &[TpmsAuthCommand],
) -> Result<(), DeviceError>
pub fn evict_control( &mut self, auth: TpmHandle, object_handle: TpmHandle, persistent_handle: TpmHandle, sessions: &[TpmsAuthCommand], ) -> Result<(), DeviceError>
Evicts a persistent object or makes a transient object persistent.
§Errors
Returns DeviceError on TPM command failure.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Device
impl RefUnwindSafe for Device
impl Send for Device
impl Sync for Device
impl Unpin for Device
impl UnwindSafe for Device
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
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.