pub struct AppCheckerSha256 { /* private fields */ }
Expand description

A Credentials Checking Policy that only runs Userspace Binaries which have a unique SHA256 credential. A Userspace Binary without a SHA256 credential fails checking, and only one Userspace Binary with a particular SHA256 hash runs at any time.

Implementations§

source§

impl AppCheckerSha256

source

pub fn new( hash: &'static dyn Sha256Verifier<'static>, buffer: &'static mut [u8; 32] ) -> AppCheckerSha256

Trait Implementations§

source§

impl AppCredentialsChecker<'static> for AppCheckerSha256

source§

fn require_credentials(&self) -> bool

source§

fn check_credentials( &self, credentials: TbfFooterV2Credentials, binary: &'static [u8] ) -> Result<(), (ErrorCode, TbfFooterV2Credentials, &'static [u8])>

source§

fn set_client(&self, client: &'static dyn Client<'static>)

source§

impl AppUniqueness for AppCheckerSha256

source§

fn different_identifier( &self, process_a: &dyn Process, process_b: &dyn Process ) -> bool

Returns whether process_a and process_b have a different identifier, and so can run concurrently. If this returns false, the kernel will not run process_a and process_b at the same time.
source§

impl ClientData<32> for AppCheckerSha256

source§

fn add_mut_data_done( &self, _result: Result<(), ErrorCode>, _data: SubSliceMut<'static, u8> )

Called when the data has been added to the digest. data is the SubSliceMut passed in the call to add_mut_data, whose active slice contains the data that was not added. On Ok, data has an active slice of size zero (all data was added). Valid ErrorCode values are: Read more
source§

fn add_data_done( &self, result: Result<(), ErrorCode>, data: SubSlice<'static, u8> )

Called when the data has been added to the digest. data is the SubSlice passed in the call to add_data, whose active slice contains the data that was not added. On Ok, data has an active slice of size zero (all data was added). Valid ErrorCode values are: Read more
source§

impl ClientHash<32> for AppCheckerSha256

source§

fn hash_done( &self, _result: Result<(), ErrorCode>, _digest: &'static mut [u8; 32] )

Called when a digest is computed. digest is the same reference passed to run() to store the hash value. If result is Ok, digest stores the computed hash. If result is Err, the data stored in digest is undefined and may have any value. Valid ErrorCode values are: Read more
source§

impl ClientVerify<32> for AppCheckerSha256

source§

fn verification_done( &self, result: Result<bool, ErrorCode>, compare: &'static mut [u8; 32] )

Called when a verification is computed. compare is the reference supplied to verify() and the data stored in compare is unchanged. On Ok the bool indicates if the computed hash matches the value in compare. Valid ErrorCode values are: Read more
source§

impl Compress for AppCheckerSha256

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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> SizedTypeProperties for T

source§

const IS_ZST: bool = size_of::<Self>() == 0

🔬This is a nightly-only experimental API. (sized_type_properties)
true if this type requires no storage. false if its size is greater than zero. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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<T, const L: usize> Client<L> for Twhere T: ClientData<L> + ClientHash<L> + ClientVerify<L>,

source§

impl<T, const L: usize> ClientDataHash<L> for Twhere T: ClientData<L> + ClientHash<L>,

source§

impl<T, const L: usize> ClientDataVerify<L> for Twhere T: ClientData<L> + ClientVerify<L>,

source§

impl<'a, T> CredentialsCheckingPolicy<'a> for Twhere T: AppCredentialsChecker<'a> + Compress + AppUniqueness,