capsules_core::virtualizers::virtual_aes_ccm

Struct VirtualAES128CCM

Source
pub struct VirtualAES128CCM<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> { /* private fields */ }

Implementations§

Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> VirtualAES128CCM<'a, A>

Source

pub fn new( mux: &'a MuxAES128CCM<'a, A>, crypt_buf: &'static mut [u8], ) -> VirtualAES128CCM<'a, A>

Source

pub fn setup(&'a self)

bind itself to self.mux, should be called after static_init!

Trait Implementations§

Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> AES128<'a> for VirtualAES128CCM<'a, A>

Source§

fn enable(&self)

Enable the AES hardware. Must be called before any other methods
Source§

fn disable(&self)

Disable the AES hardware
Source§

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

Set the client instance which will receive crypt_done() callbacks
Source§

fn set_key(&self, key: &[u8]) -> Result<(), ErrorCode>

Set the encryption key. Returns INVAL if length is not AES128_KEY_SIZE
Source§

fn set_iv(&self, iv: &[u8]) -> Result<(), ErrorCode>

Set the IV (or initial counter). Returns INVAL if length is not AES128_BLOCK_SIZE
Source§

fn start_message(&self)

Begin a new message (with the configured IV) when crypt() is next called. Multiple calls to crypt() may be made between calls to start_message(), allowing the encryption context to extend over non-contiguous extents of data. Read more
Source§

fn crypt( &self, source: Option<&'static mut [u8]>, dest: &'static mut [u8], start_index: usize, stop_index: usize, ) -> Option<(Result<(), ErrorCode>, Option<&'static mut [u8]>, &'static mut [u8])>

Request an encryption/decryption Read more
Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> AES128CBC for VirtualAES128CCM<'a, A>

Source§

fn set_mode_aes128cbc(&self, encrypting: bool) -> Result<(), ErrorCode>

Call before AES128::crypt() to perform AES128CBC
Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> AES128CCM<'a> for VirtualAES128CCM<'a, A>

Source§

fn crypt( &self, buf: &'static mut [u8], a_off: usize, m_off: usize, m_len: usize, mic_len: usize, confidential: bool, encrypting: bool, ) -> Result<(), (ErrorCode, &'static mut [u8])>

Try to begin the encryption/decryption process

Source§

fn set_client(&self, client: &'a dyn CCMClient)

Set the client instance which will receive crypt_done() callbacks
Source§

fn set_key(&self, key: &[u8]) -> Result<(), ErrorCode>

Set the key to be used for CCM encryption
Source§

fn set_nonce(&self, nonce: &[u8]) -> Result<(), ErrorCode>

Set the nonce (length NONCE_LENGTH) to be used for CCM encryption
Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> AES128Ctr for VirtualAES128CCM<'a, A>

Source§

fn set_mode_aes128ctr(&self, encrypting: bool) -> Result<(), ErrorCode>

Call before AES128::crypt() to perform AES128Ctr
Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> AES128ECB for VirtualAES128CCM<'a, A>

Source§

fn set_mode_aes128ecb(&self, encrypting: bool) -> Result<(), ErrorCode>

Call before AES128::crypt() to perform AES128ECB
Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> Client<'a> for VirtualAES128CCM<'a, A>

Source§

fn crypt_done(&self, _: Option<&'static mut [u8]>, crypt_buf: &'static mut [u8])

Source§

impl<'a, A: AES128<'a> + AES128Ctr + AES128CBC + AES128ECB> ListNode<'a, VirtualAES128CCM<'a, A>> for VirtualAES128CCM<'a, A>

Source§

fn next(&'a self) -> &'a ListLink<'a, VirtualAES128CCM<'a, A>>

Auto Trait Implementations§

§

impl<'a, A> !Freeze for VirtualAES128CCM<'a, A>

§

impl<'a, A> !RefUnwindSafe for VirtualAES128CCM<'a, A>

§

impl<'a, A> !Send for VirtualAES128CCM<'a, A>

§

impl<'a, A> !Sync for VirtualAES128CCM<'a, A>

§

impl<'a, A> Unpin for VirtualAES128CCM<'a, A>

§

impl<'a, A> !UnwindSafe for VirtualAES128CCM<'a, A>

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.