pub struct Gcm<B: BlockCipher + Zeroize + ZeroizeOnDrop> { /* private fields */ }
Expand description
GCM mode implementation
Implementations§
Source§impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> Gcm<B>
impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> Gcm<B>
Sourcepub fn new<const N: usize>(cipher: B, nonce: &Nonce<N>) -> Result<Self>where
Nonce<N>: AesGcmCompatible,
pub fn new<const N: usize>(cipher: B, nonce: &Nonce<N>) -> Result<Self>where
Nonce<N>: AesGcmCompatible,
Creates a new GCM mode instance with default (16-byte) tag.
Sourcepub fn new_with_tag_len<const N: usize>(
cipher: B,
nonce: &Nonce<N>,
tag_len: usize,
) -> Result<Self>where
Nonce<N>: AesGcmCompatible,
pub fn new_with_tag_len<const N: usize>(
cipher: B,
nonce: &Nonce<N>,
tag_len: usize,
) -> Result<Self>where
Nonce<N>: AesGcmCompatible,
Creates a new GCM mode instance with specified tag length (in bytes).
tag_len must be between 1 and 16 (inclusive).
Trait Implementations§
Source§impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> AuthenticatedCipher for Gcm<B>
impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> AuthenticatedCipher for Gcm<B>
Source§impl<B: Clone + BlockCipher + Zeroize + ZeroizeOnDrop> Clone for Gcm<B>
impl<B: Clone + BlockCipher + Zeroize + ZeroizeOnDrop> Clone for Gcm<B>
Source§impl<'a, B: BlockCipher + Zeroize + ZeroizeOnDrop> DecryptOperation<'a, Gcm<B>> for GcmDecryptOperation<'a, B>
impl<'a, B: BlockCipher + Zeroize + ZeroizeOnDrop> DecryptOperation<'a, Gcm<B>> for GcmDecryptOperation<'a, B>
Source§fn with_nonce(self, nonce: &'a <Gcm<B> as SymmetricCipher>::Nonce) -> Self
fn with_nonce(self, nonce: &'a <Gcm<B> as SymmetricCipher>::Nonce) -> Self
Set the nonce for decryption
Source§fn decrypt(
self,
ciphertext: &'a <Gcm<B> as SymmetricCipher>::Ciphertext,
) -> Result<Vec<u8>, CoreError>
fn decrypt( self, ciphertext: &'a <Gcm<B> as SymmetricCipher>::Ciphertext, ) -> Result<Vec<u8>, CoreError>
Set ciphertext and execute decryption
Source§impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> Drop for Gcm<B>
impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> Drop for Gcm<B>
Source§impl<'a, B: BlockCipher + Zeroize + ZeroizeOnDrop> EncryptOperation<'a, Gcm<B>> for GcmEncryptOperation<'a, B>
impl<'a, B: BlockCipher + Zeroize + ZeroizeOnDrop> EncryptOperation<'a, Gcm<B>> for GcmEncryptOperation<'a, B>
Source§fn with_nonce(self, nonce: &'a <Gcm<B> as SymmetricCipher>::Nonce) -> Self
fn with_nonce(self, nonce: &'a <Gcm<B> as SymmetricCipher>::Nonce) -> Self
Set the nonce for encryption
Source§impl<B: BlockCipher + Clone + Zeroize + ZeroizeOnDrop> SecureZeroingType for Gcm<B>
impl<B: BlockCipher + Clone + Zeroize + ZeroizeOnDrop> SecureZeroingType for Gcm<B>
Source§impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> SymmetricCipher for Gcm<B>
impl<B: BlockCipher + Zeroize + ZeroizeOnDrop> SymmetricCipher for Gcm<B>
Source§type Key = SecretBytes<32>
type Key = SecretBytes<32>
Key type with appropriate algorithm binding
Source§type Ciphertext = Ciphertext
type Ciphertext = Ciphertext
Ciphertext output type
Source§type EncryptOperation<'a> = GcmEncryptOperation<'a, B>
where
Self: 'a
type EncryptOperation<'a> = GcmEncryptOperation<'a, B> where Self: 'a
Operation type for encryption operations
Source§type DecryptOperation<'a> = GcmDecryptOperation<'a, B>
where
Self: 'a
type DecryptOperation<'a> = GcmDecryptOperation<'a, B> where Self: 'a
Operation type for decryption operations
Source§fn encrypt(&self) -> <Self as SymmetricCipher>::EncryptOperation<'_>
fn encrypt(&self) -> <Self as SymmetricCipher>::EncryptOperation<'_>
Begin encryption operation
Source§fn decrypt(&self) -> <Self as SymmetricCipher>::DecryptOperation<'_>
fn decrypt(&self) -> <Self as SymmetricCipher>::DecryptOperation<'_>
Begin decryption operation
Source§fn generate_key<R: RngCore + CryptoRng>(
rng: &mut R,
) -> Result<<Self as SymmetricCipher>::Key, CoreError>
fn generate_key<R: RngCore + CryptoRng>( rng: &mut R, ) -> Result<<Self as SymmetricCipher>::Key, CoreError>
Generate a new random key
Source§fn generate_nonce<R: RngCore + CryptoRng>(
rng: &mut R,
) -> Result<<Self as SymmetricCipher>::Nonce, CoreError>
fn generate_nonce<R: RngCore + CryptoRng>( rng: &mut R, ) -> Result<<Self as SymmetricCipher>::Nonce, CoreError>
Generate a new random nonce
Source§fn derive_key_from_bytes(
bytes: &[u8],
) -> Result<<Self as SymmetricCipher>::Key, CoreError>
fn derive_key_from_bytes( bytes: &[u8], ) -> Result<<Self as SymmetricCipher>::Key, CoreError>
Derive a key from arbitrary bytes
Auto Trait Implementations§
impl<B> Freeze for Gcm<B>where
B: Freeze,
impl<B> RefUnwindSafe for Gcm<B>where
B: RefUnwindSafe,
impl<B> Send for Gcm<B>where
B: Send,
impl<B> Sync for Gcm<B>where
B: Sync,
impl<B> Unpin for Gcm<B>where
B: Unpin,
impl<B> UnwindSafe for Gcm<B>where
B: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more