diff --git a/Cargo.toml b/Cargo.toml index 415a670..f8edab6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,8 +30,8 @@ pretty_env_logger = "0.5.0" async-trait = "0.1.73" flume = "0.11.0" open-absinthe = { path = "/home/tae/Documents/open-absinthe", optional = true, features = ["serde"] } -icloud_auth = { path = "/home/tae/Documents/GitHub/apple-private-apis/icloud-auth" } -omnisette = { path = "/home/tae/Documents/GitHub/apple-private-apis/omnisette" } +omnisette = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } +icloud_auth = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } deku = "0.16.0" zip = { version = "2.1.5", default-features = false, features = ["deflate-zlib"] } rasn = "0.16.0" @@ -42,6 +42,7 @@ serde_json = "1.0.133" [features] default = ["macOS"] macOS = ["dep:open-absinthe"] +dummy-fairplay = [] [build-dependencies] @@ -54,3 +55,7 @@ path = "src/test.rs" [lib] name = "rustpush" path = "src/lib.rs" + +[patch."https://github.com/OpenBubbles/apple-private-apis"] +omnisette = { path = "../apple-private-apis/omnisette"} +icloud_auth = { path = "../apple-private-apis/icloud-auth"} diff --git a/certs/dummy_fairplay.crt b/certs/dummy_fairplay.crt new file mode 100644 index 0000000..ec3853d Binary files /dev/null and b/certs/dummy_fairplay.crt differ diff --git a/certs/dummy_fairplay.pem b/certs/dummy_fairplay.pem new file mode 100644 index 0000000..a1ba622 Binary files /dev/null and b/certs/dummy_fairplay.pem differ diff --git a/src/activation.rs b/src/activation.rs index 39b7d18..ad85e0b 100644 --- a/src/activation.rs +++ b/src/activation.rs @@ -38,6 +38,7 @@ macro_rules! include_cert { }; } +#[cfg(not(feature = "dummy-fairplay"))] const FAIRPLAY_KEYS: &[(&'static [u8], &'static [u8])] = &[ include_cert!("4056631661436364584235346952193"), include_cert!("4056631661436364584235346952194"), @@ -51,6 +52,12 @@ const FAIRPLAY_KEYS: &[(&'static [u8], &'static [u8])] = &[ include_cert!("4056631661436364584235346952208"), ]; +#[cfg(feature = "dummy-fairplay")] +const FAIRPLAY_KEYS: &[(&'static [u8], &'static [u8])] = &[( + include_bytes!("../certs/dummy_fairplay.crt"), + include_bytes!("../certs/dummy_fairplay.pem"), +)]; + fn fairplay_sign(data: &[u8]) -> Result<(&'static [u8], Vec), PushError> { let (cert, key) = FAIRPLAY_KEYS.choose(&mut thread_rng()).expect("no keys!");