From 7f641d23a32da92b0fc5203cff935baf45591785 Mon Sep 17 00:00:00 2001 From: Chris Hennick <4961925+Pr0methean@users.noreply.github.com> Date: Thu, 13 Jun 2024 22:29:22 -0700 Subject: [PATCH] chore: Bug fix: revert a change where crypto_header was incorrectly treated as an extra field --- src/write.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/write.rs b/src/write.rs index fddca7a1..0e615d13 100644 --- a/src/write.rs +++ b/src/write.rs @@ -944,9 +944,6 @@ impl ZipWriter { .unwrap_or(&Arc::new(vec![])) .clone(), }; - if let Some(EncryptWith::ZipCrypto { .. }) = options.encrypt_with { - extensions.add_extra_data(0, Box::new([0u8; 10]), false)?; - } let mut extra_data_end = header_end + extensions.extra_data.len() as u64; if options.alignment > 1 { let align = options.alignment as u64; @@ -981,12 +978,15 @@ impl ZipWriter { self.inner = GenericZipWriter::Storer(MaybeEncrypted::Aes(aeswriter)); } Some(EncryptWith::ZipCrypto(keys, ..)) => { - let zipwriter = crate::zipcrypto::ZipCryptoWriter { + let mut zipwriter = crate::zipcrypto::ZipCryptoWriter { writer: mem::replace(&mut self.inner, Closed).unwrap(), buffer: vec![], keys, }; + let crypto_header = [0u8; 12]; + zipwriter.write_all(&crypto_header)?; + extra_data_end = zipwriter.writer.stream_position()?; self.inner = Storer(MaybeEncrypted::ZipCrypto(zipwriter)); } None => {}