[][src]Trait aead::AeadMut

pub trait AeadMut {
    type NonceSize: ArrayLength<u8>;
    type TagSize: ArrayLength<u8>;
    type CiphertextOverhead: ArrayLength<u8> + Unsigned;
    fn encrypt<'msg, 'aad>(
        &mut self,
        nonce: &GenericArray<u8, Self::NonceSize>,
        plaintext: impl Into<Payload<'msg, 'aad>>
    ) -> Result<Vec<u8>, Error>;
fn decrypt<'msg, 'aad>(
        &mut self,
        nonce: &GenericArray<u8, Self::NonceSize>,
        ciphertext: impl Into<Payload<'msg, 'aad>>
    ) -> Result<Vec<u8>, Error>; }

Stateful Authenticated Encryption with Associated Data algorithm.

Associated Types

type NonceSize: ArrayLength<u8>

The length of a nonce.

type TagSize: ArrayLength<u8>

The maximum length of the nonce.

type CiphertextOverhead: ArrayLength<u8> + Unsigned

The upper bound amount of additional space required to support a ciphertext vs. a plaintext.

Loading content...

Required methods

fn encrypt<'msg, 'aad>(
    &mut self,
    nonce: &GenericArray<u8, Self::NonceSize>,
    plaintext: impl Into<Payload<'msg, 'aad>>
) -> Result<Vec<u8>, Error>

Encrypt the given plaintext payload, and return the resulting ciphertext as a vector of bytes.

The Payload type can be used to provide Additional Associated Data (AAD) along with the message: this is an optional bytestring which is not encrypted, but is authenticated along with the message. Failure to pass the same AAD that was used during encryption will cause decryption to fail, which is useful if you would like to "bind" the ciphertext to some other identifier, like a digital signature key or other identifier.

If you don't care about AAD and just want to encrypt a plaintext message, &[u8] will automatically be coerced into a Payload:

let plaintext = b"Top secret message, handle with care";
let ciphertext = cipher.encrypt(nonce, plaintext);

fn decrypt<'msg, 'aad>(
    &mut self,
    nonce: &GenericArray<u8, Self::NonceSize>,
    ciphertext: impl Into<Payload<'msg, 'aad>>
) -> Result<Vec<u8>, Error>

Decrypt the given ciphertext slice, and return the resulting plaintext as a vector of bytes.

See notes on Aead::encrypt() about allowable message payloads and Associated Additional Data (AAD).

If you have no AAD, you can call this as follows:

let ciphertext = b"...";
let plaintext = cipher.decrypt(nonce, ciphertext)?;
Loading content...

Implementors

impl<Algo: Aead> AeadMut for Algo[src]

A blanket implementation of the Stateful AEAD interface for Stateless AEAD implementations.

type NonceSize = Algo::NonceSize

type TagSize = Algo::TagSize

type CiphertextOverhead = Algo::CiphertextOverhead

fn encrypt<'msg, 'aad>(
    &mut self,
    nonce: &GenericArray<u8, Self::NonceSize>,
    plaintext: impl Into<Payload<'msg, 'aad>>
) -> Result<Vec<u8>, Error>
[src]

Encrypt the given plaintext slice, and return the resulting ciphertext as a vector of bytes.

fn decrypt<'msg, 'aad>(
    &mut self,
    nonce: &GenericArray<u8, Self::NonceSize>,
    ciphertext: impl Into<Payload<'msg, 'aad>>
) -> Result<Vec<u8>, Error>
[src]

Decrypt the given ciphertext slice, and return the resulting plaintext as a vector of bytes.

Loading content...