Trait Encryption

Source
pub trait Encryption {
    type Cipher: Aead + AeadCore + KeyInit + KeySizeUser;
    type Scheme: Encoder + Decoder;

    // Provided methods
    fn encode<Data>(data: &Encrypted<Data>) -> Result<Vec<u8>, Box<dyn Error>> { ... }
    fn decode<Data>(data: &[u8]) -> Result<Encrypted<Data>, Box<dyn Error>> { ... }
    fn extract<'de, Data: Deserialize<'de> + Zeroize>(
        decrypted: &'de Decrypted<Data>,
    ) -> Result<Secret<Data>, Box<dyn Error>> { ... }
    fn extract_exposed<'de, Data: Deserialize<'de>>(
        decrypted: &'de DecryptedExposed<Data>,
    ) -> Result<Data, Box<dyn Error>> { ... }
    fn encrypt<Data: Serialize>(
        data: &Data,
        key: &Key<Self::Cipher>,
    ) -> Result<Encrypted<Data>, Box<dyn Error>> { ... }
    fn decrypt<Data>(
        encrypted: &Encrypted<Data>,
        key: &GenericArray<u8, <Self::Cipher as KeySizeUser>::KeySize>,
    ) -> Result<Decrypted<Data>, Box<dyn Error>> { ... }
    fn decrypt_exposed<Data>(
        encrypted: &Encrypted<Data>,
        key: &GenericArray<u8, <Self::Cipher as KeySizeUser>::KeySize>,
    ) -> Result<DecryptedExposed<Data>, Box<dyn Error>> { ... }
}
Expand description

general trait for encrypting serializable data

Required Associated Types§

Provided Methods§

Source

fn encode<Data>(data: &Encrypted<Data>) -> Result<Vec<u8>, Box<dyn Error>>

Source

fn decode<Data>(data: &[u8]) -> Result<Encrypted<Data>, Box<dyn Error>>

Source

fn extract<'de, Data: Deserialize<'de> + Zeroize>( decrypted: &'de Decrypted<Data>, ) -> Result<Secret<Data>, Box<dyn Error>>

Source

fn extract_exposed<'de, Data: Deserialize<'de>>( decrypted: &'de DecryptedExposed<Data>, ) -> Result<Data, Box<dyn Error>>

Source

fn encrypt<Data: Serialize>( data: &Data, key: &Key<Self::Cipher>, ) -> Result<Encrypted<Data>, Box<dyn Error>>

convert the data to it’s serialized form and then encypt it using [Cipher]

Source

fn decrypt<Data>( encrypted: &Encrypted<Data>, key: &GenericArray<u8, <Self::Cipher as KeySizeUser>::KeySize>, ) -> Result<Decrypted<Data>, Box<dyn Error>>

decrypt the data to it’s serialized form, pre-emptively wraps data in a Secret

Source

fn decrypt_exposed<Data>( encrypted: &Encrypted<Data>, key: &GenericArray<u8, <Self::Cipher as KeySizeUser>::KeySize>, ) -> Result<DecryptedExposed<Data>, Box<dyn Error>>

decrypt the data to it’s serialized form

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§