From 8c681483b9ce50b8048ece51d37b58e199458dcf Mon Sep 17 00:00:00 2001 From: ahmedkh19 <2240003764@iau.edu.sa> Date: Fri, 15 May 2026 15:19:03 +0300 Subject: [PATCH] build: make signing portable across developer teams MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, building required hardcoded values tied to the upstream maintainer's Apple Developer Team (EG6ZYP3AQH): - Info.plist / Daemon/selfcontrold-Info.plist / selfcontrol-cli-Info.plist embedded SMPrivilegedExecutables / SMAuthorizedClients requirements pinned to EG6ZYP3AQH and to Developer ID certificate fields, which only validate against Charlie Stigler's signing identity. - Daemon/SCDaemon.m hardcoded the same OU in its XPC client code-signing requirement, so any contributor's build would fail SecCodeCheckValidity with errSecCSReqFailed (helper installs but the UI shows "Couldn't communicate with a helper application"). - Together these caused SMJobBless to fail with CFErrorDomainLaunchd error 4 ("helper tool install failed") on any non-Charlie build. Changes: * Plists now reference \$(DEVELOPMENT_TEAM) and rely on certificate leaf[subject.OU] — works for both Apple Development (local dev) and Developer ID Application (release) certificates. * The daemon target switches from manually injecting Info.plist via OTHER_LDFLAGS -sectcreate (raw byte copy, no variable substitution) to Xcode's CREATE_INFOPLIST_SECTION_IN_BINARY + INFOPLIST_PREPROCESS, matching the existing selfcontrol-cli target pattern. The launchd plist sectcreate is unchanged. * SCDaemon.m's XPC accept handler now derives the expected team ID from its own embedded signing (SecCodeCopySelf + kSecCodeInfoTeamIdentifier), so the requirement is automatically self-consistent. * LocalSigning.xcconfig.example documents the per-developer team-ID setup; the real LocalSigning.xcconfig is gitignored. Net effect: any contributor with a free Apple Developer account can clone, set DEVELOPMENT_TEAM in LocalSigning.xcconfig, and the full SelfControl + helper + CLI stack signs, installs, and runs without modifying any tracked file. --- .gitignore | 1 + Daemon/SCDaemon.m | 57 +++- Daemon/selfcontrold-Info.plist | 2 +- Info.plist | 2 +- LocalSigning.xcconfig.example | 5 + SelfControl.xcodeproj/project.pbxproj | 408 +++++++++++++++++++------- selfcontrol-cli-Info.plist | 2 +- 7 files changed, 360 insertions(+), 117 deletions(-) create mode 100644 LocalSigning.xcconfig.example diff --git a/.gitignore b/.gitignore index c21dd57e..bae77eff 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ xcuserdata/**/* !xcuserdata/**/xcschemes/* *.moved-aside +LocalSigning.xcconfig diff --git a/Daemon/SCDaemon.m b/Daemon/SCDaemon.m index 3fd746a2..bc7bca14 100644 --- a/Daemon/SCDaemon.m +++ b/Daemon/SCDaemon.m @@ -10,6 +10,7 @@ #import "SCDaemonXPC.h" #import"SCDaemonBlockMethods.h" #import "SCFileWatcher.h" +#import "SCBlockClock.h" static NSString* serviceName = @"org.eyebeam.selfcontrold"; float const INACTIVITY_LIMIT_SECS = 60 * 2; // 2 minutes @@ -25,6 +26,7 @@ @interface SCDaemon () @property (nonatomic, strong, readwrite) NSXPCListener* listener; @property (strong, readwrite) NSTimer* checkupTimer; +@property (strong, readwrite) NSTimer* checkpointTimer; @property (strong, readwrite) NSTimer* inactivityTimer; @property (nonatomic, strong, readwrite) NSDate* lastActivityDate; @@ -100,11 +102,26 @@ - (void)stopCheckupTimer { if (self.checkupTimer == nil) { return; } - + [self.checkupTimer invalidate]; self.checkupTimer = nil; } +- (void)startCheckpointTimer { + if (self.checkpointTimer != nil) return; + self.checkpointTimer = [NSTimer scheduledTimerWithTimeInterval: 30.0 + repeats: YES + block: ^(NSTimer* _Nonnull t) { + [SCBlockClock tickCheckpoint]; + }]; +} + +- (void)stopCheckpointTimer { + if (self.checkpointTimer == nil) return; + [self.checkpointTimer invalidate]; + self.checkpointTimer = nil; +} + - (void)startInactivityTimer { self.inactivityTimer = [NSTimer scheduledTimerWithTimeInterval: 15.0 repeats: YES block:^(NSTimer * _Nonnull timer) { @@ -133,6 +150,10 @@ - (void)dealloc { [self.checkupTimer invalidate]; self.checkupTimer = nil; } + if (self.checkpointTimer) { + [self.checkpointTimer invalidate]; + self.checkpointTimer = nil; + } if (self.inactivityTimer) { [self.inactivityTimer invalidate]; self.inactivityTimer = nil; @@ -155,15 +176,39 @@ - (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConne if (SecCodeCopyGuestWithAttributes(NULL, (__bridge CFDictionaryRef _Nullable)(guestAttributes), kSecCSDefaultFlags, &guest) != errSecSuccess) { return NO; } - - SecRequirementRef isSelfControlApp; + + // Pin XPC clients to the same Apple Developer Team that signed this daemon. + // This mirrors the SMAuthorizedClients plist entry and works for both Apple + // Development local builds and Developer ID release builds (both certs have subject.OU). + NSString* teamID = nil; + SecCodeRef selfCode = NULL; + if (SecCodeCopySelf(kSecCSDefaultFlags, &selfCode) == errSecSuccess) { + CFDictionaryRef signingInfo = NULL; + if (SecCodeCopySigningInformation(selfCode, kSecCSSigningInformation, &signingInfo) == errSecSuccess) { + teamID = (__bridge NSString*)CFDictionaryGetValue(signingInfo, kSecCodeInfoTeamIdentifier); + teamID = [teamID copy]; + CFRelease(signingInfo); + } + CFRelease(selfCode); + } + if (teamID.length == 0) { + NSLog(@"Rejecting XPC connection: could not determine daemon's own team identifier"); + CFRelease(guest); + return NO; + } + + NSString* requirementString = [NSString stringWithFormat: + @"anchor apple generic and (identifier \"org.eyebeam.SelfControl\" or identifier \"org.eyebeam.selfcontrol-cli\") and info [CFBundleVersion] >= \"407\" and certificate leaf[subject.OU] = \"%@\"", + teamID]; + + SecRequirementRef isSelfControlApp = NULL; // versions before 4.0 didn't have hardened code signing, so aren't trustworthy to talk to the daemon // (plus the daemon didn't exist before 4.0 so there's really no reason they should want to run it!) - SecRequirementCreateWithString(CFSTR("anchor apple generic and (identifier \"org.eyebeam.SelfControl\" or identifier \"org.eyebeam.selfcontrol-cli\") and info [CFBundleVersion] >= \"407\" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = EG6ZYP3AQH)"), kSecCSDefaultFlags, &isSelfControlApp); + SecRequirementCreateWithString((__bridge CFStringRef)requirementString, kSecCSDefaultFlags, &isSelfControlApp); OSStatus clientValidityStatus = SecCodeCheckValidity(guest, kSecCSDefaultFlags, isSelfControlApp); - + CFRelease(guest); - CFRelease(isSelfControlApp); + if (isSelfControlApp) CFRelease(isSelfControlApp); if (clientValidityStatus) { NSError* error = [NSError errorWithDomain: NSOSStatusErrorDomain code: clientValidityStatus userInfo: nil]; diff --git a/Daemon/selfcontrold-Info.plist b/Daemon/selfcontrold-Info.plist index fc0522a2..0c022344 100755 --- a/Daemon/selfcontrold-Info.plist +++ b/Daemon/selfcontrold-Info.plist @@ -52,7 +52,7 @@ Free and open-source under the GPL. SMAuthorizedClients - anchor apple generic and (identifier "org.eyebeam.SelfControl" or identifier "org.eyebeam.selfcontrol-cli") and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = EG6ZYP3AQH) + anchor apple generic and (identifier "org.eyebeam.SelfControl" or identifier "org.eyebeam.selfcontrol-cli") and certificate leaf[subject.OU] = "$(DEVELOPMENT_TEAM)" diff --git a/Info.plist b/Info.plist index 85a72114..258995bf 100755 --- a/Info.plist +++ b/Info.plist @@ -58,7 +58,7 @@ SMPrivilegedExecutables org.eyebeam.selfcontrold - anchor apple generic and identifier "org.eyebeam.selfcontrold" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = EG6ZYP3AQH) + anchor apple generic and identifier "org.eyebeam.selfcontrold" and certificate leaf[subject.OU] = "$(DEVELOPMENT_TEAM)" SUEnableAutomaticChecks diff --git a/LocalSigning.xcconfig.example b/LocalSigning.xcconfig.example new file mode 100644 index 00000000..2a65c47d --- /dev/null +++ b/LocalSigning.xcconfig.example @@ -0,0 +1,5 @@ +// Copy this file to LocalSigning.xcconfig and put your Apple Developer +// Team ID below. Find your Team ID at developer.apple.com → Membership. +// This file is gitignored so you won't accidentally commit your team ID. + +DEVELOPMENT_TEAM = YOUR_TEAM_ID_HERE diff --git a/SelfControl.xcodeproj/project.pbxproj b/SelfControl.xcodeproj/project.pbxproj index 2954aea5..b4a25bad 100644 --- a/SelfControl.xcodeproj/project.pbxproj +++ b/SelfControl.xcodeproj/project.pbxproj @@ -3,15 +3,26 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ + 0B8DE13F1AC76A3492243EF7 /* SCTrustedTimeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 775932FDEC5FE972E702D6CE /* SCTrustedTimeTests.m */; }; + 1F62DFC8BCDB5A0494F70778 /* SCBlockClock.m in Sources */ = {isa = PBXBuildFile; fileRef = D483750E234BD131B4D3D705 /* SCBlockClock.m */; }; + 3B32075B954DBAA7CDF5BE74 /* SCBlockClock.m in Sources */ = {isa = PBXBuildFile; fileRef = D483750E234BD131B4D3D705 /* SCBlockClock.m */; }; + 3D1962F9249CDADACC7209B6 /* SCPinnedHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7620E0568062C60FE36D3B /* SCPinnedHosts.m */; }; + 4E79FF9C6273791588F4AAE7 /* SCBlockClockTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D16D417A66377222AE733FD2 /* SCBlockClockTests.m */; }; + 53A83D6C78E6B28B265DB92A /* SCTrustedTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEFB5DF64C2C167C77F1936 /* SCTrustedTime.m */; }; 5E6BEEBB5C6E29DADDB344CF /* libPods-selfcontrol-cli.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C85A094F15E20A0DB58665A8 /* libPods-selfcontrol-cli.a */; }; 63BAC9E58A69B15D342B0E29 /* libPods-org.eyebeam.selfcontrold.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF3973D41997900DF147B24 /* libPods-org.eyebeam.selfcontrold.a */; }; + 814B43720F59039AD312D69F /* SCPinnedHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7620E0568062C60FE36D3B /* SCPinnedHosts.m */; }; + 85BDD37D005DD18B0FEF9609 /* SCBlockClock.m in Sources */ = {isa = PBXBuildFile; fileRef = D483750E234BD131B4D3D705 /* SCBlockClock.m */; }; 8CA8987104D2956493D6AF6B /* Pods_SelfControl_SelfControlTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F41DEF1E3926B4CF3AE2B76C /* Pods_SelfControl_SelfControlTests.framework */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + A2EE8CF4722D0E9AF10DFFCB /* SCTrustedTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEFB5DF64C2C167C77F1936 /* SCTrustedTime.m */; }; + BA690D1AD4806A4CEF2922DB /* SCTrustedTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEFB5DF64C2C167C77F1936 /* SCTrustedTime.m */; }; + C9CFA33CD08F20F878270FBF /* SCPinnedHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7620E0568062C60FE36D3B /* SCPinnedHosts.m */; }; CB0385E119D77051004614B6 /* PreferencesAdvancedViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CB0385DD19D77051004614B6 /* PreferencesAdvancedViewController.xib */; }; CB0385E219D77051004614B6 /* PreferencesGeneralViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CB0385DF19D77051004614B6 /* PreferencesGeneralViewController.xib */; }; CB066F6C2652037E0076964D /* HostFileBlocker.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB0AE290FA74566006229B3 /* HostFileBlocker.m */; }; @@ -206,9 +217,12 @@ CBED7D9925ABB911003080D6 /* selfcontrol-cli in Copy Executable Helper Tools */ = {isa = PBXBuildFile; fileRef = CBA2AFD20F39EC12005AFEBE /* selfcontrol-cli */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; CBEE50C10F48C21F00F5DF1C /* TimerWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CBEE50C00F48C21F00F5DF1C /* TimerWindowController.m */; }; CBF3B574217BADD7006D5F52 /* SCSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = CBF3B573217BADD7006D5F52 /* SCSettings.m */; }; + D26FC97A4313152D82B52636 /* SCBlockClock.m in Sources */ = {isa = PBXBuildFile; fileRef = D483750E234BD131B4D3D705 /* SCBlockClock.m */; }; D4EDD26C770910569C31D36F /* libPods-SCKillerHelper.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF899A50A17F0C6C8C6B84A2 /* libPods-SCKillerHelper.a */; }; + D53DB30311254599F589F6E9 /* SCBlockClock.m in Sources */ = {isa = PBXBuildFile; fileRef = D483750E234BD131B4D3D705 /* SCBlockClock.m */; }; DC4DBA9148D8D67A11899C5E /* Pods_SelfControl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EBDE7B29D92764A409E4FDA /* Pods_SelfControl.framework */; }; E263B809965135813A557CD5 /* Pods_SelfControl_Killer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86DAD6532C67CBE72E99084C /* Pods_SelfControl_Killer.framework */; }; + EC65D5055C5CDFCECDB7FE91 /* SCBlockClock.m in Sources */ = {isa = PBXBuildFile; fileRef = D483750E234BD131B4D3D705 /* SCBlockClock.m */; }; F5B8CBEE19EE21C30026F3A5 /* SCTimeIntervalFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B8CBED19EE21C30026F3A5 /* SCTimeIntervalFormatter.m */; }; /* End PBXBuildFile section */ @@ -529,22 +543,29 @@ 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32B26CAAF2E2B648B3C0E892 /* Pods-SelfControl.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SelfControl.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SelfControl/Pods-SelfControl.debug.xcconfig"; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* SelfControl_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelfControl_Prefix.pch; sourceTree = ""; }; + 3310B533DAE070805ECF5C66 /* SCPinnedHosts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SCPinnedHosts.h; sourceTree = ""; }; + 3450A2A2F3A974C8EC3A69B8 /* LocalSigning.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LocalSigning.xcconfig; sourceTree = ""; }; 3EF418F71CC7F7FA002D99E8 /* nl */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; 3EF418F81CC7F7FA002D99E8 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; 50CA92A5EB2C31792CA00641 /* Pods-SelfControl Killer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SelfControl Killer.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SelfControl Killer/Pods-SelfControl Killer.debug.xcconfig"; sourceTree = ""; }; + 5B7620E0568062C60FE36D3B /* SCPinnedHosts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SCPinnedHosts.m; sourceTree = ""; }; 5FA850E53EB64C54A1404AEF /* Pods-SelfControl.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SelfControl.release.xcconfig"; path = "Pods/Target Support Files/Pods-SelfControl/Pods-SelfControl.release.xcconfig"; sourceTree = ""; }; 640D40CB16D6E962003034B3 /* it */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; 640D40CC16D6E962003034B3 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; 64682B3371BA0A5044028058 /* Pods-selfcontrol-cli.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-selfcontrol-cli.debug.xcconfig"; path = "Pods/Target Support Files/Pods-selfcontrol-cli/Pods-selfcontrol-cli.debug.xcconfig"; sourceTree = ""; }; 69102D5CD4E9672D0EFBF25B /* Pods-selfcontrol-cli.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-selfcontrol-cli.release.xcconfig"; path = "Pods/Target Support Files/Pods-selfcontrol-cli/Pods-selfcontrol-cli.release.xcconfig"; sourceTree = ""; }; 6EBDE7B29D92764A409E4FDA /* Pods_SelfControl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SelfControl.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 775932FDEC5FE972E702D6CE /* SCTrustedTimeTests.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SCTrustedTimeTests.m; sourceTree = ""; }; + 7780059D90429CAD9D925F31 /* SCBlockClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SCBlockClock.h; sourceTree = ""; }; 77CFA479BA7C3ECBC15F96D7 /* Pods-org.eyebeam.selfcontrold.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-org.eyebeam.selfcontrold.debug.xcconfig"; path = "Pods/Target Support Files/Pods-org.eyebeam.selfcontrold/Pods-org.eyebeam.selfcontrold.debug.xcconfig"; sourceTree = ""; }; + 7DEFB5DF64C2C167C77F1936 /* SCTrustedTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SCTrustedTime.m; sourceTree = ""; }; 86DAD6532C67CBE72E99084C /* Pods_SelfControl_Killer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SelfControl_Killer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8BF3973D41997900DF147B24 /* libPods-org.eyebeam.selfcontrold.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-org.eyebeam.selfcontrold.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* SelfControl.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SelfControl.app; sourceTree = BUILT_PRODUCTS_DIR; }; 949F9F8815B32EC6007B8B42 /* zh-Hans */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; 949F9F8D15B333A1007B8B42 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; + A0ABF5538520738322E1D87F /* SCTrustedTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SCTrustedTime.h; sourceTree = ""; }; AF899A50A17F0C6C8C6B84A2 /* libPods-SCKillerHelper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SCKillerHelper.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C72025F2499F9F07E281CB50 /* Pods-SelfControl-SelfControlTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SelfControl-SelfControlTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SelfControl-SelfControlTests/Pods-SelfControl-SelfControlTests.release.xcconfig"; sourceTree = ""; }; C85A094F15E20A0DB58665A8 /* libPods-selfcontrol-cli.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-selfcontrol-cli.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1464,6 +1485,8 @@ CBF3B572217BADD7006D5F52 /* SCSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCSettings.h; sourceTree = ""; }; CBF3B573217BADD7006D5F52 /* SCSettings.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SCSettings.m; sourceTree = ""; }; D0BABA9759C378EE7C619F91 /* Pods-SCKillerHelper.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SCKillerHelper.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SCKillerHelper/Pods-SCKillerHelper.debug.xcconfig"; sourceTree = ""; }; + D16D417A66377222AE733FD2 /* SCBlockClockTests.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SCBlockClockTests.m; sourceTree = ""; }; + D483750E234BD131B4D3D705 /* SCBlockClock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SCBlockClock.m; sourceTree = ""; }; E1139D5A5B92C88FFF62718F /* Pods-SCKillerHelper.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SCKillerHelper.release.xcconfig"; path = "Pods/Target Support Files/Pods-SCKillerHelper/Pods-SCKillerHelper.release.xcconfig"; sourceTree = ""; }; E3346B8A670C55C686428776 /* Pods-SelfControl-SelfControlTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SelfControl-SelfControlTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SelfControl-SelfControlTests/Pods-SelfControl-SelfControlTests.debug.xcconfig"; sourceTree = ""; }; EBDF1B23AA44B10313D79203 /* Pods-SelfControl Killer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SelfControl Killer.release.xcconfig"; path = "Pods/Target Support Files/Pods-SelfControl Killer/Pods-SelfControl Killer.release.xcconfig"; sourceTree = ""; }; @@ -1603,6 +1626,7 @@ CBB67D3225D6165B006E4BC9 /* ArgumentParser */, CBB60BE41F13441F00DCB597 /* Distribution Build */, DDDC709FF9E9196A96CA7BCF /* Pods */, + 3450A2A2F3A974C8EC3A69B8 /* LocalSigning.xcconfig */, ); name = SelfControl; sourceTree = ""; @@ -1658,6 +1682,8 @@ children = ( CB0EEF7720FE49020024D27B /* SCUtilityTests.m */, CB0EEF6120FD8CE00024D27B /* Info.plist */, + D16D417A66377222AE733FD2 /* SCBlockClockTests.m */, + 775932FDEC5FE972E702D6CE /* SCTrustedTimeTests.m */, ); path = SelfControlTests; sourceTree = ""; @@ -1758,6 +1784,12 @@ CBB1731320F041F4007FCAE9 /* SCMiscUtilities.m */, CB81AA3825B7D152006956F7 /* SCHelperToolUtilities.h */, CB81AA3925B7D152006956F7 /* SCHelperToolUtilities.m */, + 7780059D90429CAD9D925F31 /* SCBlockClock.h */, + D483750E234BD131B4D3D705 /* SCBlockClock.m */, + A0ABF5538520738322E1D87F /* SCTrustedTime.h */, + 7DEFB5DF64C2C167C77F1936 /* SCTrustedTime.m */, + 3310B533DAE070805ECF5C66 /* SCPinnedHosts.h */, + 5B7620E0568062C60FE36D3B /* SCPinnedHosts.m */, ); path = Utility; sourceTree = ""; @@ -2913,7 +2945,7 @@ CBDFFF4624A044C900622CEE /* Copy Daemon Launch Service */, CB5E5FF81C3A5FD10038F331 /* ShellScript */, CB81AB2725B7EFA4006956F7 /* Embed Frameworks */, - BED0609C15A860C955A3552D /* [CP] Embed Pods Frameworks */, + 18074E0F50576891796754E7 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -2934,7 +2966,7 @@ CB0EEF5920FD8CE00024D27B /* Sources */, CB0EEF5A20FD8CE00024D27B /* Frameworks */, CB0EEF5B20FD8CE00024D27B /* Resources */, - ED887BF54A55A00F42A6FD9C /* [CP] Embed Pods Frameworks */, + A90E36D275FE67D6D7D9178A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -2973,7 +3005,6 @@ CB9C80F419CFB79700CDCAE1 /* Frameworks */, CB9C80F519CFB79700CDCAE1 /* Resources */, CB9C813119CFBBD300CDCAE1 /* Copy Helper Tools */, - AF328C5935C794FB31FCD1B5 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -3025,10 +3056,10 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0930; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1620; TargetAttributes = { 8D1107260486CEB800E47090 = { - DevelopmentTeam = EG6ZYP3AQH; LastSwiftMigration = 1150; ProvisioningStyle = Manual; SystemCapabilities = { @@ -3039,25 +3070,20 @@ }; CB0EEF5C20FD8CE00024D27B = { CreatedOnToolsVersion = 9.4.1; - DevelopmentTeam = EG6ZYP3AQH; ProvisioningStyle = Automatic; }; CB74D1052480E506002B2079 = { - DevelopmentTeam = EG6ZYP3AQH; ProvisioningStyle = Manual; }; CB9C80F619CFB79700CDCAE1 = { CreatedOnToolsVersion = 6.0.1; - DevelopmentTeam = EG6ZYP3AQH; ProvisioningStyle = Automatic; }; CB9C811A19CFBA8500CDCAE1 = { CreatedOnToolsVersion = 6.0.1; - DevelopmentTeam = EG6ZYP3AQH; ProvisioningStyle = Manual; }; CBA2AFD10F39EC12005AFEBE = { - DevelopmentTeam = EG6ZYP3AQH; ProvisioningStyle = Manual; }; }; @@ -3426,6 +3452,80 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 18074E0F50576891796754E7 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-SelfControl/Pods-SelfControl-resources.sh", + "${PODS_ROOT}/FormatterKit/FormatterKit/FormatterKit.bundle", + "${PODS_ROOT}/LetsMove/Base.lproj", + "${PODS_ROOT}/LetsMove/ca.lproj", + "${PODS_ROOT}/LetsMove/cs.lproj", + "${PODS_ROOT}/LetsMove/da.lproj", + "${PODS_ROOT}/LetsMove/de.lproj", + "${PODS_ROOT}/LetsMove/el.lproj", + "${PODS_ROOT}/LetsMove/en.lproj", + "${PODS_ROOT}/LetsMove/es.lproj", + "${PODS_ROOT}/LetsMove/fr.lproj", + "${PODS_ROOT}/LetsMove/hu.lproj", + "${PODS_ROOT}/LetsMove/it.lproj", + "${PODS_ROOT}/LetsMove/ja.lproj", + "${PODS_ROOT}/LetsMove/ko.lproj", + "${PODS_ROOT}/LetsMove/mk.lproj", + "${PODS_ROOT}/LetsMove/nb.lproj", + "${PODS_ROOT}/LetsMove/nl.lproj", + "${PODS_ROOT}/LetsMove/pl.lproj", + "${PODS_ROOT}/LetsMove/pt.lproj", + "${PODS_ROOT}/LetsMove/pt_BR.lproj", + "${PODS_ROOT}/LetsMove/ru.lproj", + "${PODS_ROOT}/LetsMove/sk.lproj", + "${PODS_ROOT}/LetsMove/sr.lproj", + "${PODS_ROOT}/LetsMove/sv.lproj", + "${PODS_ROOT}/LetsMove/tr.lproj", + "${PODS_ROOT}/LetsMove/vi-VN.lproj", + "${PODS_ROOT}/LetsMove/zh_CN.lproj", + "${PODS_ROOT}/LetsMove/zh_TW.lproj", + "${BUILT_PRODUCTS_DIR}/MASPreferences/MASPreferences.framework/en.lproj/MASPreferencesWindow.nib", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FormatterKit.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Base.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ca.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/cs.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/da.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/de.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/el.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/en.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hu.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/it.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ja.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ko.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mk.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nb.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt_BR.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ru.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sk.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sv.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/tr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/vi-VN.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh_CN.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh_TW.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MASPreferencesWindow.nib", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SelfControl/Pods-SelfControl-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 2A27B423AFFABE56BC018570 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -3514,48 +3614,78 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - AF328C5935C794FB31FCD1B5 /* [CP] Embed Pods Frameworks */ = { + A90E36D275FE67D6D7D9178A /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SelfControl Killer/Pods-SelfControl Killer-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Sentry-framework/Sentry.framework", - ); - name = "[CP] Embed Pods Frameworks"; + "${PODS_ROOT}/Target Support Files/Pods-SelfControl-SelfControlTests/Pods-SelfControl-SelfControlTests-resources.sh", + "${PODS_ROOT}/FormatterKit/FormatterKit/FormatterKit.bundle", + "${PODS_ROOT}/LetsMove/Base.lproj", + "${PODS_ROOT}/LetsMove/ca.lproj", + "${PODS_ROOT}/LetsMove/cs.lproj", + "${PODS_ROOT}/LetsMove/da.lproj", + "${PODS_ROOT}/LetsMove/de.lproj", + "${PODS_ROOT}/LetsMove/el.lproj", + "${PODS_ROOT}/LetsMove/en.lproj", + "${PODS_ROOT}/LetsMove/es.lproj", + "${PODS_ROOT}/LetsMove/fr.lproj", + "${PODS_ROOT}/LetsMove/hu.lproj", + "${PODS_ROOT}/LetsMove/it.lproj", + "${PODS_ROOT}/LetsMove/ja.lproj", + "${PODS_ROOT}/LetsMove/ko.lproj", + "${PODS_ROOT}/LetsMove/mk.lproj", + "${PODS_ROOT}/LetsMove/nb.lproj", + "${PODS_ROOT}/LetsMove/nl.lproj", + "${PODS_ROOT}/LetsMove/pl.lproj", + "${PODS_ROOT}/LetsMove/pt.lproj", + "${PODS_ROOT}/LetsMove/pt_BR.lproj", + "${PODS_ROOT}/LetsMove/ru.lproj", + "${PODS_ROOT}/LetsMove/sk.lproj", + "${PODS_ROOT}/LetsMove/sr.lproj", + "${PODS_ROOT}/LetsMove/sv.lproj", + "${PODS_ROOT}/LetsMove/tr.lproj", + "${PODS_ROOT}/LetsMove/vi-VN.lproj", + "${PODS_ROOT}/LetsMove/zh_CN.lproj", + "${PODS_ROOT}/LetsMove/zh_TW.lproj", + "${BUILT_PRODUCTS_DIR}/MASPreferences/MASPreferences.framework/en.lproj/MASPreferencesWindow.nib", + ); + name = "[CP] Copy Pods Resources"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FormatterKit.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Base.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ca.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/cs.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/da.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/de.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/el.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/en.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hu.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/it.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ja.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ko.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mk.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nb.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt_BR.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ru.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sk.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sv.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/tr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/vi-VN.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh_CN.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh_TW.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MASPreferencesWindow.nib", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SelfControl Killer/Pods-SelfControl Killer-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - BED0609C15A860C955A3552D /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SelfControl/Pods-SelfControl-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/FormatterKit/FormatterKit.framework", - "${BUILT_PRODUCTS_DIR}/LetsMove/LetsMove.framework", - "${BUILT_PRODUCTS_DIR}/MASPreferences/MASPreferences.framework", - "${BUILT_PRODUCTS_DIR}/Sentry-framework/Sentry.framework", - "${BUILT_PRODUCTS_DIR}/TransformerKit/TransformerKit.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FormatterKit.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LetsMove.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MASPreferences.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TransformerKit.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SelfControl/Pods-SelfControl-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SelfControl-SelfControlTests/Pods-SelfControl-SelfControlTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; C4455A3F0260679D1BD5962E /* [CP] Check Pods Manifest.lock */ = { @@ -3666,32 +3796,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - ED887BF54A55A00F42A6FD9C /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SelfControl-SelfControlTests/Pods-SelfControl-SelfControlTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/FormatterKit/FormatterKit.framework", - "${BUILT_PRODUCTS_DIR}/LetsMove/LetsMove.framework", - "${BUILT_PRODUCTS_DIR}/MASPreferences/MASPreferences.framework", - "${BUILT_PRODUCTS_DIR}/Sentry-framework/Sentry.framework", - "${BUILT_PRODUCTS_DIR}/TransformerKit/TransformerKit.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FormatterKit.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LetsMove.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MASPreferences.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TransformerKit.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SelfControl-SelfControlTests/Pods-SelfControl-SelfControlTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -3727,6 +3831,9 @@ CB953114262BC64F000C8309 /* SCDurationSlider.m in Sources */, CBF3B574217BADD7006D5F52 /* SCSettings.m in Sources */, CB25806616C237F10059C99A /* NSString+IPAddress.m in Sources */, + EC65D5055C5CDFCECDB7FE91 /* SCBlockClock.m in Sources */, + A2EE8CF4722D0E9AF10DFFCB /* SCTrustedTime.m in Sources */, + 3D1962F9249CDADACC7209B6 /* SCPinnedHosts.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3751,6 +3858,11 @@ CB114284222CD4F0004B7868 /* SCSettings.m in Sources */, CB0EEF7820FE49030024D27B /* SCUtilityTests.m in Sources */, CB81A94D25B7B5B6006956F7 /* SCMigrationUtilities.m in Sources */, + D53DB30311254599F589F6E9 /* SCBlockClock.m in Sources */, + 4E79FF9C6273791588F4AAE7 /* SCBlockClockTests.m in Sources */, + 53A83D6C78E6B28B265DB92A /* SCTrustedTime.m in Sources */, + C9CFA33CD08F20F878270FBF /* SCPinnedHosts.m in Sources */, + 0B8DE13F1AC76A3492243EF7 /* SCTrustedTimeTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3784,6 +3896,9 @@ CB69C4EF25A3FD8A0030CFCD /* SCXPCAuthorization.m in Sources */, CB62FC4324B1329500ADBC40 /* PacketFilter.m in Sources */, CB62FC4224B1329200ADBC40 /* BlockManager.m in Sources */, + 3B32075B954DBAA7CDF5BE74 /* SCBlockClock.m in Sources */, + BA690D1AD4806A4CEF2922DB /* SCTrustedTime.m in Sources */, + 814B43720F59039AD312D69F /* SCPinnedHosts.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3792,6 +3907,7 @@ buildActionMask = 2147483647; files = ( CB81A9D225B7C269006956F7 /* SCBlockUtilities.m in Sources */, + 85BDD37D005DD18B0FEF9609 /* SCBlockClock.m in Sources */, CB9C80FF19CFB79700CDCAE1 /* AppDelegate.m in Sources */, CB9C80FC19CFB79700CDCAE1 /* main.m in Sources */, CB5DFCBA2251DD1F0084CEC2 /* SCConstants.m in Sources */, @@ -3827,6 +3943,7 @@ CB1CA64F25ABA5BB0084A551 /* SCXPCClient.m in Sources */, CB114283222CCF19004B7868 /* SCSettings.m in Sources */, CB81A9D325B7C269006956F7 /* SCBlockUtilities.m in Sources */, + D26FC97A4313152D82B52636 /* SCBlockClock.m in Sources */, CB9C812319CFBB4400CDCAE1 /* LaunchctlHelper.m in Sources */, CB1CA64D25ABA5BB0084A551 /* SCXPCAuthorization.m in Sources */, CBC1F4B826070358008E3FA8 /* SCFileWatcher.m in Sources */, @@ -3850,6 +3967,7 @@ CBADC27F25B22BC7000EE5BB /* SCSentry.m in Sources */, CB1CA64E25ABA5BB0084A551 /* SCXPCAuthorization.m in Sources */, CB81A9D125B7C269006956F7 /* SCBlockUtilities.m in Sources */, + 1F62DFC8BCDB5A0494F70778 /* SCBlockClock.m in Sources */, CBB67D5C25D6165B006E4BC9 /* NSArray+XPMArgumentsNormalizer.m in Sources */, CB5888E225F60DC300B5C64D /* HostFileBlockerSet.m in Sources */, CBB67D5D25D6165B006E4BC9 /* NSDictionary+RubyDescription.m in Sources */, @@ -4056,11 +4174,15 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_ENTITLEMENTS = SelfControl.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)", @@ -4068,14 +4190,19 @@ ); GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = SelfControl_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_BUNDLE_IDENTIFIER = "org.eyebeam.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = SelfControl; PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SDKROOT = macosx; SWIFT_OBJC_BRIDGING_HEADER = "SelfControl-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -4089,24 +4216,33 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_ENTITLEMENTS = SelfControl.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)", "$(PROJECT_DIR)", ); GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = SelfControl_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_BUNDLE_IDENTIFIER = "org.eyebeam.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = SelfControl; PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SDKROOT = macosx; SWIFT_OBJC_BRIDGING_HEADER = "SelfControl-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -4115,8 +4251,10 @@ }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3450A2A2F3A974C8EC3A69B8 /* LocalSigning.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; @@ -4131,6 +4269,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -4138,11 +4277,12 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "Mac Developer"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = EG6ZYP3AQH; ENABLE_HARDENED_RUNTIME = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = s; GCC_VERSION = ""; @@ -4158,15 +4298,15 @@ ONLY_ACTIVE_ARCH = YES; OTHER_CODE_SIGN_FLAGS = "-o library,hard,kill,runtime"; SDKROOT = macosx; - STRIP_INSTALLED_PRODUCT = NO; - STRIP_STYLE = debugging; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3450A2A2F3A974C8EC3A69B8 /* LocalSigning.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; @@ -4181,6 +4321,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -4188,10 +4329,11 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "Mac Developer"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = EG6ZYP3AQH; ENABLE_HARDENED_RUNTIME = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = ""; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -4206,8 +4348,6 @@ ONLY_ACTIVE_ARCH = NO; OTHER_CODE_SIGN_FLAGS = "-o library,hard,kill,runtime"; SDKROOT = macosx; - STRIP_INSTALLED_PRODUCT = NO; - STRIP_STYLE = debugging; }; name = Release; }; @@ -4227,6 +4367,7 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; @@ -4240,7 +4381,12 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = SelfControlTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = org.selfcontrolapp.SelfControlTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4263,13 +4409,19 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREFIX_HEADER = SelfControl_Prefix.pch; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = SelfControlTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = org.selfcontrolapp.SelfControlTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4282,25 +4434,30 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; + CREATE_INFOPLIST_SECTION_IN_BINARY = YES; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_HARDENED_RUNTIME = YES; GCC_DYNAMIC_NO_PIC = NO; GCC_MODEL_TUNING = G5; GCC_NO_COMMON_BLOCKS = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = SelfControl_Prefix.pch; GCC_VERSION = ""; INFOPLIST_FILE = "Daemon/selfcontrold-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + INFOPLIST_PREPROCESS = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ( - "-sectcreate", - __TEXT, - __info_plist, - "Daemon/selfcontrold-Info.plist", "-sectcreate", __TEXT, __launchd_plist, @@ -4324,23 +4481,28 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; + CREATE_INFOPLIST_SECTION_IN_BINARY = YES; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_HARDENED_RUNTIME = YES; GCC_MODEL_TUNING = G5; GCC_NO_COMMON_BLOCKS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = SelfControl_Prefix.pch; GCC_VERSION = ""; INFOPLIST_FILE = "Daemon/selfcontrold-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + INFOPLIST_PREPROCESS = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; OTHER_LDFLAGS = ( - "-sectcreate", - __TEXT, - __info_plist, - "Daemon/selfcontrold-Info.plist", "-sectcreate", __TEXT, __launchd_plist, @@ -4378,6 +4540,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; @@ -4394,7 +4557,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = "SelfControl Killer/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = "com.selfcontrolapp.SelfControl-Killer"; @@ -4423,6 +4590,7 @@ COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -4433,7 +4601,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = "SelfControl Killer/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.selfcontrolapp.SelfControl-Killer"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4458,7 +4630,9 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_IDENTITY = "Apple Development"; + DEAD_CODE_STRIPPING = YES; + ENABLE_HARDENED_RUNTIME = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; @@ -4475,6 +4649,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; + MACOSX_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4501,8 +4676,10 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_IDENTITY = "Apple Development"; COPY_PHASE_STRIP = YES; + DEAD_CODE_STRIPPING = YES; + ENABLE_HARDENED_RUNTIME = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -4513,6 +4690,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; + MACOSX_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; @@ -4527,11 +4705,13 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_IDENTITY = "Apple Development"; COPY_PHASE_STRIP = NO; CREATE_INFOPLIST_SECTION_IN_BINARY = YES; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(PLATFORM_DIR)/Developer/Library/Frameworks\n\n$(PLATFORM_DIR)/Developer/Library/Frameworks\n\n", ); @@ -4539,12 +4719,17 @@ GCC_MODEL_TUNING = G5; GCC_NO_COMMON_BLOCKS = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = SelfControl_Prefix.pch; GCC_VERSION = ""; INFOPLIST_FILE = "selfcontrol-cli-Info.plist"; INFOPLIST_PREPROCESS = YES; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_BUNDLE_IDENTIFIER = "org.eyebeam.selfcontrol-cli"; PRODUCT_NAME = "selfcontrol-cli"; PROVISIONING_PROFILE = ""; @@ -4562,22 +4747,29 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: Charles Stigler (EG6ZYP3AQH)"; + CODE_SIGN_IDENTITY = "Apple Development"; COPY_PHASE_STRIP = NO; CREATE_INFOPLIST_SECTION_IN_BINARY = YES; CURRENT_PROJECT_VERSION = 410; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(PLATFORM_DIR)/Developer/Library/Frameworks\n\n$(PLATFORM_DIR)/Developer/Library/Frameworks\n\n", ); GCC_MODEL_TUNING = G5; GCC_NO_COMMON_BLOCKS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = SelfControl_Prefix.pch; GCC_VERSION = ""; INFOPLIST_FILE = "selfcontrol-cli-Info.plist"; INFOPLIST_PREPROCESS = YES; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_BUNDLE_IDENTIFIER = "org.eyebeam.selfcontrol-cli"; PRODUCT_NAME = "selfcontrol-cli"; PROVISIONING_PROFILE = ""; diff --git a/selfcontrol-cli-Info.plist b/selfcontrol-cli-Info.plist index 7a16f7c9..e30149d6 100644 --- a/selfcontrol-cli-Info.plist +++ b/selfcontrol-cli-Info.plist @@ -53,7 +53,7 @@ SMPrivilegedExecutables org.eyebeam.selfcontrold - anchor apple generic and identifier "org.eyebeam.selfcontrold" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = EG6ZYP3AQH) + anchor apple generic and identifier "org.eyebeam.selfcontrold" and certificate leaf[subject.OU] = "$(DEVELOPMENT_TEAM)"