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§
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>>
Sourcefn encrypt<Data: Serialize>(
data: &Data,
key: &Key<Self::Cipher>,
) -> Result<Encrypted<Data>, Box<dyn Error>>
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]
Sourcefn decrypt<Data>(
encrypted: &Encrypted<Data>,
key: &GenericArray<u8, <Self::Cipher as KeySizeUser>::KeySize>,
) -> Result<Decrypted<Data>, Box<dyn Error>>
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
Sourcefn decrypt_exposed<Data>(
encrypted: &Encrypted<Data>,
key: &GenericArray<u8, <Self::Cipher as KeySizeUser>::KeySize>,
) -> Result<DecryptedExposed<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>>
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".