DynamicEme

Struct DynamicEme 

Source
pub struct DynamicEme<C: BlockCipher> { /* private fields */ }
Expand description

EME block mode instance with dynamic block size.

There is no fixed BlockSize for this mode. The BlockSize is determined by the length of the given input, which must be between 16 and 2048 bytes and also divisible by 16.

Implementations§

Source§

impl<C: BlockEncryptMut + BlockCipher + BlockSizeUser<BlockSize = U16>> DynamicEme<C>

Source

pub fn encrypt_block_mut(&mut self, block: &mut [u8])

Encrypt block in-place.

§Panics
  • When block length is greater than 2048
  • When block length is not divisible by 16
Source

pub fn encrypt_blocks_inout_mut(&mut self, chunks: InOutBuf<'_, '_, Block<C>>)

Encrypt chunks in-place.

§Panics
  • When chunks length is greater than 128 blocks (2048 bytes)
Source

pub fn encrypt_blocks_mut(&mut self, blocks: &mut [Block<C>])

Encrypt blocks in-place.

§Panics
  • When blocks length is greater than 128 blocks (2048 bytes)
Source

pub fn encrypt_padded_inout_mut<'inp, 'out, P: Padding<C::BlockSize>>( &mut self, data: InOutBufReserved<'inp, 'out, u8>, ) -> Result<&'out [u8], PadError>

Available on crate feature block-padding only.

Pad input and encrypt. Returns resulting ciphertext slice.

§Errors

Returns PadError if length of output buffer is not sufficient.

§Panics
  • When data length + padding is greater than 2048 bytes
Source

pub fn encrypt_padded_mut<'b, P: Padding<C::BlockSize>>( &mut self, buf: &'b mut [u8], msg_len: usize, ) -> Result<&'b [u8], PadError>

Available on crate feature block-padding only.

Pad input and encrypt in-place. Returns resulting ciphertext slice.

§Errors

Returns PadError if length of output buffer is not sufficient.

§Panics
  • When buf length + padding is greater than 2048 bytes
Source

pub fn encrypt_padded_b2b_mut<'a, P: Padding<C::BlockSize>>( &mut self, msg: &[u8], out_buf: &'a mut [u8], ) -> Result<&'a [u8], PadError>

Available on crate feature block-padding only.

Pad input and encrypt buffer-to-buffer. Returns resulting ciphertext slice.

§Errors

Returns PadError if length of output buffer is not sufficient.

§Panics
  • When msg length + padding is greater than 2048 bytes
Source§

impl<C: BlockEncryptMut + BlockDecryptMut + BlockCipher + BlockSizeUser<BlockSize = U16>> DynamicEme<C>

Source

pub fn decrypt_block_mut(&mut self, block: &mut [u8])

Decrypt block in-place.

§Panics
  • When block length is greater than 2048
  • When block length is not divisible by 16
Source

pub fn decrypt_blocks_inout_mut(&mut self, chunks: InOutBuf<'_, '_, Block<C>>)

Decrypt chunks in-place.

§Panics
  • When chunks length is greater than 128 blocks (2048 bytes)
Source

pub fn decrypt_blocks_mut(&mut self, blocks: &mut [Block<C>])

Decrypt blocks in-place.

§Panics
  • When blocks length is greater than 128 blocks (2048 bytes)
Source

pub fn decrypt_padded_inout_mut<'inp, 'out, P: Padding<C::BlockSize>>( self, data: InOutBuf<'inp, 'out, u8>, ) -> Result<&'out [u8], UnpadError>

Available on crate feature block-padding only.

Decrypt input and unpad it. Returns resulting ciphertext slice.

§Errors

Returns UnpadError if padding is malformed or if input length is not multiple of C::BlockSize.

§Panics
  • When data length is greater than 2048
  • When data length is not divisible by 16
Source

pub fn decrypt_padded_mut<P: Padding<C::BlockSize>>( self, buf: &mut [u8], ) -> Result<&[u8], UnpadError>

Available on crate feature block-padding only.

Decrypt input and unpad it in-place. Returns resulting ciphertext slice.

§Errors

Returns UnpadError if padding is malformed or if input length is not multiple of C::BlockSize.

§Panics
  • When buf length is greater than 2048
  • When buf length is not divisible by 16
Source

pub fn decrypt_padded_b2b_mut<'a, P: Padding<C::BlockSize>>( self, in_buf: &[u8], out_buf: &'a mut [u8], ) -> Result<&'a [u8], UnpadError>

Available on crate feature block-padding only.

Decrypt input and unpad it buffer-to-buffer. Returns resulting ciphertext slice.

§Errors

Returns UnpadError if padding is malformed or if input length is not multiple of C::BlockSize.

§Panics
  • When in_buf length is greater than 2048
  • When in_buf length is not divisible by 16

Trait Implementations§

Source§

impl<C> AlgorithmName for DynamicEme<C>
where C: BlockCipher + BlockSizeUser<BlockSize = U16> + AlgorithmName,

Source§

fn write_alg_name(f: &mut Formatter<'_>) -> Result

Write algorithm name into f.
Source§

impl<C: Clone + BlockCipher> Clone for DynamicEme<C>

Source§

fn clone(&self) -> DynamicEme<C>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C> Debug for DynamicEme<C>
where C: BlockCipher + BlockSizeUser<BlockSize = U16> + AlgorithmName,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C> InnerIvInit for DynamicEme<C>
where C: BlockCipher + BlockSizeUser<BlockSize = U16>,

Source§

fn inner_iv_init(cipher: C, iv: &Iv<Self>) -> Self

Initialize value using inner and iv array.
Source§

fn inner_iv_slice_init( inner: Self::Inner, iv: &[u8], ) -> Result<Self, InvalidLength>

Initialize value using inner and iv slice.
Source§

impl<C> InnerUser for DynamicEme<C>
where C: BlockCipher + BlockSizeUser<BlockSize = U16>,

Source§

type Inner = C

Inner type.
Source§

impl<C> IvSizeUser for DynamicEme<C>
where C: BlockCipher + BlockSizeUser<BlockSize = U16>,

Source§

type IvSize = UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>

Initialization vector size in bytes.
Source§

fn iv_size() -> usize

Return IV size in bytes.
Source§

impl<C> IvState for DynamicEme<C>
where C: BlockCipher + BlockSizeUser<BlockSize = U16>,

Source§

fn iv_state(&self) -> Iv<Self>

Returns current IV state.

Auto Trait Implementations§

§

impl<C> Freeze for DynamicEme<C>

§

impl<C> RefUnwindSafe for DynamicEme<C>

§

impl<C> Send for DynamicEme<C>
where C: Send,

§

impl<C> Sync for DynamicEme<C>
where C: Sync,

§

impl<C> Unpin for DynamicEme<C>

§

impl<C> UnwindSafe for DynamicEme<C>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> KeyIvInit for T
where T: InnerIvInit, <T as InnerUser>::Inner: KeyInit,

Source§

fn new( key: &GenericArray<u8, <T as KeySizeUser>::KeySize>, iv: &GenericArray<u8, <T as IvSizeUser>::IvSize>, ) -> T

Create new value from fixed length key and nonce.
Source§

fn new_from_slices(key: &[u8], iv: &[u8]) -> Result<T, InvalidLength>

Create new value from variable length key and nonce.
Source§

impl<T> KeySizeUser for T
where T: InnerUser, <T as InnerUser>::Inner: KeySizeUser,

Source§

type KeySize = <<T as InnerUser>::Inner as KeySizeUser>::KeySize

Key size in bytes.
Source§

fn key_size() -> usize

Return key size in bytes.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.