From cbfacbc31ff80e7cfbd808620bb52f82dd91f49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B6=BE=E7=80=AC=E6=A1=83=E6=A1=83?= Date: Wed, 2 Sep 2026 03:19:06 +0800 Subject: [PATCH] Upgrade dependencies to latest stable zip 0.6.6 -> 8.6.0 (the 0.6 line is unmaintained), aes 0.8 -> 0.9 (BlockCipherDecrypt trait replaces BlockDecrypt), sha2 0.10 -> 0.11 (Array no longer formats as hex; local hex_digest helpers). Outputs are byte-identical across the upgrade: full golden corpus and Android corpus sidecars all pass. --- Cargo.lock | 143 +++++++++++++++---------- Cargo.toml | 6 +- senbei-android-crypto/src/protector.rs | 5 +- senbei-android-elf/src/restore.rs | 13 ++- senbei-android-engine/src/extract.rs | 11 +- senbei-cli/tests/android_samples.rs | 6 +- senbei-io/src/android.rs | 15 ++- senbei-wasm/Cargo.lock | 143 +++++++++++++++---------- 8 files changed, 222 insertions(+), 120 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 35c098c..634342f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,12 +10,12 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" -version = "0.8.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +checksum = "35f0f96ce78e38c3dc6d8948aa8163d06385be74000f3c7a95bf1eef35d3ea32" dependencies = [ - "cfg-if", "cipher", + "cpubits", "cpufeatures", ] @@ -33,11 +33,11 @@ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -46,12 +46,6 @@ version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "cfg-if" version = "1.0.4" @@ -60,9 +54,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ "crypto-common", "inout", @@ -81,10 +75,22 @@ dependencies = [ ] [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "const-oid" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "cpubits" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" + +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" dependencies = [ "libc", ] @@ -98,29 +104,23 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-utils" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" - [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "typenum", + "hybrid-array", ] [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", + "const-oid", "crypto-common", ] @@ -130,6 +130,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "errno" version = "0.3.14" @@ -181,16 +187,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.4.3" @@ -213,6 +209,31 @@ dependencies = [ "scroll", ] +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "hybrid-array" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" +dependencies = [ + "typenum", +] + +[[package]] +name = "indexmap" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb" +dependencies = [ + "equivalent", + "hashbrown", +] + [[package]] name = "indicatif" version = "0.18.6" @@ -228,11 +249,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -535,9 +556,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", "cpufeatures", @@ -611,6 +632,12 @@ dependencies = [ "syn 3.0.4", ] +[[package]] +name = "typed-path" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" + [[package]] name = "typenum" version = "1.20.1" @@ -635,12 +662,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "walkdir" version = "2.5.0" @@ -836,14 +857,16 @@ dependencies = [ [[package]] name = "zip" -version = "0.6.6" +version = "8.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b" dependencies = [ - "byteorder", "crc32fast", - "crossbeam-utils", "flate2", + "indexmap", + "memchr", + "typed-path", + "zopfli", ] [[package]] @@ -857,3 +880,15 @@ name = "zmij" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] diff --git a/Cargo.toml b/Cargo.toml index d539d14..bc5afe4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ rust-version = "1.85" license = "AGPL-3.0-only" [workspace.dependencies] -aes = "0.8" +aes = "0.9" anyhow = "1" flate2 = "1" goblin = "0.10" @@ -33,7 +33,7 @@ memmap2 = "0.9" owo-colors = "4" serde = { version = "1", features = ["derive"] } serde_json = "1" -sha2 = "0.10" +sha2 = "0.11" tempfile = "3" thiserror = "2" walkdir = "2" @@ -42,7 +42,7 @@ windows = { version = "0.62", features = [ "Win32_System_Console", "Win32_System_SystemInformation", ] } -zip = { version = "0.6.6", default-features = false, features = ["deflate"] } +zip = { version = "8", default-features = false, features = ["deflate"] } senbei-android-crypto = { path = "senbei-android-crypto" } senbei-android-elf = { path = "senbei-android-elf" } senbei-android-engine = { path = "senbei-android-engine" } diff --git a/senbei-android-crypto/src/protector.rs b/senbei-android-crypto/src/protector.rs index 49fe6c9..7954ecc 100644 --- a/senbei-android-crypto/src/protector.rs +++ b/senbei-android-crypto/src/protector.rs @@ -1,7 +1,7 @@ //! Cryptographic and compression primitives used by the Android protector. use aes::Aes256; -use aes::cipher::{Block, BlockDecrypt, KeyInit}; +use aes::cipher::{BlockCipherDecrypt, KeyInit}; const RECORD_SIZE: usize = 0x5c; @@ -582,7 +582,8 @@ pub fn transform_segment( for chunk in transformed[..aligned_size].chunks_exact_mut(16) { let mut ciphertext = [0_u8; 16]; ciphertext.copy_from_slice(chunk); - cipher.decrypt_block(Block::::from_mut_slice(chunk)); + // chunk is exactly one block (chunks_exact_mut(16)). + cipher.decrypt_block(chunk.try_into().expect("chunk is one block")); for (byte, prior) in chunk.iter_mut().zip(previous) { *byte ^= prior; } diff --git a/senbei-android-elf/src/restore.rs b/senbei-android-elf/src/restore.rs index e311318..b8b54be 100644 --- a/senbei-android-elf/src/restore.rs +++ b/senbei-android-elf/src/restore.rs @@ -183,7 +183,7 @@ fn read_file(path: &Path) -> Result> { fn sha256_bytes(data: &[u8]) -> String { let mut digest = Sha256::new(); digest.update(data); - format!("{:x}", digest.finalize()) + hex_digest(&digest.finalize()) } fn sha256_file(path: &Path) -> Result { @@ -199,7 +199,7 @@ fn sha256_file(path: &Path) -> Result { } digest.update(&buffer[..read]); } - Ok(format!("{:x}", digest.finalize())) + Ok(hex_digest(&digest.finalize())) } fn copy_range(source: &[u8], output: &mut File, size: usize, path: &Path) -> Result<()> { @@ -1480,3 +1480,12 @@ pub fn restore_libil2cpp(options: &RestoreOptions) -> Result { elapsed_seconds: started.elapsed().as_secs_f64(), }) } +/// Lowercase hex of a digest output (sha2 0.11's `Array` no longer formats as +/// hex directly). +fn hex_digest(data: &[u8]) -> String { + let mut out = String::with_capacity(data.len() * 2); + for byte in data { + out.push_str(&format!("{byte:02x}")); + } + out +} diff --git a/senbei-android-engine/src/extract.rs b/senbei-android-engine/src/extract.rs index c79c598..2663ebd 100644 --- a/senbei-android-engine/src/extract.rs +++ b/senbei-android-engine/src/extract.rs @@ -525,5 +525,14 @@ fn absolute(path: &Path) -> Result { fn sha256(data: &[u8]) -> String { let mut digest = Sha256::new(); digest.update(data); - format!("{:x}", digest.finalize()) + hex_digest(&digest.finalize()) +} +/// Lowercase hex of a digest output (sha2 0.11's `Array` no longer formats as +/// hex directly). +fn hex_digest(data: &[u8]) -> String { + let mut out = String::with_capacity(data.len() * 2); + for byte in data { + out.push_str(&format!("{byte:02x}")); + } + out } diff --git a/senbei-cli/tests/android_samples.rs b/senbei-cli/tests/android_samples.rs index 2d223e0..f6a13d2 100644 --- a/senbei-cli/tests/android_samples.rs +++ b/senbei-cli/tests/android_samples.rs @@ -77,7 +77,11 @@ fn sha256_hex(data: &[u8]) -> String { use sha2::Digest; let mut digest = sha2::Sha256::new(); digest.update(data); - format!("{:x}", digest.finalize()) + let mut out = String::with_capacity(64); + for byte in digest.finalize() { + out.push_str(&format!("{byte:02x}")); + } + out } /// `.golden.so.sha256` next to `input`. diff --git a/senbei-io/src/android.rs b/senbei-io/src/android.rs index 4dfb249..d23c1d0 100644 --- a/senbei-io/src/android.rs +++ b/senbei-io/src/android.rs @@ -108,7 +108,7 @@ pub fn restore_so_file(input: &Path, dest: &Path, verbose: bool) -> Result String { let mut digest = Sha256::new(); digest.update(data); - format!("{:x}", digest.finalize()) + hex_digest(&digest.finalize()) } /// Restore an il2cpp metadata blob (Android seeded permutation first, then the @@ -217,7 +217,7 @@ pub fn restore_package( for index in 0..archive.len() { let (name, is_dir) = { let entry = archive.by_index(index)?; - (entry.enclosed_name().map(PathBuf::from), entry.is_dir()) + (entry.enclosed_name(), entry.is_dir()) }; if is_dir { continue; @@ -256,7 +256,7 @@ pub fn restore_package( for nested_index in 0..nested_archive.len() { let (entry_name, is_dir) = { let entry = nested_archive.by_index(nested_index)?; - (entry.enclosed_name().map(PathBuf::from), entry.is_dir()) + (entry.enclosed_name(), entry.is_dir()) }; if !is_dir { let Some(entry_name) = entry_name else { @@ -430,3 +430,12 @@ fn extract_entry( std::fs::write(&destination, &output)?; Ok(destination) } +/// Lowercase hex of a digest output (sha2 0.11's `Array` no longer formats as +/// hex directly). +fn hex_digest(data: &[u8]) -> String { + let mut out = String::with_capacity(data.len() * 2); + for byte in data { + out.push_str(&format!("{byte:02x}")); + } + out +} diff --git a/senbei-wasm/Cargo.lock b/senbei-wasm/Cargo.lock index d57a7fe..a9c013f 100644 --- a/senbei-wasm/Cargo.lock +++ b/senbei-wasm/Cargo.lock @@ -10,12 +10,12 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" -version = "0.8.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +checksum = "35f0f96ce78e38c3dc6d8948aa8163d06385be74000f3c7a95bf1eef35d3ea32" dependencies = [ - "cfg-if", "cipher", + "cpubits", "cpufeatures", ] @@ -33,11 +33,11 @@ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -46,12 +46,6 @@ version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "cfg-if" version = "1.0.4" @@ -60,9 +54,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ "crypto-common", "inout", @@ -91,10 +85,22 @@ dependencies = [ ] [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "const-oid" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "cpubits" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" + +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" dependencies = [ "libc", ] @@ -108,29 +114,23 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-utils" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" - [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "typenum", + "hybrid-array", ] [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", + "const-oid", "crypto-common", ] @@ -140,6 +140,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "errno" version = "0.3.14" @@ -191,16 +197,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.4.3" @@ -223,6 +219,31 @@ dependencies = [ "scroll", ] +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "hybrid-array" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" +dependencies = [ + "typenum", +] + +[[package]] +name = "indexmap" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb" +dependencies = [ + "equivalent", + "hashbrown", +] + [[package]] name = "indicatif" version = "0.18.6" @@ -238,11 +259,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -546,9 +567,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", "cpufeatures", @@ -622,6 +643,12 @@ dependencies = [ "syn 3.0.4", ] +[[package]] +name = "typed-path" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" + [[package]] name = "typenum" version = "1.20.1" @@ -646,12 +673,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "walkdir" version = "2.5.0" @@ -847,14 +868,16 @@ dependencies = [ [[package]] name = "zip" -version = "0.6.6" +version = "8.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b" dependencies = [ - "byteorder", "crc32fast", - "crossbeam-utils", "flate2", + "indexmap", + "memchr", + "typed-path", + "zopfli", ] [[package]] @@ -868,3 +891,15 @@ name = "zmij" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +]