Struct gost_modes::GostCbc [−][src]
pub struct GostCbc<C, P = GostPadding, Z = U1> where
C: BlockCipher + NewBlockCipher,
C::BlockSize: IsLessOrEqual<U255>,
Z: ArrayLength<Block<C>> + Unsigned + Mul<C::BlockSize> + IsGreater<U0> + IsLessOrEqual<U255>,
Prod<Z, C::BlockSize>: ArrayLength<u8>,
P: Padding, { /* fields omitted */ }
Cipher Block Chaining (CBC) mode of operation as defined in GOST R 34.13-2015
Type parameters:
C
: block cipher.P
: padding algorithm. Default:GostPadding
.Z
: nonce length in block sizes. Default: 1.
With default parameters this mode is fully equivalent to the Cbc
mode defined
in the block-modes
crate.
Trait Implementations
impl<C, P, Z> BlockMode<C, P> for GostCbc<C, P, Z> where
C: BlockCipher + BlockEncrypt + BlockDecrypt + NewBlockCipher,
C::BlockSize: IsLessOrEqual<U255>,
Z: ArrayLength<Block<C>> + Unsigned + Mul<C::BlockSize> + IsGreater<U0> + IsLessOrEqual<U255>,
Prod<Z, C::BlockSize>: ArrayLength<u8>,
P: Padding,
[src]
impl<C, P, Z> BlockMode<C, P> for GostCbc<C, P, Z> where
C: BlockCipher + BlockEncrypt + BlockDecrypt + NewBlockCipher,
C::BlockSize: IsLessOrEqual<U255>,
Z: ArrayLength<Block<C>> + Unsigned + Mul<C::BlockSize> + IsGreater<U0> + IsLessOrEqual<U255>,
Prod<Z, C::BlockSize>: ArrayLength<u8>,
P: Padding,
[src]type IvSize = Prod<Z, C::BlockSize>
Initialization Vector size.
fn new(cipher: C, iv: &GenericArray<u8, Self::IvSize>) -> Self
[src]
fn encrypt_blocks(&mut self, blocks: &mut [Block<C>])
[src]
fn decrypt_blocks(&mut self, blocks: &mut [Block<C>])
[src]
pub fn new_fix(
key: &GenericArray<u8, <C as NewBlockCipher>::KeySize>,
iv: &GenericArray<u8, Self::IvSize>
) -> Self
[src]
key: &GenericArray<u8, <C as NewBlockCipher>::KeySize>,
iv: &GenericArray<u8, Self::IvSize>
) -> Self
pub fn new_from_slices(
key: &[u8],
iv: &[u8]
) -> Result<Self, InvalidKeyIvLength>
[src]
key: &[u8],
iv: &[u8]
) -> Result<Self, InvalidKeyIvLength>
pub fn encrypt(
self,
buffer: &mut [u8],
pos: usize
) -> Result<&[u8], BlockModeError>
[src]
self,
buffer: &mut [u8],
pos: usize
) -> Result<&[u8], BlockModeError>
pub fn decrypt(self, buffer: &mut [u8]) -> Result<&[u8], BlockModeError>
[src]
pub fn encrypt_vec(self, plaintext: &[u8]) -> Vec<u8, Global>
[src]
pub fn decrypt_vec(
self,
ciphertext: &[u8]
) -> Result<Vec<u8, Global>, BlockModeError>
[src]
self,
ciphertext: &[u8]
) -> Result<Vec<u8, Global>, BlockModeError>
impl<C: Clone, P: Clone, Z: Clone> Clone for GostCbc<C, P, Z> where
C: BlockCipher + NewBlockCipher,
C::BlockSize: IsLessOrEqual<U255>,
Z: ArrayLength<Block<C>> + Unsigned + Mul<C::BlockSize> + IsGreater<U0> + IsLessOrEqual<U255>,
Prod<Z, C::BlockSize>: ArrayLength<u8>,
P: Padding,
[src]
impl<C: Clone, P: Clone, Z: Clone> Clone for GostCbc<C, P, Z> where
C: BlockCipher + NewBlockCipher,
C::BlockSize: IsLessOrEqual<U255>,
Z: ArrayLength<Block<C>> + Unsigned + Mul<C::BlockSize> + IsGreater<U0> + IsLessOrEqual<U255>,
Prod<Z, C::BlockSize>: ArrayLength<u8>,
P: Padding,
[src]Auto Trait Implementations
impl<C, P, Z> RefUnwindSafe for GostCbc<C, P, Z> where
C: RefUnwindSafe,
P: RefUnwindSafe,
<Z as ArrayLength<GenericArray<u8, <C as BlockCipher>::BlockSize>>>::ArrayType: RefUnwindSafe,
impl<C, P, Z> RefUnwindSafe for GostCbc<C, P, Z> where
C: RefUnwindSafe,
P: RefUnwindSafe,
<Z as ArrayLength<GenericArray<u8, <C as BlockCipher>::BlockSize>>>::ArrayType: RefUnwindSafe,
impl<C, P, Z> Unpin for GostCbc<C, P, Z> where
C: Unpin,
P: Unpin,
<Z as ArrayLength<GenericArray<u8, <C as BlockCipher>::BlockSize>>>::ArrayType: Unpin,
impl<C, P, Z> Unpin for GostCbc<C, P, Z> where
C: Unpin,
P: Unpin,
<Z as ArrayLength<GenericArray<u8, <C as BlockCipher>::BlockSize>>>::ArrayType: Unpin,
impl<C, P, Z> UnwindSafe for GostCbc<C, P, Z> where
C: UnwindSafe,
P: UnwindSafe,
<Z as ArrayLength<GenericArray<u8, <C as BlockCipher>::BlockSize>>>::ArrayType: UnwindSafe,
impl<C, P, Z> UnwindSafe for GostCbc<C, P, Z> where
C: UnwindSafe,
P: UnwindSafe,
<Z as ArrayLength<GenericArray<u8, <C as BlockCipher>::BlockSize>>>::ArrayType: UnwindSafe,