diff --git a/Cargo.lock b/Cargo.lock index 156f9d482..0dd95e8f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,23 +10,12 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ - "crypto-common 0.1.7", - "generic-array", -] - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher 0.4.4", - "cpufeatures 0.2.17", + "crypto-common 0.2.2", + "inout", ] [[package]] @@ -35,20 +24,20 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138" dependencies = [ - "cipher 0.5.2", + "cipher", "cpubits", "cpufeatures 0.3.0", ] [[package]] name = "aes-gcm" -version = "0.10.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +checksum = "fdf011db2e21ce0d575593d749db5554b47fed37aff429e4dc50bc91ac93a028" dependencies = [ "aead", - "aes 0.8.4", - "cipher 0.4.4", + "aes", + "cipher", "ctr", "ghash", "subtle", @@ -1045,24 +1034,15 @@ dependencies = [ "half", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common 0.1.7", - "inout 0.1.4", -] - [[package]] name = "cipher" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer 0.12.1", "crypto-common 0.2.2", - "inout 0.2.2", + "inout", ] [[package]] @@ -1666,7 +1646,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", - "rand_core 0.6.4", "typenum", ] @@ -1676,7 +1655,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ + "getrandom 0.4.3", "hybrid-array", + "rand_core 0.10.1", ] [[package]] @@ -1720,11 +1701,11 @@ checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" [[package]] name = "ctr" -version = "0.9.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +checksum = "baaca1c4b237092596f64d571e9db6ce4109c4ef9742e27590f1709594461f21" dependencies = [ - "cipher 0.4.4", + "cipher", ] [[package]] @@ -2746,11 +2727,10 @@ dependencies = [ [[package]] name = "ghash" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +checksum = "2eecf2d5dc9b66b732b97707a0210906b1d30523eb773193ab777c0c84b3e8d5" dependencies = [ - "opaque-debug", "polyval", ] @@ -3550,15 +3530,6 @@ dependencies = [ "cfb", ] -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - [[package]] name = "inout" version = "0.2.2" @@ -5163,13 +5134,12 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +checksum = "7dfc63250416fea14f5749b90725916a6c903f599d51cb635aa7a52bfd03eede" dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "opaque-debug", + "cpubits", + "cpufeatures 0.3.0", "universal-hash", ] @@ -8467,12 +8437,12 @@ checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ - "crypto-common 0.1.7", - "subtle", + "crypto-common 0.2.2", + "ctutils", ] [[package]] @@ -9922,7 +9892,7 @@ version = "8.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b" dependencies = [ - "aes 0.9.1", + "aes", "bzip2", "constant_time_eq", "crc32fast", diff --git a/Cargo.toml b/Cargo.toml index c32147480..16261a76b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ clash-verge-i18n = { path = "crates/clash-verge-i18n" } clash-verge-limiter = { path = "crates/clash-verge-limiter" } tauri-plugin-clash-verge-sysinfo = { path = "crates/tauri-plugin-clash-verge-sysinfo" } -tauri = { version = "2.11.3" } +tauri = { version = "2.11.5" } tauri-plugin-clipboard-manager = "2.3.2" parking_lot = { version = "0.12.5", features = ["hardware-lock-elision"] } anyhow = "1.0.103" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 837bdec81..bb9c92f0c 100755 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -56,7 +56,7 @@ serde_yaml_ng = { workspace = true } smartstring = { workspace = true, features = ["serde"] } bitflags = { workspace = true } warp = { version = "0.4.3", features = ["server"] } -open = "5.3.5" +open = "5.3.6" dunce = "1.0.5" nanoid = "0.5" chrono = "0.4.45" @@ -83,7 +83,7 @@ tauri-plugin-deep-link = "2.4.9" tauri-plugin-window-state = "2.4.1" zip = "8.6.0" reqwest_dav = "0.3.3" -aes-gcm = { version = "0.10.3", features = ["std"] } +aes-gcm = { version = "0.11.0" } base64 = "0.22.1" getrandom = "0.4.3" futures = "0.3.32" @@ -101,7 +101,7 @@ async-trait = "0.1.89" clash_verge_service_ipc = { version = "2.3.2", features = [ "client", ], git = "https://github.com/clash-verge-rev/clash-verge-service-ipc" } -arc-swap = "1.9.1" +arc-swap = "1.9.2" tokio-rustls = "0.26.4" rustls = { version = "0.23.41", features = ["ring"] } webpki-roots = "1.0.8" diff --git a/src-tauri/src/config/encrypt.rs b/src-tauri/src/config/encrypt.rs index 0a82ba70d..63fbb46a0 100644 --- a/src-tauri/src/config/encrypt.rs +++ b/src-tauri/src/config/encrypt.rs @@ -1,6 +1,6 @@ use crate::utils::dirs::get_encryption_key; use aes_gcm::{ - Aes256Gcm, Key, + Aes256Gcm, aead::{Aead as _, KeyInit as _}, }; use base64::{Engine as _, engine::general_purpose::STANDARD}; @@ -16,33 +16,29 @@ tokio::task_local! { } /// Encrypt data -#[allow(deprecated)] pub fn encrypt_data(data: &str) -> Result> { let encryption_key = get_encryption_key()?; - let key = Key::::from_slice(&encryption_key); - let cipher = Aes256Gcm::new(key); + let cipher = Aes256Gcm::new_from_slice(&encryption_key)?; // Generate random nonce - let mut nonce = vec![0u8; NONCE_LENGTH]; + let mut nonce = [0u8; NONCE_LENGTH]; getrandom::fill(&mut nonce)?; // Encrypt data let ciphertext = cipher - .encrypt(nonce.as_slice().into(), data.as_bytes()) + .encrypt((&nonce).into(), data.as_bytes()) .map_err(|e| format!("Encryption failed: {e}"))?; // Concatenate nonce and ciphertext and encode them in base64 - let mut combined = nonce; + let mut combined = nonce.to_vec(); combined.extend(ciphertext); Ok(STANDARD.encode(combined)) } /// Decrypt data -#[allow(deprecated)] pub fn decrypt_data(encrypted: &str) -> Result> { let encryption_key = get_encryption_key()?; - let key = Key::::from_slice(&encryption_key); - let cipher = Aes256Gcm::new(key); + let cipher = Aes256Gcm::new_from_slice(&encryption_key)?; // Decode from base64 let data = STANDARD.decode(encrypted)?; if data.len() < NONCE_LENGTH { @@ -51,6 +47,7 @@ pub fn decrypt_data(encrypted: &str) -> Result