diff --git a/src/mini.rs b/src/mini.rs index 23cdd4c..d049a18 100644 --- a/src/mini.rs +++ b/src/mini.rs @@ -21,6 +21,7 @@ use super::{ pub const MINI_PREFIX_SIZE: usize = MiniFormatPrefix::SERIALIZE_SIZE; /// This is a mini cocoon for a convenient and cool encryption. +#[derive(Clone)] pub struct MiniCocoon { key: Zeroizing<[u8; KEY_SIZE]>, rng: StdRng, @@ -449,6 +450,20 @@ mod test { MiniCocoon::from_key(&[1; 32], &[0; 32]); } + #[test] + fn mini_cocoon_clone() { + let mut cocoon = MiniCocoon::from_password(b"password", &[0; 32]); + let cloned_cocoon = cocoon.clone(); + const DATA: &'static [u8] = b"my-sercet-data"; + + // To check whether MiniCocoon gets cloned properly + let wrapped = cocoon.wrap(DATA).unwrap(); + drop(cocoon); + + let unwrapped = cloned_cocoon.unwrap(&wrapped).unwrap(); + assert_eq!(&unwrapped, DATA); + } + #[test] fn mini_cocoon_encrypt() { let mut cocoon = MiniCocoon::from_password(b"password", &[0; 32]);