From 4c4a5d0051ba695700e105e19a8731c8b48cef1d Mon Sep 17 00:00:00 2001 From: nab138 Date: Sat, 14 Feb 2026 12:41:00 -0500 Subject: [PATCH] Switch to crates.io version of isideload-apple-codesign --- Cargo.lock | 651 +++++++++++++---------------------- README.md | 11 +- examples/minimal/src/main.rs | 2 +- isideload/Cargo.toml | 5 +- 4 files changed, 255 insertions(+), 414 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7371123..4aee0f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,13 +136,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" [[package]] name = "apple-bundles" version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f40bb8f844cec39fa3aceae717808c2ac3d2b6c474a9dffbeba07a4a945d10" dependencies = [ "anyhow", "plist", @@ -150,151 +152,19 @@ dependencies = [ "walkdir", ] -[[package]] -name = "apple-codesign" -version = "0.29.0" -dependencies = [ - "anyhow", - "apple-bundles", - "apple-flat-package", - "apple-xar", - "base64", - "bcder", - "bitflags", - "bytes", - "chrono", - "clap", - "cryptographic-message-syntax", - "der 0.7.10", - "dialoguer", - "difference", - "digest 0.10.7", - "dirs", - "elliptic-curve", - "env_logger", - "figment", - "filetime", - "glob", - "goblin", - "hex", - "log", - "md-5", - "minicbor", - "num-traits", - "object", - "oid-registry 0.7.1", - "once_cell", - "p12", - "p256", - "pem", - "pkcs1 0.7.5", - "pkcs8 0.10.2", - "plist", - "rand 0.8.5", - "rasn", - "rayon", - "regex", - "reqwest 0.12.28", - "ring", - "rsa 0.9.10", - "scroll", - "security-framework 2.11.1", - "security-framework-sys", - "semver", - "serde", - "serde_json", - "serde_yaml", - "sha2 0.10.9", - "signature 2.2.0", - "simple-file-manifest", - "spake2", - "spki 0.7.3", - "subtle", - "tempfile", - "thiserror 2.0.18", - "tokio", - "uuid", - "walkdir", - "widestring", - "windows-sys 0.59.0", - "x509", - "x509-certificate", - "xml-rs", - "yasna", - "zeroize", - "zip", - "zip_structs", -] - -[[package]] -name = "apple-flat-package" -version = "0.20.0" -dependencies = [ - "apple-xar", - "cpio-archive", - "flate2", - "scroll", - "serde", - "serde-xml-rs", - "thiserror 2.0.18", -] - -[[package]] -name = "apple-xar" -version = "0.20.0" -dependencies = [ - "base64", - "bcder", - "bzip2", - "chrono", - "cryptographic-message-syntax", - "digest 0.10.7", - "flate2", - "log", - "md-5", - "rand 0.8.5", - "reqwest 0.12.28", - "scroll", - "serde", - "serde-xml-rs", - "sha1", - "sha2 0.10.9", - "signature 2.2.0", - "thiserror 2.0.18", - "url", - "x509-certificate", - "xml-rs", - "xz2", -] - [[package]] name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "asn1-rs" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" -dependencies = [ - "asn1-rs-derive 0.5.1", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror 1.0.69", -] - [[package]] name = "asn1-rs" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" dependencies = [ - "asn1-rs-derive 0.6.0", + "asn1-rs-derive", "asn1-rs-impl", "displaydoc", "nom", @@ -304,18 +174,6 @@ dependencies = [ "time", ] -[[package]] -name = "asn1-rs-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - [[package]] name = "asn1-rs-derive" version = "0.6.0" @@ -341,9 +199,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.37" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +checksum = "68650b7df54f0293fd061972a0fb05aaf4fc0879d3b3d21a638a182c5c543b9f" dependencies = [ "compression-codecs", "compression-core", @@ -412,9 +270,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.37.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c34dda4df7017c8db52132f0f8a2e0f8161649d15723ed63fc00c82d0f2081a" +checksum = "b092fe214090261288111db7a2b2c2118e5a7f30dc2569f1732c4069a6840549" dependencies = [ "cc", "cmake", @@ -458,9 +316,9 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "bitvec" @@ -590,9 +448,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.55" +version = "1.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" dependencies = [ "find-msvc-tools", "jobserver", @@ -836,11 +694,13 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpio-archive" version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f11d34b07689c21889fc89bd7cc885b3244b0157bbededf4a1c159832cd0df05" dependencies = [ "chrono", "is_executable", "simple-file-manifest", - "thiserror 2.0.18", + "thiserror 1.0.69", ] [[package]] @@ -915,9 +775,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.7.0-rc.25" +version = "0.7.0-rc.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cba9eeeb213f7fd29353032f71f7c173e5f6d95d85151cb3a47197b0ea7e8be7" +checksum = "b43308b9b6a47554f4612d5b1fb95ff935040aa3927dd42b1d6cbc015a262d96" dependencies = [ "cpubits", "ctutils", @@ -951,32 +811,15 @@ dependencies = [ [[package]] name = "crypto-primes" -version = "0.7.0-pre.8" +version = "0.7.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "334a79c97c0b7fa536716dc132fd417d0afbf471440a41fc25a5d9f66d8771cd" +checksum = "6081ce8b60c0e533e2bba42771b94eb6149052115f4179744d5779883dc98583" dependencies = [ - "crypto-bigint 0.7.0-rc.25", + "crypto-bigint 0.7.0-rc.27", "libm", "rand_core 0.10.0", ] -[[package]] -name = "cryptographic-message-syntax" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c67889c5743b5987961460fbc999dbfa1bb4c7a8e5bfe37eb4d5e678ccb6d1" -dependencies = [ - "bcder", - "bytes", - "chrono", - "hex", - "pem", - "reqwest 0.12.28", - "ring", - "signature 2.2.0", - "x509-certificate", -] - [[package]] name = "ctr" version = "0.10.0-rc.3" @@ -995,32 +838,6 @@ dependencies = [ "cmov", ] -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "curve25519-dalek-derive", - "fiat-crypto", - "rand_core 0.6.4", - "rustc_version", - "subtle", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "data-encoding" version = "2.10.0" @@ -1063,9 +880,9 @@ dependencies = [ [[package]] name = "der" -version = "0.8.0-rc.10" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c1d73e9668ea6b6a28172aa55f3ebec38507131ce179051c8033b5c6037653" +checksum = "71fd89660b2dc699704064e59e9dba0147b903e85319429e131620d022be411b" dependencies = [ "const-oid 0.10.2", "pem-rfc7468 1.0.0", @@ -1078,7 +895,7 @@ version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" dependencies = [ - "asn1-rs 0.7.1", + "asn1-rs", "displaydoc", "nom", "num-bigint", @@ -1099,9 +916,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" dependencies = [ "powerfmt", ] @@ -1148,14 +965,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.0-rc.11" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b42f1d9edf5207c137646b568a0168ca0ec25b7f9eaf7f9961da51a3d91cea" +checksum = "f8bf3682cdec91817be507e4aa104314898b95b84d74f3d43882210101a545b6" dependencies = [ "block-buffer 0.11.0", "const-oid 0.10.2", "crypto-common 0.2.0", - "subtle", + "ctutils", ] [[package]] @@ -1304,12 +1121,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - [[package]] name = "figment" version = "0.10.19" @@ -1547,9 +1358,9 @@ dependencies = [ [[package]] name = "ghash" -version = "0.6.0-rc.5" +version = "0.6.0-rc.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f484be0236661c5ba22d445ed75d3624ba5544541c647549f867fb576e55b2a2" +checksum = "bb9be1ab8718f9d16384cb3626a5a7d7eac4d3fd1b2564e97592f40523dc0228" dependencies = [ "polyval", ] @@ -1637,15 +1448,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac 0.12.1", -] - [[package]] name = "hmac" version = "0.12.1" @@ -1661,7 +1463,7 @@ version = "0.13.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef451d73f36d8a3f93ad32c332ea01146c9650e1ec821a9b0e46c01277d544f8" dependencies = [ - "digest 0.11.0-rc.11", + "digest 0.11.0", ] [[package]] @@ -1744,12 +1546,10 @@ dependencies = [ "hyper", "hyper-util", "rustls", - "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.6", ] [[package]] @@ -1890,9 +1690,9 @@ checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] name = "idevice" -version = "0.1.52" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4031af51250d2f22f61a0d7fb7ea71ba8b6144b2b9dd3b7ee4a931fccbd1ec0" +checksum = "18fa17477a6eee7e2e0252302b303a7156c52355b4af7915877b56a3b426fa91" dependencies = [ "async_zip", "base64", @@ -2004,7 +1804,6 @@ version = "0.2.0" dependencies = [ "aes 0.9.0-rc.4", "aes-gcm", - "apple-codesign", "async-trait", "base64", "cbc 0.2.0-rc.3", @@ -2012,6 +1811,8 @@ dependencies = [ "hex", "hmac 0.13.0-rc.5", "idevice", + "isideload-apple-codesign", + "isideload-x509-certificate", "keyring", "p12-keystore", "pbkdf2 0.13.0-rc.9", @@ -2019,7 +1820,7 @@ dependencies = [ "plist-macro", "rand 0.10.0", "rcgen", - "reqwest 0.13.2", + "reqwest", "rootcause", "rsa 0.10.0-rc.15", "serde", @@ -2031,10 +1832,166 @@ dependencies = [ "tokio-tungstenite", "tracing", "uuid", - "x509-certificate", "zip", ] +[[package]] +name = "isideload-apple-codesign" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efff08330c9cd8321487bcc92195c53b75297df56082e2b26c657883ce43e6dd" +dependencies = [ + "anyhow", + "apple-bundles", + "aws-lc-rs", + "base64", + "bcder", + "bitflags", + "bytes", + "chrono", + "clap", + "der 0.7.10", + "dialoguer", + "difference", + "digest 0.10.7", + "dirs", + "elliptic-curve", + "env_logger", + "figment", + "filetime", + "glob", + "goblin", + "hex", + "isideload-apple-flat-package", + "isideload-apple-xar", + "isideload-cryptographic-message-syntax", + "isideload-x509-certificate", + "log", + "md-5", + "num-traits", + "object", + "oid-registry", + "once_cell", + "p12", + "p256", + "pem", + "pkcs1 0.7.5", + "pkcs8 0.10.2", + "plist", + "rand 0.8.5", + "rasn", + "rayon", + "regex", + "reqwest", + "rsa 0.9.10", + "scroll", + "security-framework 2.11.1", + "security-framework-sys", + "semver", + "serde", + "serde_json", + "serde_yaml", + "sha2 0.10.9", + "signature 2.2.0", + "simple-file-manifest", + "spki 0.7.3", + "subtle", + "tempfile", + "thiserror 2.0.18", + "tokio", + "uuid", + "walkdir", + "widestring", + "windows-sys 0.59.0", + "x509", + "xml-rs", + "yasna", + "zeroize", + "zip", + "zip_structs", +] + +[[package]] +name = "isideload-apple-flat-package" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf597e564555d5a16149f5e6250254f256017cf6a60f105ecf64500f4adb599" +dependencies = [ + "cpio-archive", + "flate2", + "isideload-apple-xar", + "scroll", + "serde", + "serde-xml-rs", + "thiserror 2.0.18", +] + +[[package]] +name = "isideload-apple-xar" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6a738c2bd985a6c7d4572d4082806c9928f154c61ac356718d2379186ee30a9" +dependencies = [ + "base64", + "bcder", + "bzip2", + "chrono", + "digest 0.10.7", + "flate2", + "isideload-cryptographic-message-syntax", + "isideload-x509-certificate", + "log", + "md-5", + "rand 0.8.5", + "reqwest", + "scroll", + "serde", + "serde-xml-rs", + "sha1", + "sha2 0.10.9", + "signature 2.2.0", + "thiserror 2.0.18", + "url", + "xml-rs", + "xz2", +] + +[[package]] +name = "isideload-cryptographic-message-syntax" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eef54b517a50bcd4abdb198c600976abc97cde30d71c37e1a0aa0652089ab128" +dependencies = [ + "aws-lc-rs", + "bcder", + "bytes", + "chrono", + "hex", + "isideload-x509-certificate", + "pem", + "reqwest", + "signature 2.2.0", +] + +[[package]] +name = "isideload-x509-certificate" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8f6640892423dd86bac32808e94d586595b3e09a8e3b99ca101dc570d084bc" +dependencies = [ + "aws-lc-rs", + "bcder", + "bytes", + "chrono", + "der 0.7.10", + "hex", + "pem", + "signature 2.2.0", + "spki 0.7.3", + "thiserror 2.0.18", + "zeroize", +] + [[package]] name = "itertools" version = "0.13.0" @@ -2127,7 +2084,7 @@ dependencies = [ "linux-keyutils", "log", "security-framework 2.11.1", - "security-framework 3.5.1", + "security-framework 3.6.0", "windows-sys 0.60.2", "zeroize", ] @@ -2169,9 +2126,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.180" +version = "0.2.182" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] name = "libdbus-sys" @@ -2256,9 +2213,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "mime" @@ -2266,26 +2223,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minicbor" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0452a60c1863c1f50b5f77cd295e8d2786849f35883f0b9e18e7e6e1b5691b0" -dependencies = [ - "minicbor-derive", -] - -[[package]] -name = "minicbor-derive" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd2209fff77f705b00c737016a48e73733d7fbccb8b007194db148f03561fb70" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "minimal" version = "0.1.0" @@ -2421,22 +2358,13 @@ dependencies = [ "ruzstd", ] -[[package]] -name = "oid-registry" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" -dependencies = [ - "asn1-rs 0.6.2", -] - [[package]] name = "oid-registry" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" dependencies = [ - "asn1-rs 0.7.1", + "asn1-rs", ] [[package]] @@ -2536,7 +2464,7 @@ version = "0.13.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8dfa4e14084d963d35bfb4cdb38712cde78dcf83054c0e8b9b8e899150f374e" dependencies = [ - "digest 0.11.0-rc.11", + "digest 0.11.0", "hmac 0.13.0-rc.5", ] @@ -2646,7 +2574,7 @@ version = "0.8.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e" dependencies = [ - "der 0.8.0-rc.10", + "der 0.8.0", "spki 0.8.0-rc.4", ] @@ -2692,11 +2620,11 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.11.0-rc.10" +version = "0.11.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b226d2cc389763951db8869584fd800cbbe2962bf454e2edeb5172b31ee99774" +checksum = "12922b6296c06eb741b02d7b5161e3aaa22864af38dfa025a1a3ba3f68c84577" dependencies = [ - "der 0.8.0-rc.10", + "der 0.8.0", "spki 0.8.0-rc.4", ] @@ -2736,12 +2664,12 @@ dependencies = [ [[package]] name = "polyval" -version = "0.7.0-rc.7" +version = "0.7.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63641a86fddf4b5274f31c43734458ec7acd3133016dbaa37e4e247e1e9acd46" +checksum = "0e83fbff7a079b2d37c70aa6bd5eedb9e5d09ceb9b4ecd31e9ea212d00e9b0bc" dependencies = [ "cpubits", - "cpufeatures 0.2.17", + "cpufeatures 0.3.0", "universal-hash", ] @@ -3118,48 +3046,6 @@ version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 1.0.6", -] - [[package]] name = "reqwest" version = "0.13.2" @@ -3169,7 +3055,9 @@ dependencies = [ "base64", "bytes", "encoding_rs", + "futures-channel", "futures-core", + "futures-util", "h2", "http", "http-body", @@ -3263,11 +3151,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b342b99544549f37509ed7fd42b0cea04bfd9ce07c16ca56094cf0fbeefbbcd" dependencies = [ "const-oid 0.10.2", - "crypto-bigint 0.7.0-rc.25", + "crypto-bigint 0.7.0-rc.27", "crypto-primes", - "digest 0.11.0-rc.11", + "digest 0.11.0", "pkcs1 0.8.0-rc.4", - "pkcs8 0.11.0-rc.10", + "pkcs8 0.11.0-rc.11", "rand_core 0.10.0", "signature 3.0.0-rc.10", "spki 0.8.0-rc.4", @@ -3280,15 +3168,6 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - [[package]] name = "rusticata-macros" version = "4.1.0" @@ -3319,7 +3198,6 @@ checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "aws-lc-rs", "once_cell", - "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -3335,7 +3213,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.5.1", + "security-framework 3.6.0", ] [[package]] @@ -3362,7 +3240,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.5.1", + "security-framework 3.6.0", "security-framework-sys", "webpki-root-certs", "windows-sys 0.61.2", @@ -3493,9 +3371,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.5.1" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +checksum = "d17b898a6d6948c3a8ee4372c17cb384f90d2e6e912ef00895b14fd7ab54ec38" dependencies = [ "bitflags", "core-foundation 0.10.1", @@ -3506,9 +3384,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "321c8673b092a9a42605034a9879d73cb79101ed5fd117bc9a597b89b4e9e61a" dependencies = [ "core-foundation-sys", "libc", @@ -3584,18 +3462,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - [[package]] name = "serde_yaml" version = "0.9.34+deprecated" @@ -3649,7 +3515,7 @@ checksum = "7c5f3b1e2dc8aad28310d8410bd4d7e180eca65fca176c52ab00d364475d0024" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest 0.11.0-rc.11", + "digest 0.11.0", ] [[package]] @@ -3689,7 +3555,7 @@ version = "3.0.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f1880df446116126965eeec169136b2e0251dba37c6223bcc819569550edea3" dependencies = [ - "digest 0.11.0-rc.11", + "digest 0.11.0", "rand_core 0.10.0", ] @@ -3748,18 +3614,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "spake2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5482afe85a0b6ce956c945401598dbc527593c77ba51d0a87a586938b1b893a" -dependencies = [ - "curve25519-dalek", - "hkdf", - "rand_core 0.6.4", - "sha2 0.10.9", -] - [[package]] name = "spin" version = "0.9.8" @@ -3783,7 +3637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8baeff88f34ed0691978ec34440140e1572b68c7dd4a495fd14a3dc1944daa80" dependencies = [ "base64ct", - "der 0.8.0-rc.10", + "der 0.8.0", ] [[package]] @@ -3792,9 +3646,9 @@ version = "0.7.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0b7d0b0d27b2475e779315c09af698ac9f6d40016bc011bf3fa0f0054ce38ed" dependencies = [ - "crypto-bigint 0.7.0-rc.25", + "crypto-bigint 0.7.0-rc.27", "crypto-common 0.2.0", - "digest 0.11.0-rc.11", + "digest 0.11.0", "subtle", ] @@ -3824,9 +3678,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.114" +version = "2.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "6e614ed320ac28113fa64972c4262d5dbc89deacdfd00c34a3e4cea073243c12" dependencies = [ "proc-macro2", "quote", @@ -4255,9 +4109,9 @@ dependencies = [ [[package]] name = "typed-path" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3015e6ce46d5ad8751e4a772543a30c7511468070e98e64e20165f8f81155b64" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] name = "typenum" @@ -4291,9 +4145,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" [[package]] name = "unicode-width" @@ -4367,11 +4221,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.20.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.1", "js-sys", "wasm-bindgen", ] @@ -5086,37 +4940,18 @@ dependencies = [ "spki 0.7.3", ] -[[package]] -name = "x509-certificate" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca9eb9a0c822c67129d5b8fcc2806c6bc4f50496b420825069a440669bcfbf7f" -dependencies = [ - "bcder", - "bytes", - "chrono", - "der 0.7.10", - "hex", - "pem", - "ring", - "signature 2.2.0", - "spki 0.7.3", - "thiserror 2.0.18", - "zeroize", -] - [[package]] name = "x509-parser" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" dependencies = [ - "asn1-rs 0.7.1", + "asn1-rs", "data-encoding", "der-parser", "lazy_static", "nom", - "oid-registry 0.8.1", + "oid-registry", "rusticata-macros", "thiserror 2.0.18", "time", @@ -5128,13 +4963,13 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202" dependencies = [ - "asn1-rs 0.7.1", + "asn1-rs", "aws-lc-rs", "data-encoding", "der-parser", "lazy_static", "nom", - "oid-registry 0.8.1", + "oid-registry", "rusticata-macros", "thiserror 2.0.18", "time", @@ -5195,18 +5030,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.38" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57cf3aa6855b23711ee9852dfc97dfaa51c45feaba5b645d0c777414d494a961" +checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.38" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a616990af1a287837c4fe6596ad77ef57948f787e46ce28e166facc0cc1cb75" +checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" dependencies = [ "proc-macro2", "quote", @@ -5320,9 +5155,9 @@ checksum = "a7948af682ccbc3342b6e9420e8c51c1fe5d7bf7756002b4a3c6cabfe96a7e3c" [[package]] name = "zmij" -version = "1.0.19" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zopfli" diff --git a/README.md b/README.md index 520cad3..7539f84 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,17 @@ Things left todo before the rewrite is considered finished - Proper entitlement handling - actually parse macho files and stuff, right now it just uses the bare minimum and applies extra entitlements for livecontainer -- Remove dependency on ring and reduce duplicate dependencies +- Reduce duplicate dependencies - partially just need to wait for the rust crypto ecosystem to get through another release cycle -- More parallelism/caching for better performance +- More parallelism and caching for better performance ## Licensing This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. + +## Credits + +- The [idevice](https://github.com/jkcoxson/idevice) crate is used to communicate with the device +- A [modified version of apple-platform-rs](https://github.com/nab138/isideload-apple-platform-rs) was used for codesigning +- [Sideloader](https://github.com/Dadoum/Sideloader) was used as a reference for how some of the private API endpoints work +- [Impactor](https://github.com/khcrysalis/Impactor) was used as a reference for some cryptography code diff --git a/examples/minimal/src/main.rs b/examples/minimal/src/main.rs index a38ff98..6d740de 100644 --- a/examples/minimal/src/main.rs +++ b/examples/minimal/src/main.rs @@ -19,7 +19,7 @@ use tracing_subscriber::FmtSubscriber; async fn main() { isideload::init().expect("Failed to initialize error reporting"); let subscriber = FmtSubscriber::builder() - .with_max_level(Level::DEBUG) + .with_max_level(Level::INFO) .finish(); tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); diff --git a/isideload/Cargo.toml b/isideload/Cargo.toml index 28433ac..7a7ba50 100644 --- a/isideload/Cargo.toml +++ b/isideload/Cargo.toml @@ -45,9 +45,8 @@ aes-gcm = "0.11.0-rc.3" rsa = { version = "0.10.0-rc.15" } tokio = { version = "1.49.0", features = ["fs"] } keyring = { version = "3.6.3", features = ["apple-native", "linux-native-sync-persistent", "windows-native"], optional = true } -# TODO: Fork to update dependencies (doubt it will ever be updated) -x509-certificate = "0.25" +x509-certificate = { version = "0.25.0", package = "isideload-x509-certificate" } rcgen = { version = "0.14.7", default-features = false, features = ["aws_lc_rs", "pem"] } p12-keystore = "0.2.0" zip = { version = "7.4", default-features = false, features = ["deflate"] } -apple-codesign = { path = "../../plume-apple-platform-rs/apple-codesign", default-features = false} +apple-codesign = { version = "0.29.0", package = "isideload-apple-codesign", default-features = false}