logo
pub trait Padding {
    fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError>;
fn unpad(data: &[u8]) -> Result<&[u8], UnpadError>; 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

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().

Unpad given data by truncating it according to the used padding. In case of the malformed padding will return UnpadError

Provided methods

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.

Implementors