Use idevice-srp crate

This commit is contained in:
Jackson Coxson
2025-12-18 21:32:40 -07:00
parent 4bea784260
commit d6e7b9aef4
3 changed files with 18 additions and 16 deletions

28
Cargo.lock generated
View File

@@ -1202,6 +1202,7 @@ dependencies = [
"ed25519-dalek", "ed25519-dalek",
"futures", "futures",
"hkdf", "hkdf",
"idevice-srp",
"indexmap", "indexmap",
"json", "json",
"ns-keyed-archive", "ns-keyed-archive",
@@ -1215,7 +1216,6 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"sha2", "sha2",
"srp",
"thiserror 2.0.17", "thiserror 2.0.17",
"tokio", "tokio",
"tokio-openssl", "tokio-openssl",
@@ -1247,6 +1247,20 @@ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
[[package]]
name = "idevice-srp"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d84c9637ebbdfa523f352b62c8cf791288b3fbf59f6eac6c57c7c9949f5924b2"
dependencies = [
"base64 0.21.7",
"digest",
"generic-array",
"lazy_static",
"num-bigint",
"subtle",
]
[[package]] [[package]]
name = "idevice-tools" name = "idevice-tools"
version = "0.1.0" version = "0.1.0"
@@ -2423,18 +2437,6 @@ dependencies = [
"der", "der",
] ]
[[package]]
name = "srp"
version = "0.6.0"
dependencies = [
"base64 0.21.7",
"digest",
"generic-array",
"lazy_static",
"num-bigint",
"subtle",
]
[[package]] [[package]]
name = "stable_deref_trait" name = "stable_deref_trait"
version = "1.2.1" version = "1.2.1"

View File

@@ -58,7 +58,7 @@ x25519-dalek = { version = "2", optional = true }
ed25519-dalek = { version = "2", features = ["rand_core"], optional = true } ed25519-dalek = { version = "2", features = ["rand_core"], optional = true }
hkdf = { version = "0.12", optional = true } hkdf = { version = "0.12", optional = true }
chacha20poly1305 = { version = "0.10", optional = true } chacha20poly1305 = { version = "0.10", optional = true }
srp = { path = "../../apple-private-apis/icloud-auth/rustcrypto-srp", optional = true } idevice-srp = { version = "0.6", optional = true }
obfstr = { version = "0.4", optional = true } obfstr = { version = "0.4", optional = true }
@@ -113,7 +113,7 @@ remote_pairing = [
"dep:ed25519-dalek", "dep:ed25519-dalek",
"dep:hkdf", "dep:hkdf",
"dep:chacha20poly1305", "dep:chacha20poly1305",
"dep:srp", "dep:idevice-srp",
"dep:uuid", "dep:uuid",
] ]
restore_service = [] restore_service = []

View File

@@ -9,12 +9,12 @@ use chacha20poly1305::{
}; };
use ed25519_dalek::Signature; use ed25519_dalek::Signature;
use hkdf::Hkdf; use hkdf::Hkdf;
use idevice_srp::{client::SrpClient, groups::G_3072};
use rand::RngCore; use rand::RngCore;
use rsa::{rand_core::OsRng, signature::SignerMut}; use rsa::{rand_core::OsRng, signature::SignerMut};
use serde::Serialize; use serde::Serialize;
use serde_json::json; use serde_json::json;
use sha2::Sha512; use sha2::Sha512;
use srp::{client::SrpClient, groups::G_3072};
use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tracing::{debug, warn}; use tracing::{debug, warn};
use x25519_dalek::{EphemeralSecret, PublicKey as X25519PublicKey}; use x25519_dalek::{EphemeralSecret, PublicKey as X25519PublicKey};