#![cfg(feature = "aes-crypto")] use std::io::{self, Read}; use zip::ZipArchive; const SECRET_CONTENT: &str = "Lorem ipsum dolor sit amet"; const PASSWORD: &[u8] = b"helloworld"; #[test] fn aes256_encrypted_uncompressed_file() { let mut v = Vec::new(); v.extend_from_slice(include_bytes!("data/aes_archive.zip")); let mut archive = ZipArchive::new(io::Cursor::new(v)).expect("couldn't open test zip file"); let mut file = archive .by_name_decrypt("secret_data_256_uncompressed", PASSWORD) .expect("couldn't find file in archive") .expect("invalid password"); assert_eq!("secret_data_256_uncompressed", file.name()); let mut content = String::new(); file.read_to_string(&mut content) .expect("couldn't read encrypted file"); assert_eq!(SECRET_CONTENT, content); } #[test] fn aes256_encrypted_file() { let mut v = Vec::new(); v.extend_from_slice(include_bytes!("data/aes_archive.zip")); let mut archive = ZipArchive::new(io::Cursor::new(v)).expect("couldn't open test zip file"); let mut file = archive .by_name_decrypt("secret_data_256", PASSWORD) .expect("couldn't find file in archive") .expect("invalid password"); assert_eq!("secret_data_256", file.name()); let mut content = String::new(); file.read_to_string(&mut content) .expect("couldn't read encrypted and compressed file"); assert_eq!(SECRET_CONTENT, content); } #[test] fn aes192_encrypted_file() { let mut v = Vec::new(); v.extend_from_slice(include_bytes!("data/aes_archive.zip")); let mut archive = ZipArchive::new(io::Cursor::new(v)).expect("couldn't open test zip file"); let mut file = archive .by_name_decrypt("secret_data_192", PASSWORD) .expect("couldn't find file in archive") .expect("invalid password"); assert_eq!("secret_data_192", file.name()); let mut content = String::new(); file.read_to_string(&mut content) .expect("couldn't read encrypted file"); assert_eq!(SECRET_CONTENT, content); } #[test] fn aes128_encrypted_file() { let mut v = Vec::new(); v.extend_from_slice(include_bytes!("data/aes_archive.zip")); let mut archive = ZipArchive::new(io::Cursor::new(v)).expect("couldn't open test zip file"); let mut file = archive .by_name_decrypt("secret_data_128", PASSWORD) .expect("couldn't find file in archive") .expect("invalid password"); assert_eq!("secret_data_128", file.name()); let mut content = String::new(); file.read_to_string(&mut content) .expect("couldn't read encrypted file"); assert_eq!(SECRET_CONTENT, content); }