pub trait Decrypt { type Error: Error; fn decrypt( &mut self, buffer: impl Borrow<[u8]> ) -> Result<Vec<u8>, Self::Error>; }