Skip to main content

SymmetricCipher

Trait SymmetricCipher 

Source
pub trait SymmetricCipher: Sized {
    type Key: Zeroize + AsRef<[u8]> + AsMut<[u8]> + Clone;
    type Nonce: AsRef<[u8]> + AsMut<[u8]> + Clone;
    type Ciphertext: AsRef<[u8]> + AsMut<[u8]> + Clone;
    type EncryptOperation<'a>: EncryptOperation<'a, Self>
       where Self: 'a;
    type DecryptOperation<'a>: DecryptOperation<'a, Self>
       where Self: 'a;

    // Required methods
    fn name() -> &'static str;
    fn encrypt(&self) -> Self::EncryptOperation<'_>;
    fn decrypt(&self) -> Self::DecryptOperation<'_>;
    fn generate_key<R: RngCore + CryptoRng>(rng: &mut R) -> Result<Self::Key>;
    fn generate_nonce<R: RngCore + CryptoRng>(
        rng: &mut R,
    ) -> Result<Self::Nonce>;
    fn derive_key_from_bytes(bytes: &[u8]) -> Result<Self::Key>;
}
Expand description

Trait for symmetric encryption algorithms with enhanced type safety

Required Associated Types§

Source

type Key: Zeroize + AsRef<[u8]> + AsMut<[u8]> + Clone

Key type with appropriate algorithm binding

Source

type Nonce: AsRef<[u8]> + AsMut<[u8]> + Clone

Nonce type with appropriate size constraint

Source

type Ciphertext: AsRef<[u8]> + AsMut<[u8]> + Clone

Ciphertext output type

Source

type EncryptOperation<'a>: EncryptOperation<'a, Self> where Self: 'a

Operation type for encryption operations

Source

type DecryptOperation<'a>: DecryptOperation<'a, Self> where Self: 'a

Operation type for decryption operations

Required Methods§

Source

fn name() -> &'static str

Returns the symmetric cipher algorithm name

Source

fn encrypt(&self) -> Self::EncryptOperation<'_>

Begin encryption operation

Source

fn decrypt(&self) -> Self::DecryptOperation<'_>

Begin decryption operation

Source

fn generate_key<R: RngCore + CryptoRng>(rng: &mut R) -> Result<Self::Key>

Generate a new random key

Source

fn generate_nonce<R: RngCore + CryptoRng>(rng: &mut R) -> Result<Self::Nonce>

Generate a new random nonce

Source

fn derive_key_from_bytes(bytes: &[u8]) -> Result<Self::Key>

Derive a key from arbitrary bytes

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§