pub trait Cipher<'c> {
const BLOCK_SIZE: usize;
const REQUIRES_PADDING: bool = false;
// Required methods
fn key(&self) -> &[u8];
fn iv(&self) -> &[u8];
fn set_algomode(&self, p: Cryp);
// Provided methods
fn prepare_key(&self, _p: Cryp) { ... }
fn init_phase_blocking<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &Cryp<'_, T, DmaIn, DmaOut>,
) { ... }
async fn init_phase<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &mut Cryp<'_, T, DmaIn, DmaOut>,
)
where DmaIn: DmaIn<T>,
DmaOut: DmaOut<T> { ... }
fn pre_final(
&self,
_p: Cryp,
_dir: Direction,
_padding_len: usize,
) -> [u32; 4] { ... }
fn post_final_blocking<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &Cryp<'_, T, DmaIn, DmaOut>,
_dir: Direction,
_int_data: &mut [u8; 16],
_temp1: [u32; 4],
_padding_mask: [u8; 16],
) { ... }
async fn post_final<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &mut Cryp<'_, T, DmaIn, DmaOut>,
_dir: Direction,
_int_data: &mut [u8; 16],
_temp1: [u32; 4],
_padding_mask: [u8; 16],
)
where DmaIn: DmaIn<T>,
DmaOut: DmaOut<T> { ... }
fn get_header_block(&self) -> &[u8] { ... }
}
Expand description
This trait encapsulates all cipher-specific behavior/
Required Associated Constants§
sourceconst BLOCK_SIZE: usize
const BLOCK_SIZE: usize
Processing block size. Determined by the processor and the algorithm.
Provided Associated Constants§
sourceconst REQUIRES_PADDING: bool = false
const REQUIRES_PADDING: bool = false
Indicates whether the cipher requires the application to provide padding.
If true
, no partial blocks will be accepted (a panic will occur).
Required Methods§
sourcefn set_algomode(&self, p: Cryp)
fn set_algomode(&self, p: Cryp)
Sets the processor algorithm mode according to the associated cipher.
Provided Methods§
sourcefn prepare_key(&self, _p: Cryp)
fn prepare_key(&self, _p: Cryp)
Performs any key preparation within the processor, if necessary.
sourcefn init_phase_blocking<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &Cryp<'_, T, DmaIn, DmaOut>,
)
fn init_phase_blocking<T: Instance, DmaIn, DmaOut>( &self, _p: Cryp, _cryp: &Cryp<'_, T, DmaIn, DmaOut>, )
Performs any cipher-specific initialization.
sourceasync fn init_phase<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &mut Cryp<'_, T, DmaIn, DmaOut>,
)
async fn init_phase<T: Instance, DmaIn, DmaOut>( &self, _p: Cryp, _cryp: &mut Cryp<'_, T, DmaIn, DmaOut>, )
Performs any cipher-specific initialization.
sourcefn pre_final(&self, _p: Cryp, _dir: Direction, _padding_len: usize) -> [u32; 4]
fn pre_final(&self, _p: Cryp, _dir: Direction, _padding_len: usize) -> [u32; 4]
Called prior to processing the last data block for cipher-specific operations.
sourcefn post_final_blocking<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &Cryp<'_, T, DmaIn, DmaOut>,
_dir: Direction,
_int_data: &mut [u8; 16],
_temp1: [u32; 4],
_padding_mask: [u8; 16],
)
fn post_final_blocking<T: Instance, DmaIn, DmaOut>( &self, _p: Cryp, _cryp: &Cryp<'_, T, DmaIn, DmaOut>, _dir: Direction, _int_data: &mut [u8; 16], _temp1: [u32; 4], _padding_mask: [u8; 16], )
Called after processing the last data block for cipher-specific operations.
sourceasync fn post_final<T: Instance, DmaIn, DmaOut>(
&self,
_p: Cryp,
_cryp: &mut Cryp<'_, T, DmaIn, DmaOut>,
_dir: Direction,
_int_data: &mut [u8; 16],
_temp1: [u32; 4],
_padding_mask: [u8; 16],
)
async fn post_final<T: Instance, DmaIn, DmaOut>( &self, _p: Cryp, _cryp: &mut Cryp<'_, T, DmaIn, DmaOut>, _dir: Direction, _int_data: &mut [u8; 16], _temp1: [u32; 4], _padding_mask: [u8; 16], )
Called after processing the last data block for cipher-specific operations.
sourcefn get_header_block(&self) -> &[u8]
fn get_header_block(&self) -> &[u8]
Returns the AAD header block as required by the cipher.