Struct aes_gcm::AesGcm

source ·
pub struct AesGcm<Aes, NonceSize>where
    Aes: BlockCipher<BlockSize = U16> + BlockEncrypt,
    Aes::ParBlocks: ArrayLength<Block<Aes>>,
    NonceSize: ArrayLength<u8>,{ /* private fields */ }
Expand description

AES-GCM: generic over an underlying AES implementation and nonce size.

This type is generic to support substituting alternative AES implementations (e.g. embedded hardware implementations)

It is NOT intended to be instantiated with any block cipher besides AES! Doing so runs the risk of unintended cryptographic properties!

The N generic parameter can be used to instantiate AES-GCM with other nonce sizes, however it’s recommended to use it with typenum::U12, the default of 96-bits.

If in doubt, use the built-in Aes128Gcm and Aes256Gcm type aliases.

Trait Implementations§

source§

impl<Aes, NonceSize> AeadCore for AesGcm<Aes, NonceSize>where Aes: NewBlockCipher + BlockCipher<BlockSize = U16> + BlockEncrypt, Aes::ParBlocks: ArrayLength<Block<Aes>>, NonceSize: ArrayLength<u8>,

§

type NonceSize = NonceSize

The length of a nonce.
§

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

The maximum length of the nonce.
§

type CiphertextOverhead = UTerm

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

impl<Aes, NonceSize> AeadInPlace for AesGcm<Aes, NonceSize>where Aes: NewBlockCipher + BlockCipher<BlockSize = U16> + BlockEncrypt, Aes::ParBlocks: ArrayLength<Block<Aes>>, NonceSize: ArrayLength<u8>,

source§

fn encrypt_in_place_detached( &self, nonce: &Nonce<Self::NonceSize>, associated_data: &[u8], buffer: &mut [u8] ) -> Result<Tag, Error>

Encrypt the data in-place, returning the authentication tag
source§

fn decrypt_in_place_detached( &self, nonce: &Nonce<Self::NonceSize>, associated_data: &[u8], buffer: &mut [u8], tag: &Tag ) -> Result<(), Error>

Decrypt the message in-place, returning an error in the event the provided authentication tag does not match the given ciphertext (i.e. ciphertext is modified/unauthentic)
source§

fn encrypt_in_place( &self, nonce: &GenericArray<u8, Self::NonceSize>, associated_data: &[u8], buffer: &mut dyn Buffer ) -> Result<(), Error>

Encrypt the given buffer containing a plaintext message in-place. Read more
source§

fn decrypt_in_place( &self, nonce: &GenericArray<u8, Self::NonceSize>, associated_data: &[u8], buffer: &mut dyn Buffer ) -> Result<(), Error>

Decrypt the message in-place, returning an error in the event the provided authentication tag does not match the given ciphertext. Read more
source§

impl<Aes, NonceSize> Clone for AesGcm<Aes, NonceSize>where Aes: BlockCipher<BlockSize = U16> + BlockEncrypt + Clone, Aes::ParBlocks: ArrayLength<Block<Aes>>, NonceSize: ArrayLength<u8> + Clone,

source§

fn clone(&self) -> AesGcm<Aes, NonceSize>

Returns a copy 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<Aes, NonceSize> From<Aes> for AesGcm<Aes, NonceSize>where Aes: NewBlockCipher + BlockCipher<BlockSize = U16> + BlockEncrypt, Aes::ParBlocks: ArrayLength<Block<Aes>>, NonceSize: ArrayLength<u8>,

source§

fn from(cipher: Aes) -> Self

Converts to this type from the input type.
source§

impl<Aes, NonceSize> NewAead for AesGcm<Aes, NonceSize>where Aes: NewBlockCipher + BlockCipher<BlockSize = U16> + BlockEncrypt, Aes::ParBlocks: ArrayLength<Block<Aes>>, NonceSize: ArrayLength<u8>,

§

type KeySize = <Aes as NewBlockCipher>::KeySize

The size of the key array required by this algorithm.
source§

fn new(key: &BlockCipherKey<Aes>) -> Self

Create a new AEAD instance with the given key.
source§

fn new_from_slice(key: &[u8]) -> Result<Self, Error>where Self: Sized,

Create new AEAD instance from key given as a byte slice.. Read more
source§

fn generate_key( rng: impl CryptoRng + RngCore ) -> GenericArray<u8, Self::KeySize>

Generate a random key for this AEAD using the provided CryptoRng.

Auto Trait Implementations§

§

impl<Aes, NonceSize> RefUnwindSafe for AesGcm<Aes, NonceSize>where Aes: RefUnwindSafe, NonceSize: RefUnwindSafe,

§

impl<Aes, NonceSize> Send for AesGcm<Aes, NonceSize>where Aes: Send, NonceSize: Send,

§

impl<Aes, NonceSize> Sync for AesGcm<Aes, NonceSize>where Aes: Sync, NonceSize: Sync,

§

impl<Aes, NonceSize> Unpin for AesGcm<Aes, NonceSize>where Aes: Unpin, NonceSize: Unpin,

§

impl<Aes, NonceSize> UnwindSafe for AesGcm<Aes, NonceSize>where Aes: UnwindSafe, NonceSize: UnwindSafe,

Blanket Implementations§

source§

impl<Alg> Aead for Algwhere Alg: AeadInPlace,

source§

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

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

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

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

impl<Alg> AeadMut for Algwhere Alg: AeadMutInPlace,

source§

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

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

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

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

impl<Alg> AeadMutInPlace for Algwhere Alg: AeadInPlace,

source§

fn encrypt_in_place( &mut self, nonce: &GenericArray<u8, <Alg as AeadCore>::NonceSize>, associated_data: &[u8], buffer: &mut impl Buffer ) -> Result<(), Error>

Encrypt the given buffer containing a plaintext message in-place. Read more
source§

fn encrypt_in_place_detached( &mut self, nonce: &GenericArray<u8, <Alg as AeadCore>::NonceSize>, associated_data: &[u8], buffer: &mut [u8] ) -> Result<GenericArray<u8, <Alg as AeadCore>::TagSize>, Error>

Encrypt the data in-place, returning the authentication tag
source§

fn decrypt_in_place( &mut self, nonce: &GenericArray<u8, <Alg as AeadCore>::NonceSize>, associated_data: &[u8], buffer: &mut impl Buffer ) -> Result<(), Error>

Decrypt the message in-place, returning an error in the event the provided authentication tag does not match the given ciphertext. Read more
source§

fn decrypt_in_place_detached( &mut self, nonce: &GenericArray<u8, <Alg as AeadCore>::NonceSize>, associated_data: &[u8], buffer: &mut [u8], tag: &GenericArray<u8, <Alg as AeadCore>::TagSize> ) -> Result<(), Error>

Decrypt the data in-place, returning an error in the event the provided authentication tag does not match the given ciphertext (i.e. ciphertext is modified/unauthentic)
source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.