[][src]Trait idea::BlockCipher

pub trait BlockCipher {
    type KeySize: ArrayLength<u8>;
    type BlockSize: ArrayLength<u8>;
    type ParBlocks: ArrayLength<GenericArray<u8, Self::BlockSize>>;
    fn new(key: &GenericArray<u8, Self::KeySize>) -> Self;
fn encrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>);
fn decrypt_block(&self, block: &mut GenericArray<u8, Self::BlockSize>); fn new_varkey(key: &[u8]) -> Result<Self, InvalidKeyLength> { ... }
fn encrypt_blocks(
        &self,
        blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>
    ) { ... }
fn decrypt_blocks(
        &self,
        blocks: &mut GenericArray<GenericArray<u8, Self::BlockSize>, Self::ParBlocks>
    ) { ... } }

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

Associated Types

type KeySize: ArrayLength<u8>

Key size in bytes with which cipher guaranteed to be initialized

type BlockSize: ArrayLength<u8>

Size of the block in bytes

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

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

Loading content...

Required methods

fn new(key: &GenericArray<u8, Self::KeySize>) -> Self

Create new block cipher instance from key with fixed size.

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

Encrypt block in-place

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

Decrypt block in-place

Loading content...

Provided methods

fn new_varkey(key: &[u8]) -> Result<Self, InvalidKeyLength>

Create new block cipher instance from key with variable size.

Default implementation will accept only keys with length equal to KeySize, but some ciphers can accept range of key lengths.

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.

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.

Loading content...

Implementors

impl BlockCipher for Idea[src]

type KeySize = U16

type BlockSize = U8

type ParBlocks = U1

Loading content...