Skip to main content

KeyIvInit

Trait KeyIvInit 

pub trait KeyIvInit:
    Sized
    + KeySizeUser
    + IvSizeUser {
    // Required method
    fn new(key: &Array<u8, Self::KeySize>, iv: &Array<u8, Self::IvSize>) -> Self;

    // Provided methods
    fn new_from_slices(key: &[u8], iv: &[u8]) -> Result<Self, InvalidLength> { ... }
    fn generate_key<R>(rng: &mut R) -> Array<u8, Self::KeySize>
       where R: CryptoRng { ... }
    fn generate_iv<R>(rng: &mut R) -> Array<u8, Self::IvSize>
       where R: CryptoRng { ... }
    fn generate_key_iv<R>(
        rng: &mut R,
    ) -> (Array<u8, Self::KeySize>, Array<u8, Self::IvSize>)
       where R: CryptoRng { ... }
}
Expand description

Types which can be initialized from a key and initialization vector (nonce).

Required Methods§

fn new(key: &Array<u8, Self::KeySize>, iv: &Array<u8, Self::IvSize>) -> Self

Create new value from fixed length key and nonce.

Provided Methods§

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

Create new value from variable length key and nonce.

§Errors

Returns [InvalidLength] in the event that key and/or iv are not the expected length.

fn generate_key<R>(rng: &mut R) -> Array<u8, Self::KeySize>
where R: CryptoRng,

👎Deprecated since 0.2.0:

use the Generate trait impl on Key instead

DEPRECATED: generate random key using the provided [CryptoRng].

Instead, you can now use the [Generate] trait directly with the [Key] type:

let key = Key::generate_from_rng(rng);

fn generate_iv<R>(rng: &mut R) -> Array<u8, Self::IvSize>
where R: CryptoRng,

👎Deprecated since 0.2.0:

use the Generate trait impl on Iv instead

DEPRECATED: generate random IV using the provided [CryptoRng].

Instead, you can now use the [Generate] trait directly with the [Iv] type:

let iv = Iv::generate_from_rng(rng);

fn generate_key_iv<R>( rng: &mut R, ) -> (Array<u8, Self::KeySize>, Array<u8, Self::IvSize>)
where R: CryptoRng,

👎Deprecated since 0.2.0:

use the Generate trait impls on Key and Iv instead

DEPRECATED: generate random key and IV using the provided [CryptoRng].

Instead, you can now use the [Generate] trait directly with the [Key] and [Iv] types:

let key = Key::generate_from_rng(rng);
let iv = Iv::generate_from_rng(rng);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<T> KeyIvInit for StreamCipherCoreWrapper<T>
where T: KeyIvInit + StreamCipherCore, <T as BlockSizeUser>::BlockSize: BlockSizes,

Source§

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

Implementors§

Source§

impl<R: Rounds> KeyIvInit for ChaChaCore<R, Ietf>

§

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