ovunto_security/traits/
encrypt.rs1use crate::{CipherMessage, FromBytes, IntoBytes, Key, Result};
2
3pub trait Encrypt: Sized {
4 type Encrypted;
5
6 fn encrypt(self, key: Key) -> Result<Self::Encrypted>;
7}
8
9pub trait Decrypt<T>: Sized {
10 fn decrypt(self, key: Key) -> Result<T>;
11}
12
13impl<T: IntoBytes> Encrypt for T {
14 type Encrypted = CipherMessage;
15
16 fn encrypt(self, key: Key) -> Result<Self::Encrypted> {
17 let bytes = self.into_bytes();
18 key.encrypt(bytes.as_slice())
19 }
20}
21
22impl<T: FromBytes> Decrypt<T> for CipherMessage {
23 fn decrypt(self, key: Key) -> Result<T> {
24 let bytes = key.decrypt(self)?;
25
26 T::try_from_bytes(bytes.as_slice())
27 }
28}