pub trait Padding {
// Required methods
fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError>;
fn unpad(data: &[u8]) -> Result<&[u8], UnpadError>;
// Provided method
fn pad(
buf: &mut [u8],
pos: usize,
block_size: usize,
) -> Result<&mut [u8], PadError> { ... }
}Expand description
Trait for padding messages divided into blocks
Required Methods§
Sourcefn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError>
fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError>
Pads block filled with data up to pos.
pos should be inside of the block and block must not be full, i.e.
pos < block.len() must be true. Otherwise method will return
PadError. Some potentially irreversible padding schemes can allow
padding of the full block, in this case aforementioned condition is
relaxed to pos <= block.len().
Provided Methods§
Sourcefn pad(
buf: &mut [u8],
pos: usize,
block_size: usize,
) -> Result<&mut [u8], PadError>
fn pad( buf: &mut [u8], pos: usize, block_size: usize, ) -> Result<&mut [u8], PadError>
Pads message with length pos in the provided buffer.
&buf[..pos] is perceived as the message, the buffer must contain
enough leftover space for padding: block_size - (pos % block_size)
extra bytes must be available. Otherwise method will return
PadError.
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.