BlockCipher

Trait BlockCipher 

Source
pub trait BlockCipher {
    type BlockSize: ArrayLength<u8>;
    type ParBlocks: ArrayLength<GenericArray<u8, Self::BlockSize>>;

    // Required methods
    fn encrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>);
    fn decrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>);

    // Provided methods
    fn encrypt_blocks(
        &self,
        blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>,
    ) { ... }
    fn encrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>]) { ... }
    fn decrypt_blocks(
        &self,
        blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>,
    ) { ... }
    fn decrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>]) { ... }
}
Expand description

The trait which defines in-place encryption and decryption over single block or several blocks in parallel.

Required Associated Types§

Source

type BlockSize: ArrayLength<u8>

Size of the block in bytes

Source

type ParBlocks: ArrayLength<GenericArray<u8, Self::BlockSize>>

Number of blocks which can be processed in parallel by cipher implementation

Required Methods§

Source

fn encrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>)

Encrypt block in-place

Source

fn decrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>)

Decrypt block in-place

Provided Methods§

Source

fn encrypt_blocks( &self, blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>, )

Encrypt several blocks in parallel using instruction level parallelism if possible.

If ParBlocks equals to 1 it’s equivalent to encrypt_block.

Source

fn encrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>])

Encrypt a slice of blocks, leveraging parallelism when available.

Source

fn decrypt_blocks( &self, blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>, )

Decrypt several blocks in parallel using instruction level parallelism if possible.

If ParBlocks equals to 1 it’s equivalent to decrypt_block.

Source

fn decrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>])

Decrypt a slice of blocks, leveraging parallelism when available.

Implementations on Foreign Types§

Source§

impl<Alg> BlockCipher for &Alg
where Alg: BlockCipher,

Implementors§