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§
Sourcetype BlockSize: ArrayLength<u8>
type BlockSize: ArrayLength<u8>
Size of the block in bytes
Sourcetype ParBlocks: ArrayLength<GenericArray<u8, Self::BlockSize>>
type ParBlocks: ArrayLength<GenericArray<u8, Self::BlockSize>>
Number of blocks which can be processed in parallel by cipher implementation
Required Methods§
Sourcefn encrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>)
fn encrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>)
Encrypt block in-place
Sourcefn decrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>)
fn decrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>)
Decrypt block in-place
Provided Methods§
Sourcefn encrypt_blocks(
&self,
blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>,
)
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.
Sourcefn encrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>])
fn encrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>])
Encrypt a slice of blocks, leveraging parallelism when available.
Sourcefn decrypt_blocks(
&self,
blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>,
)
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.
Sourcefn decrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>])
fn decrypt_slice(&self, blocks: &mut [GenericArray<u8, Self::BlockSize>])
Decrypt a slice of blocks, leveraging parallelism when available.