From ab4bc76ec93cd2536d740ea311fdc2d0d3693e4c Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Thu, 11 May 2023 15:59:42 -0500 Subject: [PATCH] Removes Psychic Paper support from VerifyAppOperation --- AltStore/Operations/VerifyAppOperation.swift | 83 -------------------- 1 file changed, 83 deletions(-) diff --git a/AltStore/Operations/VerifyAppOperation.swift b/AltStore/Operations/VerifyAppOperation.swift index 38a3df81..d033f8c5 100644 --- a/AltStore/Operations/VerifyAppOperation.swift +++ b/AltStore/Operations/VerifyAppOperation.swift @@ -18,12 +18,10 @@ extension VerificationError { typealias Error = VerificationError - case privateEntitlements case mismatchedBundleIdentifiers case iOSVersionNotSupported } - static func privateEntitlements(_ entitlements: [String: Any], app: ALTApplication) -> VerificationError { VerificationError(code: .privateEntitlements, app: app, entitlements: entitlements) } static func mismatchedBundleIdentifiers(sourceBundleID: String, app: ALTApplication) -> VerificationError { VerificationError(code: .mismatchedBundleIdentifiers, app: app, sourceBundleID: sourceBundleID) } static func iOSVersionNotSupported(app: AppProtocol, osVersion: OperatingSystemVersion = ProcessInfo.processInfo.operatingSystemVersion, requiredOSVersion: OperatingSystemVersion?) -> VerificationError { @@ -39,7 +37,6 @@ struct VerificationError: ALTLocalizedError var errorFailure: String? @Managed var app: AppProtocol? - var entitlements: [String: Any]? var sourceBundleID: String? var deviceOSVersion: OperatingSystemVersion? var requiredOSVersion: OperatingSystemVersion? @@ -73,10 +70,6 @@ struct VerificationError: ALTLocalizedError var errorFailureReason: String { switch self.code { - case .privateEntitlements: - let appName = self.$app.name ?? NSLocalizedString("The app", comment: "") - return String(format: NSLocalizedString("%@ requires private permissions.", comment: ""), appName) - case .mismatchedBundleIdentifiers: if let appBundleID = self.$app.bundleIdentifier, let bundleID = self.sourceBundleID { @@ -150,47 +143,6 @@ class VerifyAppOperation: ResultOperation throw VerificationError.iOSVersionNotSupported(app: app, requiredOSVersion: app.minimumiOSVersion) } - if #available(iOS 13.5, *) - { - // No psychic paper, so we can ignore private entitlements - app.hasPrivateEntitlements = false - } - else - { - // Make sure this goes last, since once user responds to alert we don't do any more app verification. - if let commentStart = app.entitlementsString.range(of: ""), let commentEnd = app.entitlementsString.range(of: "") - { - // Psychic Paper private entitlements. - - let entitlementsStart = app.entitlementsString.index(after: commentStart.upperBound) - let rawEntitlements = String(app.entitlementsString[entitlementsStart ..< commentEnd.lowerBound]) - - let plistTemplate = """ - - - - - %@ - - - """ - let entitlementsPlist = String(format: plistTemplate, rawEntitlements) - let entitlements = try PropertyListSerialization.propertyList(from: entitlementsPlist.data(using: .utf8)!, options: [], format: nil) as! [String: Any] - - app.hasPrivateEntitlements = true - let error = VerificationError.privateEntitlements(entitlements, app: app) - self.process(error) { (result) in - self.finish(result.mapError { $0 as Error }) - } - - return - } - else - { - app.hasPrivateEntitlements = false - } - } - self.finish(.success(())) } catch @@ -199,38 +151,3 @@ class VerifyAppOperation: ResultOperation } } } - -private extension VerifyAppOperation -{ - func process(_ error: VerificationError, completion: @escaping (Result) -> Void) - { - guard let presentingViewController = self.context.presentingViewController else { return completion(.failure(error)) } - - DispatchQueue.main.async { - switch error.code - { - case .privateEntitlements: - guard let entitlements = error.entitlements else { return completion(.failure(error)) } - let permissions = entitlements.keys.sorted().joined(separator: "\n") - let message = String(format: NSLocalizedString(""" - You must allow access to these private permissions before continuing: - - %@ - - Private permissions allow apps to do more than normally allowed by iOS, including potentially accessing sensitive private data. Make sure to only install apps from sources you trust. - """, comment: ""), permissions) - - let alertController = UIAlertController(title: error.failureReason ?? error.localizedDescription, message: message, preferredStyle: .alert) - alertController.addAction(UIAlertAction(title: NSLocalizedString("Allow Access", comment: ""), style: .destructive) { (action) in - completion(.success(())) - }) - alertController.addAction(UIAlertAction(title: NSLocalizedString("Deny Access", comment: ""), style: .default, handler: { (action) in - completion(.failure(error)) - })) - presentingViewController.present(alertController, animated: true, completion: nil) - - case .mismatchedBundleIdentifiers, .iOSVersionNotSupported: return completion(.failure(error)) - } - } - } -}