diff --git a/Cargo.lock b/Cargo.lock index 8a97a6c..5dbd6a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,30 +10,30 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aead" -version = "0.5.2" +version = "0.6.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "6b657e772794c6b04730ea897b66a058ccd866c16d1967da05eeeecec39043fe" dependencies = [ - "crypto-common", - "generic-array 0.14.7", + "crypto-common 0.2.0", + "inout", ] [[package]] name = "aes" -version = "0.8.4" +version = "0.9.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +checksum = "04097e08a47d9ad181c2e1f4a5fabc9ae06ce8839a333ba9a949bcb0d31fd2a3" dependencies = [ - "cfg-if", "cipher", + "cpubits", "cpufeatures", ] [[package]] name = "aes-gcm" -version = "0.10.3" +version = "0.11.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +checksum = "e22c0c90bbe8d4f77c3ca9ddabe41a1f8382d6fc1f7cea89459d0f320371f972" dependencies = [ "aead", "aes", @@ -43,6 +43,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + [[package]] name = "async-compression" version = "0.4.37" @@ -100,6 +106,12 @@ dependencies = [ "fs_extra", ] +[[package]] +name = "base16ct" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" + [[package]] name = "base64" version = "0.22.1" @@ -124,16 +136,25 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f" +dependencies = [ + "hybrid-array", ] [[package]] name = "block-padding" -version = "0.3.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +checksum = "710f1dd022ef4e93f8a438b4ba958de7f64308434fa6a87104481645cc30068b" dependencies = [ - "generic-array 0.14.7", + "hybrid-array", ] [[package]] @@ -150,9 +171,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "cbc" -version = "0.1.2" +version = "0.2.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +checksum = "85742c5f1d0dda799d2e582c76b82b817d3e4d6434dd285e48e90ed0c963b667" dependencies = [ "cipher", ] @@ -189,11 +210,12 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "9002c8edb9b1e21938663da3489c9c4403bba2393997fb2ecbd401386c0e71dc" dependencies = [ - "crypto-common", + "block-buffer 0.11.0", + "crypto-common 0.2.0", "inout", ] @@ -206,6 +228,12 @@ dependencies = [ "cc", ] +[[package]] +name = "cmov" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0758edba32d61d1fd9f4d69491b47604b91ee2f7e6b33de7e54ca4ebe55dc3" + [[package]] name = "combine" version = "4.6.7" @@ -233,6 +261,12 @@ version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "core-foundation" version = "0.9.4" @@ -259,6 +293,12 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpubits" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef0c543070d296ea414df2dd7625d1b24866ce206709d8a4a424f28377f5861" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -277,26 +317,59 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crypto-bigint" +version = "0.7.0-rc.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cba9eeeb213f7fd29353032f71f7c173e5f6d95d85151cb3a47197b0ea7e8be7" +dependencies = [ + "cpubits", + "ctutils", + "getrandom 0.4.1", + "num-traits", + "rand_core 0.10.0", + "serdect", +] + [[package]] name = "crypto-common" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "generic-array 0.14.7", - "rand_core 0.6.4", + "generic-array", "typenum", ] [[package]] -name = "ctr" -version = "0.9.2" +name = "crypto-common" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +checksum = "211f05e03c7d03754740fd9e585de910a095d6b99f8bcfffdef8319fa02a8331" +dependencies = [ + "getrandom 0.4.1", + "hybrid-array", + "rand_core 0.10.0", +] + +[[package]] +name = "ctr" +version = "0.10.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65ea71550d18331d179854662ab330bb54306b9b56020d0466aae2a58f4e17c1" dependencies = [ "cipher", ] +[[package]] +name = "ctutils" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1005a6d4446f5120ef475ad3d2af2b30c49c2c9c6904258e3bb30219bebed5e4" +dependencies = [ + "cmov", +] + [[package]] name = "data-encoding" version = "2.10.0" @@ -318,8 +391,19 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "crypto-common", + "block-buffer 0.10.4", + "crypto-common 0.1.7", +] + +[[package]] +name = "digest" +version = "0.11.0-rc.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b42f1d9edf5207c137646b568a0168ca0ec25b7f9eaf7f9961da51a3d91cea" +dependencies = [ + "block-buffer 0.11.0", + "const-oid", + "crypto-common 0.2.0", "subtle", ] @@ -377,6 +461,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -491,16 +581,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "generic-array" -version = "1.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf57c49a95fd1fe24b90b3033bee6dc7e8f1288d51494cb44e627c295e38542" -dependencies = [ - "rustversion", - "typenum", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -529,12 +609,25 @@ dependencies = [ ] [[package]] -name = "ghash" -version = "0.5.1" +name = "getrandom" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "rand_core 0.10.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "ghash" +version = "0.6.0-rc.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f484be0236661c5ba22d445ed75d3624ba5544541c647549f867fb576e55b2a2" dependencies = [ - "opaque-debug", "polyval", ] @@ -557,12 +650,27 @@ dependencies = [ "tracing", ] +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + [[package]] name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hex" version = "0.4.3" @@ -571,11 +679,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "ef451d73f36d8a3f93ad32c332ea01146c9650e1ec821a9b0e46c01277d544f8" dependencies = [ - "digest", + "digest 0.11.0-rc.11", ] [[package]] @@ -617,6 +725,15 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +[[package]] +name = "hybrid-array" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b229d73f5803b562cc26e4da0396c8610a4ee209f4fac8fa4f8d709166dc45" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "1.8.1" @@ -762,6 +879,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "idevice" version = "0.1.52" @@ -808,17 +931,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.16.1", + "serde", + "serde_core", ] [[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 = [ "block-padding", - "generic-array 0.14.7", + "hybrid-array", ] [[package]] @@ -850,7 +975,6 @@ dependencies = [ "hex", "hmac", "idevice", - "nab138_srp", "pbkdf2", "plist", "plist-macro", @@ -860,6 +984,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "srp", "thiserror 2.0.18", "tokio", "tokio-tungstenite", @@ -921,6 +1046,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" version = "0.2.180" @@ -991,20 +1122,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "nab138_srp" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "587a7a2ae38ab9a818f42c12b02a7ad5d738006f78f3b53a9f28da91fe13411d" -dependencies = [ - "base64", - "digest", - "generic-array 1.3.5", - "lazy_static", - "num-bigint", - "subtle", -] - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1014,31 +1131,12 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -1054,12 +1152,6 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "openssl-probe" version = "0.2.1" @@ -1068,11 +1160,11 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "pbkdf2" -version = "0.12.2" +version = "0.13.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "c8dfa4e14084d963d35bfb4cdb38712cde78dcf83054c0e8b9b8e899150f374e" dependencies = [ - "digest", + "digest 0.11.0-rc.11", "hmac", ] @@ -1117,13 +1209,12 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.2" +version = "0.7.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +checksum = "63641a86fddf4b5274f31c43734458ec7acd3133016dbaa37e4e247e1e9acd46" dependencies = [ - "cfg-if", + "cpubits", "cpufeatures", - "opaque-debug", "universal-hash", ] @@ -1151,6 +1242,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.106" @@ -1260,15 +1361,6 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", -] - [[package]] name = "rand_core" version = "0.9.5" @@ -1278,6 +1370,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" + [[package]] name = "reqwest" version = "0.13.1" @@ -1338,7 +1436,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a751633dcb95a6b1c954f0fa15c2afd9b4802640f8045432f68a1f4bde4b871" dependencies = [ - "hashbrown", + "hashbrown 0.16.1", "indexmap", "rootcause-internals", "rustc-hash", @@ -1480,6 +1578,12 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + [[package]] name = "serde" version = "1.0.228" @@ -1523,6 +1627,16 @@ dependencies = [ "zmij", ] +[[package]] +name = "serdect" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9af4a3e75ebd5599b30d4de5768e00b5095d518a79fefc3ecbaf77e665d1ec06" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -1531,18 +1645,18 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "7c5f3b1e2dc8aad28310d8410bd4d7e180eca65fca176c52ab00d364475d0024" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.11.0-rc.11", ] [[package]] @@ -1588,6 +1702,18 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "srp" +version = "0.7.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0b7d0b0d27b2475e779315c09af698ac9f6d40016bc011bf3fa0f0054ce38ed" +dependencies = [ + "crypto-bigint", + "crypto-common 0.2.0", + "digest 0.11.0-rc.11", + "subtle", +] + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -1973,12 +2099,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] -name = "universal-hash" -version = "0.5.1" +name = "unicode-xid" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.6.0-rc.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058482a494bb3c9c39447d8b40a3a0f38ebb3dccaf02c5a2d681e69035f8da11" dependencies = [ - "crypto-common", + "crypto-common 0.2.0", "subtle", ] @@ -2069,6 +2201,15 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.108" @@ -2128,6 +2269,40 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.10.0", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "web-sys" version = "0.3.85" @@ -2446,6 +2621,88 @@ name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.10.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" diff --git a/isideload/Cargo.toml b/isideload/Cargo.toml index 53a4db4..199e2ee 100644 --- a/isideload/Cargo.toml +++ b/isideload/Cargo.toml @@ -24,7 +24,7 @@ async-trait = "0.1.89" serde = "1.0.228" rand = "0.9.2" uuid = {version = "1.20.0", features = ["v4"] } -sha2 = "0.10.9" +sha2 = "0.11.0-rc.4" tracing = "0.1.44" tokio-tungstenite = { version = "0.28.0", features = ["rustls-tls-webpki-roots"] } rootcause = "0.11.1" @@ -32,10 +32,10 @@ futures-util = "0.3.31" serde_json = "1.0.149" base64 = "0.22.1" hex = "0.4.3" -srp = { package = "nab138_srp", version = "0.6.0" } -pbkdf2 = "0.12.2" -hmac = "0.12.1" -cbc = { version = "0.1.2", features = ["std"] } -aes = "0.8.4" -aes-gcm = "0.10.3" +srp = "0.7.0-rc.1" +pbkdf2 = "0.13.0-rc.9" +hmac = "0.13.0-rc.5" +cbc = { version = "0.2.0-rc.3", features = ["alloc"] } +aes = "0.9.0-rc.4" +aes-gcm = "0.11.0-rc.3" tokio = "1.49.0" diff --git a/isideload/src/auth/apple_account.rs b/isideload/src/auth/apple_account.rs index 135394a..2524cb8 100644 --- a/isideload/src/auth/apple_account.rs +++ b/isideload/src/auth/apple_account.rs @@ -12,19 +12,16 @@ use aes::{ Aes256, cipher::{block_padding::Pkcs7, consts::U16}, }; -use aes_gcm::{AeadInPlace, AesGcm, KeyInit, Nonce}; +use aes_gcm::{AeadInOut, AesGcm, KeyInit, Nonce}; use base64::{Engine, prelude::BASE64_STANDARD}; -use cbc::cipher::{BlockDecryptMut, KeyIvInit}; -use hmac::Mac; +use cbc::cipher::{BlockModeDecrypt, KeyIvInit}; +use hmac::{Hmac, Mac}; use plist::Dictionary; use plist_macro::plist; use reqwest::header::{HeaderMap, HeaderValue}; use rootcause::prelude::*; use sha2::{Digest, Sha256}; -use srp::{ - client::{SrpClient, SrpClientVerifier}, - groups::G_2048, -}; +use srp::{ClientVerifier, groups::G2048}; use tracing::{debug, info, warn}; pub struct AppleAccount { @@ -302,27 +299,27 @@ impl AppleAccount { // try to parse as json, if it fails, just bail with the text if let Ok(json) = serde_json::from_str::(&text) && let Some(service_errors) = json.get("serviceErrors") - && let Some(first_error) = service_errors.as_array().and_then(|arr| arr.first()) - { - let code = first_error - .get("code") - .and_then(|c| c.as_str()) - .unwrap_or("unknown"); - let title = first_error - .get("title") - .and_then(|t| t.as_str()) - .unwrap_or("No title provided"); - let message = first_error - .get("message") - .and_then(|m| m.as_str()) - .unwrap_or("No message provided"); - bail!( - "SMS 2FA code submission failed (code {}): {} - {}", - code, - title, - message - ); - } + && let Some(first_error) = service_errors.as_array().and_then(|arr| arr.first()) + { + let code = first_error + .get("code") + .and_then(|c| c.as_str()) + .unwrap_or("unknown"); + let title = first_error + .get("title") + .and_then(|t| t.as_str()) + .unwrap_or("No title provided"); + let message = first_error + .get("message") + .and_then(|m| m.as_str()) + .unwrap_or("No message provided"); + bail!( + "SMS 2FA code submission failed (code {}): {} - {}", + code, + title, + message + ); + } bail!( "SMS 2FA code submission failed with http status {}: {}", status, @@ -373,7 +370,7 @@ impl AppleAccount { let cpd = anisette_data.get_client_provided_data(); - let srp_client = SrpClient::::new(&G_2048); + let srp_client = srp::Client::::new_with_options(false); let a: Vec = (0..32).map(|_| rand::random::()).collect(); let a_pub = srp_client.compute_public_ephemeral(&a); @@ -442,7 +439,7 @@ impl AppleAccount { pbkdf2::pbkdf2::>(&password_hash, salt, iters as u32, &mut password_buf) .context("Failed to derive password using PBKDF2")?; - let verifier: SrpClientVerifier = srp_client + let verifier = srp_client .process_reply(&a, self.email.as_bytes(), &password_buf, salt, b_pub) .unwrap(); @@ -534,7 +531,7 @@ impl AppleAccount { let session_key = spd.get_data("sk").context("Failed to get app token")?; let c = spd.get_data("c").context("Failed to get app token")?; - let checksum = as hmac::Mac>::new_from_slice(session_key) + let checksum = Hmac::::new_from_slice(session_key) .unwrap() .chain_update("apptokens".as_bytes()) .chain_update(dsid.as_bytes()) @@ -608,24 +605,22 @@ impl AppleAccount { Ok(app_token) } - fn create_session_key(usr: &SrpClientVerifier, name: &str) -> Result, Report> { - Ok( - as hmac::Mac>::new_from_slice(usr.key())? - .chain_update(name.as_bytes()) - .finalize() - .into_bytes() - .to_vec(), - ) + fn create_session_key(usr: &ClientVerifier, name: &str) -> Result, Report> { + Ok(Hmac::::new_from_slice(usr.key())? + .chain_update(name.as_bytes()) + .finalize() + .into_bytes() + .to_vec()) } - fn decrypt_cbc(usr: &SrpClientVerifier, data: &[u8]) -> Result, Report> { + fn decrypt_cbc(usr: &ClientVerifier, data: &[u8]) -> Result, Report> { let extra_data_key = Self::create_session_key(usr, "extra data key:")?; let extra_data_iv = Self::create_session_key(usr, "extra data iv:")?; let extra_data_iv = &extra_data_iv[..16]; Ok( cbc::Decryptor::::new_from_slices(&extra_data_key, extra_data_iv)? - .decrypt_padded_vec_mut::(data)?, + .decrypt_padded_vec::(data)?, ) } @@ -653,14 +648,14 @@ impl AppleAccount { bail!("IV is not the correct length: {} bytes", iv.len()); } - let key = aes_gcm::Key::>::from_slice(key); - let cipher = AesGcm::::new(key); - let nonce = Nonce::::from_slice(iv); + let key = aes_gcm::Key::>::try_from(key)?; + let cipher = AesGcm::::new(&key); + let nonce = Nonce::::try_from(iv)?; let mut buf = ciphertext_and_tag.to_vec(); cipher - .decrypt_in_place(nonce, header, &mut buf) + .decrypt_in_place(&nonce, header, &mut buf) .map_err(|e| report!("Failed to decrypt gcm: {}", e))?; Ok(buf)