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", so this trait is not object safe.