Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion 3rdparty/omnisette/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@ pub enum AnisetteError {

pub const DEFAULT_ANISETTE_URL: &str = "https://ani.f1sh.me/";

pub const DEFAULT_ANISETTE_URL_V3: &str = "https://ani.sidestore.app";
// Must be a Mac anisette server: Apple rejects non-Mac client identities at 2FA (-80046).
pub const DEFAULT_ANISETTE_URL_V3: &str = "https://mac-ani.jkcoxson.com";

// Renamed from `state.plist` so states provisioned under the old Windows identity are discarded.
pub const ANISETTE_STATE_FILE: &str = "mac_anisette_state.plist";

#[derive(Clone, Debug)]
pub struct AnisetteConfiguration {
Expand Down
8 changes: 4 additions & 4 deletions 3rdparty/omnisette/src/remote_anisette_v3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

use std::{collections::HashMap, fs, io::Cursor, path::PathBuf};

use crate::adi_proxy::{CLIENT_INFO_HEADER, LOOKUP_CLIENT_INFO};
use crate::ANISETTE_STATE_FILE;
use crate::adi_proxy::LOOKUP_CLIENT_INFO;
use async_trait::async_trait;
use base64::Engine;
use base64::engine::general_purpose;
Expand Down Expand Up @@ -188,13 +189,12 @@ impl AnisetteClient {
pub async fn new(url: String) -> Result<AnisetteClient, AnisetteError> {
let path = format!("{}/v3/client_info", url);
let http_client = make_reqwest()?;
let mut client_info = http_client
let client_info = http_client
.get(path)
.send()
.await?
.json::<AnisetteClientInfo>()
.await?;
client_info.client_info = CLIENT_INFO_HEADER.to_string();
Ok(AnisetteClient { client_info, url })
}

Expand Down Expand Up @@ -496,7 +496,7 @@ impl AnisetteHeadersProvider for RemoteAnisetteProviderV3 {

fs::create_dir_all(&self.configuration_path)?;

let config_path = self.configuration_path.join("state.plist");
let config_path = self.configuration_path.join(ANISETTE_STATE_FILE);
if self.state.is_none() {
self.state = Some(if let Ok(text) = plist::from_file(&config_path) {
text
Expand Down
2 changes: 1 addition & 1 deletion apps/plumeimpactor/src/screen/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ impl SettingsScreen {
Message::SelectTeam(_, _) => Task::none(),
Message::SelectLocale(_) => Task::none(),
Message::ResetAnisetteData => {
let path = crate::defaults::get_data_path().join("state.plist");
let path = crate::defaults::get_data_path().join(plume_core::ANISETTE_STATE_FILE);
let _ = std::fs::remove_file(path);
Task::none()
}
Expand Down
2 changes: 1 addition & 1 deletion crates/plume_core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ mod utils;

pub use apple_codesign::{AppleCodesignError, SettingsScope, SigningSettings, UnifiedSigner};

pub use omnisette::AnisetteConfiguration;
pub use omnisette::{ANISETTE_STATE_FILE, AnisetteConfiguration};

pub use utils::{CertificateIdentity, MachO, MachOExt, MobileProvision};

Expand Down