Struct mc_oblivious_aes_gcm::AesGcm
source · pub struct AesGcm<Aes, NonceSize> { /* 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
NonceSize: ArrayLength<u8>,
impl<Aes, NonceSize> AeadCore for AesGcm<Aes, NonceSize>where
NonceSize: ArrayLength<u8>,
source§impl<Aes, NonceSize> AeadInPlace for AesGcm<Aes, NonceSize>where
Aes: BlockCipher + BlockSizeUser<BlockSize = U16> + BlockEncrypt,
NonceSize: ArrayLength<u8>,
impl<Aes, NonceSize> AeadInPlace for AesGcm<Aes, NonceSize>where
Aes: BlockCipher + BlockSizeUser<BlockSize = U16> + BlockEncrypt,
NonceSize: ArrayLength<u8>,
source§fn encrypt_in_place_detached(
&self,
nonce: &Nonce<NonceSize>,
associated_data: &[u8],
buffer: &mut [u8]
) -> Result<Tag, Error>
fn encrypt_in_place_detached(
&self,
nonce: &Nonce<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<NonceSize>,
associated_data: &[u8],
buffer: &mut [u8],
tag: &Tag
) -> Result<(), Error>
fn decrypt_in_place_detached(
&self,
nonce: &Nonce<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§impl<Aes, NonceSize> CtAeadDecrypt for AesGcm<Aes, NonceSize>where
Aes: BlockCipher + BlockSizeUser<BlockSize = U16> + BlockEncrypt,
NonceSize: ArrayLength<u8>,
impl<Aes, NonceSize> CtAeadDecrypt for AesGcm<Aes, NonceSize>where
Aes: BlockCipher + BlockSizeUser<BlockSize = U16> + BlockEncrypt,
NonceSize: ArrayLength<u8>,
source§fn ct_decrypt_in_place_detached(
&self,
nonce: &GenericArray<u8, NonceSize>,
associated_data: &[u8],
buffer: &mut [u8],
tag: &Tag
) -> CtDecryptResult
fn ct_decrypt_in_place_detached(
&self,
nonce: &GenericArray<u8, NonceSize>,
associated_data: &[u8],
buffer: &mut [u8],
tag: &Tag
) -> CtDecryptResult
A constant time version of the original https://docs.rs/aes-gcm/0.6.0/src/aes_gcm/lib.rs.html#251
source§impl<Aes, NonceSize> From<Aes> for AesGcm<Aes, NonceSize>where
Aes: BlockSizeUser<BlockSize = U16> + BlockEncrypt,
impl<Aes, NonceSize> From<Aes> for AesGcm<Aes, NonceSize>where
Aes: BlockSizeUser<BlockSize = U16> + BlockEncrypt,
source§impl<Aes, NonceSize> KeyInit for AesGcm<Aes, NonceSize>where
Aes: BlockSizeUser<BlockSize = U16> + BlockEncrypt + KeyInit,
impl<Aes, NonceSize> KeyInit for AesGcm<Aes, NonceSize>where
Aes: BlockSizeUser<BlockSize = U16> + BlockEncrypt + KeyInit,
§fn new_from_slice(key: &[u8]) -> Result<Self, InvalidLength>
fn new_from_slice(key: &[u8]) -> Result<Self, InvalidLength>
Create new value from variable size key.
source§impl<Aes, NonceSize> KeySizeUser for AesGcm<Aes, NonceSize>where
Aes: KeySizeUser,
impl<Aes, NonceSize> KeySizeUser for AesGcm<Aes, NonceSize>where
Aes: KeySizeUser,
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,
impl<Alg> Aead for Algwhere
Alg: AeadInPlace,
source§impl<Alg> AeadMut for Algwhere
Alg: AeadMutInPlace,
impl<Alg> AeadMut for Algwhere
Alg: AeadMutInPlace,
source§impl<Alg> AeadMutInPlace for Algwhere
Alg: AeadInPlace,
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>
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>
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>
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>
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)