pub trait BlockModeEncrypt: BlockSizeUser + Sized {
// Required method
fn encrypt_with_backend(
&mut self,
f: impl BlockModeEncClosure<BlockSize = Self::BlockSize>,
);
// Provided methods
fn encrypt_block_inout(&mut self, block: InOut<'_, '_, Block<Self>>) { ... }
fn encrypt_blocks_inout(&mut self, blocks: InOutBuf<'_, '_, Block<Self>>) { ... }
fn encrypt_block(&mut self, block: &mut Block<Self>) { ... }
fn encrypt_block_b2b(
&mut self,
in_block: &Block<Self>,
out_block: &mut Block<Self>,
) { ... }
fn encrypt_blocks(&mut self, blocks: &mut [Block<Self>]) { ... }
fn encrypt_blocks_b2b(
&mut self,
in_blocks: &[Block<Self>],
out_blocks: &mut [Block<Self>],
) -> Result<(), NotEqualError> { ... }
fn encrypt_padded_inout<'out, P: Padding>(
self,
data: InOutBufReserved<'_, 'out, u8>,
) -> Result<&'out [u8], PadError> { ... }
fn encrypt_padded<P: Padding>(
self,
buf: &mut [u8],
msg_len: usize,
) -> Result<&[u8], PadError> { ... }
fn encrypt_padded_b2b<'a, P: Padding>(
self,
msg: &[u8],
out_buf: &'a mut [u8],
) -> Result<&'a [u8], PadError> { ... }
fn encrypt_padded_vec<P: Padding>(self, msg: &[u8]) -> Vec<u8> { ... }
}Expand description
Encrypt-only functionality for block ciphers and modes with mutable access to self.
The main use case for this trait is blocks modes, but it also can be used
for hardware cryptographic engines which require &mut self access to an
underlying hardware peripheral.
Required Methods§
Sourcefn encrypt_with_backend(
&mut self,
f: impl BlockModeEncClosure<BlockSize = Self::BlockSize>,
)
fn encrypt_with_backend( &mut self, f: impl BlockModeEncClosure<BlockSize = Self::BlockSize>, )
Encrypt data using backend provided to the rank-2 closure.
Provided Methods§
Sourcefn encrypt_block_inout(&mut self, block: InOut<'_, '_, Block<Self>>)
fn encrypt_block_inout(&mut self, block: InOut<'_, '_, Block<Self>>)
Encrypt single inout block.
Sourcefn encrypt_blocks_inout(&mut self, blocks: InOutBuf<'_, '_, Block<Self>>)
fn encrypt_blocks_inout(&mut self, blocks: InOutBuf<'_, '_, Block<Self>>)
Encrypt inout blocks.
Sourcefn encrypt_block(&mut self, block: &mut Block<Self>)
fn encrypt_block(&mut self, block: &mut Block<Self>)
Encrypt single block in-place.
Sourcefn encrypt_block_b2b(
&mut self,
in_block: &Block<Self>,
out_block: &mut Block<Self>,
)
fn encrypt_block_b2b( &mut self, in_block: &Block<Self>, out_block: &mut Block<Self>, )
Encrypt in_block and write result to out_block.
Sourcefn encrypt_blocks(&mut self, blocks: &mut [Block<Self>])
fn encrypt_blocks(&mut self, blocks: &mut [Block<Self>])
Encrypt blocks in-place.
Sourcefn encrypt_blocks_b2b(
&mut self,
in_blocks: &[Block<Self>],
out_blocks: &mut [Block<Self>],
) -> Result<(), NotEqualError>
fn encrypt_blocks_b2b( &mut self, in_blocks: &[Block<Self>], out_blocks: &mut [Block<Self>], ) -> Result<(), NotEqualError>
Encrypt blocks buffer-to-buffer.
§Errors
Returns NotEqualError if provided in_blocks and out_blocks
have different lengths.
Sourcefn encrypt_padded_inout<'out, P: Padding>(
self,
data: InOutBufReserved<'_, 'out, u8>,
) -> Result<&'out [u8], PadError>
Available on crate feature block-padding only.
fn encrypt_padded_inout<'out, P: Padding>( self, data: InOutBufReserved<'_, 'out, u8>, ) -> Result<&'out [u8], PadError>
block-padding only.Sourcefn encrypt_padded<P: Padding>(
self,
buf: &mut [u8],
msg_len: usize,
) -> Result<&[u8], PadError>
Available on crate feature block-padding only.
fn encrypt_padded<P: Padding>( self, buf: &mut [u8], msg_len: usize, ) -> Result<&[u8], PadError>
block-padding only.Sourcefn encrypt_padded_b2b<'a, P: Padding>(
self,
msg: &[u8],
out_buf: &'a mut [u8],
) -> Result<&'a [u8], PadError>
Available on crate feature block-padding only.
fn encrypt_padded_b2b<'a, P: Padding>( self, msg: &[u8], out_buf: &'a mut [u8], ) -> Result<&'a [u8], PadError>
block-padding only.Sourcefn encrypt_padded_vec<P: Padding>(self, msg: &[u8]) -> Vec<u8>
Available on crate features block-padding and alloc only.
fn encrypt_padded_vec<P: Padding>(self, msg: &[u8]) -> Vec<u8>
block-padding and alloc only.Pad msg with padding algorithm P, encrypt it into a newly allocated Vec,
and return the resulting ciphertext vector.
§Panics
If NoPadding is used with a message size that is not a multiple of the cipher block size.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.