Skip to content

Commit bcfd351

Browse files
TomKempOliverPearmain-PushergrzesiekkoOliverPearmaindaniellevass
authored
End-to-end encryption support (#264)
* Added Carthage and `Swift-Sodium` to main project target. * Implemented one half of E2E encryption. This part decrypts the payload from an event but at present its necessary to hardcode your decryption key which in future will be provided in the auth response from the server. * Updated `PusherEvent` so that it does not attempt to decrypt the payload of Pusher 'System' events (that have event names prefixed "pusher:" or "pusher_internal:") * Removing "Copy Carthage Dependencies" Build Phase as it seems the workspace/projects are setup so that the demo apps copy the Carthage frameworks. * Added Sodium dependency to podspec. * Store shared secret for private encrypted channels. * Two Targets/Frameworks (PusherSwift & PusherSwiftWithEncryption) (#249) * Removed empty Images.xcassets reference from`iOS Example Swift.xcodeproj` * Consumption-test: Added shared code * Consumption-tests: adding .gitignore * Consumption-tests: adding first pass at Carthage tests. * Consumption-tests: add macOS targets. * Consumption-tests: resolved a couple of build warnings. * Consumption-tests: updated scripts so they can be executed from any directory, * Consumption-tests: adding `Carthage-MinimumXcode` for testing Xcode 11. * Consumption-tests: moved important build settings into xcconfig. * Consumption-tests: renamed Carthage-LatestXcode to Carthage-Latest and Carthage-MinimumXcode to Carthage-Minimum (since they verify more than just the Xcode version, also swift versions and deployment_targets) * Consumption-tests: introduced a `config.xconfig` to shortcut to X_SUPPORTED_VERSIONS.xcconfig because this means that the xcodeproj's are identical and can be copied and pasted. * Consumption-tests: added `run-tests-LOCALLY.sh` * Consumption-tests: added `say` command for Xcode missing failure. * Consumption-tests: updated projects so that `carthage-copy-platform-specific-frameworks.sh` is only invoked if its a Carthage based project (this will allow us to use the same project for Cocoapods). * Consumption-tests: fixed `carthage-checkout.sh` in the event that working copy is clean. * Consumption-tests: TEMPORARILY removed tvOS support so that things actually compile successfully. * Consumption-tests: ensure script exits with error code so a calling script does not continue if carthage update fails. * Consumption-tests: improved console output (so its clearer which test/scheme failed) * Consumption-tests: corrected accidental check in. * Consumption-tests: added `-allowProvisioningUpdates` flag to `xcodebuild` so that it pulls latest provisioning profiles from Apple. * Consumption-tests: moved `assignXcodeAppPathFor` function into dedicated file so it can be shared between scripts. * Consumption-tests: added option of specifying flags with the `run-tests-LOCALLY.sh` script to skip certain aspects. * Consumption-tests: rijigged some of the script operations in preparation of adding Cocoapods support. * Consumption-tests: removed Carthage specific FRAMEWORK_SEARCH_PATHS out of project and into xcconfig. * Consumption-tests: simplified checkout.sh scripts. * Consumption-tests: removed hardcoding of X_SUPPORTED_XCODE_VERSION in favour of deriving the value from the directory name. * Consumption-tests: further removal of hardcoded X_SUPPORTED_XCODE_VERSION in favour of deriving the value from the directory name. Has allowed me to get rid of some scripts altogether. * Consumption-tests: added Cocoapods-Latest support. * *** Because Sodium has a MACOSX_DEPLOYMENT_TARGET of 10.11 we must increase our MACOSX_DEPLOYMENT_TARGET to 10.11. *** * Consumption-tests: added Cocoapods-Minimum support. * Consumption-tests: removed explicit reference to PusherSwift.framework from the projects. This means all the projects are identical. * Added `PusherSwiftWithEncryption` target/framework. * Updated .travis.yml to use `xcode11` * Updated SUPPORTED_PLATFORMS so that PusherSwift supports iOS, macOS and tvOS but PusherSwiftWithEncryption only supports iOS & macOS (since Sodium doesn't work with tvOS). * Updated simulator device now we're using Xcode 11. * Consumption-tests: Added *-WithEncryption support. * Removed all DEPLOYMENT_TARGET values from *targets* because it is already defined in the *project* settings. * Consumption-tests: removed `pod deintegrate` step because this was causing the project files to change on every run (and pollute the working copy) * Consumption-tests: removed "Recovered References" from projects. * Consumption-tests: Added SwiftPackageManager support. * Removed `Sodium` from list of copied Carthage frameworks in `PusherSwiftTests` since its no longer used. This was causing the tvOS tests to fail. * Updated README.md to say that only Xcode 11 and above is supported. * First draft of `Consumption-Tests/README.md` * Further updates to `Consumption-Tests/README.md` * `Consumption-Tests/README.md` anchor fixes. * `Consumption-Tests/README.md` anchor fixes. * Consumption-tests: Added scripts for CI. * Removed tvos `PusherSwiftWithEncryption.podspec` since this framework does not support tvOS. * Updated SWIFT_VERSION to 4.2 since this is what we say we support in the main README.md. Also improvements to `Consumption-Tests/README.md`. * Fixed a small issue with updating SWIFT_VERSION to 4.2 * Add tvOS tests (#250) * Consumption-tests: fixed issues where certain DEPLOYMENT_TARGETs were harcoded in the project file and therefore not being derived from the xcconfig. This has resolved the weird issue with not being able set the latest IPHONEOS_DEPLOYMENT_TARGET higher than 10. * Consumption-tests: The previous commit/fix has also resolved an issue I was having with Cocoapods and has allow me to remove the custom setting of `MACOSX_DEPLOYMENT_TARGET`. Co-authored-by: Oliver Pearmain <oliverpearmain@gmail.com> Co-authored-by: Tom Kemp <TomKemp@users.noreply.github.com> * Send test code coverage reports to codecov.io * cache carthage dependencies on travis * Merge retry logic * Use single event queue for all channels * Make tests build (but not pass) * Various test fixes * Fix presence channel tests * Fix authentication tests * Change PusherEvent tests to PusherConcreteEventFactory tests * Fix remaining tests * Don't share event factory between tests * Fix decryption tests * Add test for subscribing to private encrypted channel * Add test for subscribing to private encrypted channel * Rename decryption tests * Add KeyProvider tests * Delegate method for failed decryption * Refactor PrivateEncryptedChannelTests and add test for decrypting a message * remove rogue s character * Refactor PrivateEncryptedChannelTests and add test for retrying auth once * Add decryption failure delegate method * Adjust delegate protocol and handle invalid messages * Data is optional * remove another rogue s * Add decryption failure delegate method (#254) Add decryption failure delegate method and handle invalid messages * Add tests for ensuring failed to decrypt callback is called and two messages received * Restructure tests * Add EventQueue tests * Simplify event queue and add extra tests * Fix decryption testss * Clarify comment * Add additional test for encrypted message payload * Minor test changes * Make key provider thread safe (#257) * Use XCTest expectation helpers consistently * A bad encrypted payload should result in a call to the failedToDecrypt callback * Add warning message for wrong PusherSwift version (#259) Add warning message for wrong PusherSwift version * Store the decryption key in the channel (#260) * Store the decryption key in the channel * Prepare auth request on main thread * Add comments * Upgrade to Swift 5 (for end-to-end encryption release) (#261) * Update Xcode version * Update main schemes to Swift 5 * Update example project to Swift 5 * Update Package.swift and Podspecs * Update minimum supported versions * Bump reachability * Bump Starscream version * Amend Package.swift version * Update README * Fix build warnings * Correct minimum version * Match Cartfile Sodium version in Podspec * Add additional HMAC tests * Fix localization warnings * Remove Consumption Tests Pacakge.resolved * Ignore Package.swift files * Private Encrypted Channel Docs (#256) * add instructions to use private encrypted channels in the readme * english is hard * document new method to the connection delegate * Update installation instructions * Update README.md Co-Authored-By: Tom Kemp <TomKemp@users.noreply.github.com> * Update README.md Co-Authored-By: Tom Kemp <TomKemp@users.noreply.github.com> * Update installation instructions for private encrypted channels and carthage * Update hyperlink to private encrypted channel docs * Add info in the beginning instructions for private encrypted channels. * Move the installation instructions to the top of each section for private encrypted channels Co-authored-by: Tom Kemp <TomKemp@users.noreply.github.com> * Change to encrypted flag to useTLS (#262) * Fixes for PusherTopLevelApiTests * Fixes for PusherEventFactory+DecryptionTests * Fixes for PusherEventQueue+DecryptionTests * Ensure test events pass through event queue * Check channel name in auth error test * Match old authorizer error behavior * Update PusherAuth in README * Ensure target specific tests only import correct target * Sodium isn't needed in the existing sample projects * Add warning message for unsupported auth method * Add details about supported auth methods to README * Don't send client events on encrypted channels * Add client events to the limitations in README * Add tests for all supported auth methods * Update README.md Co-Authored-By: Mike Pye <mail@mdpye.co.uk> Co-authored-by: Oliver Pearmain <oliver.pearmain@pusher.com> Co-authored-by: OliverPearmain-Pusher <58689743+OliverPearmain-Pusher@users.noreply.github.com> Co-authored-by: Grzegorz Kozłowski <grzegorz.kozlowski@me.com> Co-authored-by: Grzegorz Kozłowski <grzesiekko@users.noreply.github.com> Co-authored-by: Oliver Pearmain <oliverpearmain@gmail.com> Co-authored-by: Danielle Vass <danielle.vass@pusher.com> Co-authored-by: Danielle Vass <daniellevass@users.noreply.github.com> Co-authored-by: Mike Pye <mail@mdpye.co.uk>
1 parent 07f8a81 commit bcfd351

File tree

198 files changed

+27272
-656
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

198 files changed

+27272
-656
lines changed

.travis.yml

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
language: objective-c
2-
osx_image: xcode10.2
2+
osx_image: xcode11
33
sudo: false
4+
cache:
5+
directories:
6+
- Carthage
47
env:
5-
- iOS= DST='platform=iOS Simulator,name=iPhone X' ACTION=test DEVICE='iPhone X (11.3)'
8+
- iOS= DST='platform=iOS Simulator,name=iPhone 11' ACTION=test DEVICE='iPhone 11 (11.3)'
69
- tvOS= DST='platform=tvOS Simulator,name=Apple TV 4K' ACTION=test DEVICE='Apple TV 4K (11.3)'
710
- macOS= DST='platform=OS X' ACTION=test
811
before_install:
@@ -15,17 +18,20 @@ before_install:
1518
brew install carthage;
1619
fi
1720
- gem install xcpretty --no-document
18-
- carthage bootstrap --no-use-binaries
21+
- carthage bootstrap --no-use-binaries --cache-builds
1922
- SIMULATOR_ID=$(xcrun instruments -s | grep -o "$DEVICE \[.*\]" | grep -o "\[.*\]" | sed "s/^\[\(.*\)\]$/\1/")
2023
- echo "$SIMULATOR_ID"
2124
before_deploy:
2225
- carthage build --no-skip-current
2326
- carthage archive PusherSwift
27+
- carthage archive PusherSwiftWithEncryption
2428
deploy:
2529
provider: releases
2630
api_key:
2731
secure: cjodA0I5fTEU60M+W1NNCj18EpL7yt3uxLN1aeexN33HfRoo153oi4jV/FWlPtQ4QC5FhFF+Nbc69V2paOSrI4iht+UB2Hb0jYTuHWv8ecYa33GFksl7zD9BCf8D3RZqIagTzJC7Vf0FqKKlspZMwIMAL02Z5uwsp5h4Zjrq8lo=
28-
file: PusherSwift.framework.zip
32+
file:
33+
- PusherSwift.framework.zip
34+
- PusherSwiftWithEncryption.framework.zip
2935
skip_cleanup: true
3036
on:
3137
repo: pusher/pusher-websocket-swift
@@ -35,10 +41,15 @@ script:
3541
- xcodebuild -version
3642
- xcodebuild -workspace PusherSwift.xcworkspace -list
3743
- if [ "$DST" != "platform=OS X" ]; then
38-
echo "$SIMULARTOR_ID";
44+
echo "$SIMULATOR_ID";
3945
open -a "simulator" --args -CurrentDeviceUDID $SIMULATOR_ID || true; sleep 20;
4046
fi
4147
- xcodebuild -scheme PusherSwift -destination "$DST" -project PusherSwift.xcodeproj clean build | xcpretty -tc;
4248
- xcodebuild -scheme PusherSwift -destination "$DST" -project PusherSwift.xcodeproj -enableCodeCoverage YES $ACTION | xcpretty -tc;
49+
- if [[ "$DST" != "platform=tvOS"* ]]; then
50+
xcodebuild -scheme PusherSwiftWithEncryption -destination "$DST" -project PusherSwift.xcodeproj clean build | xcpretty -tc;
51+
xcodebuild -scheme PusherSwiftWithEncryption -destination "$DST" -project PusherSwift.xcodeproj -enableCodeCoverage YES $ACTION | xcpretty -tc;
52+
fi
4353
after_success:
4454
- sleep 5
55+
- bash <(curl -s https://codecov.io/bash)

Cartfile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
github "ashleymills/Reachability.swift" == 4.3.0
2-
github "daltoniam/Starscream" == 3.0.6
1+
github "ashleymills/Reachability.swift" ~> 5.0.0
2+
github "daltoniam/Starscream" ~> 3.1.0
3+
github "jedisct1/swift-sodium" == 0.8.0

Cartfile.resolved

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
github "ashleymills/Reachability.swift" "v4.3.0"
2-
github "daltoniam/Starscream" "3.0.6"
1+
github "ashleymills/Reachability.swift" "v5.0.0"
2+
github "daltoniam/Starscream" "3.1.1"
3+
github "jedisct1/swift-sodium" "0.8.0"

Consumption-Tests/.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
3+
# Cartfile's are autogenerated with the `checkout.sh` script
4+
# We do not want to version anything Carthage related to emulate a fresh Carthage checkout
5+
Cartfile
6+
Cartfile.resolved
7+
Carthage
8+
9+
10+
# Podfile's are autogenerated with the `checkout.sh` script
11+
# We do not want to version anything Cocoapods related to emulate a fresh Cocoapods checkout
12+
Podfile
13+
Podfile.lock
14+
Pods
15+
16+
# We do not want to version anything SPM related to emulate a fresh SPM checkout
17+
Package.resolved
18+

Consumption-Tests/Carthage-Latest/Carthage-Latest.xcworkspace/contents.xcworkspacedata

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>

Consumption-Tests/Carthage-Latest/ObjectiveC.xcodeproj/project.pbxproj

Lines changed: 1073 additions & 0 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1140"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "739B566B24362B5300937ECD"
18+
BuildableName = "ObjectiveC-iOS-WithEncryption.app"
19+
BlueprintName = "ObjectiveC-iOS-WithEncryption"
20+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
<BuildableProductRunnable
44+
runnableDebuggingMode = "0">
45+
<BuildableReference
46+
BuildableIdentifier = "primary"
47+
BlueprintIdentifier = "739B566B24362B5300937ECD"
48+
BuildableName = "ObjectiveC-iOS-WithEncryption.app"
49+
BlueprintName = "ObjectiveC-iOS-WithEncryption"
50+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
51+
</BuildableReference>
52+
</BuildableProductRunnable>
53+
</LaunchAction>
54+
<ProfileAction
55+
buildConfiguration = "Release"
56+
shouldUseLaunchSchemeArgsEnv = "YES"
57+
savedToolIdentifier = ""
58+
useCustomWorkingDirectory = "NO"
59+
debugDocumentVersioning = "YES">
60+
<BuildableProductRunnable
61+
runnableDebuggingMode = "0">
62+
<BuildableReference
63+
BuildableIdentifier = "primary"
64+
BlueprintIdentifier = "739B566B24362B5300937ECD"
65+
BuildableName = "ObjectiveC-iOS-WithEncryption.app"
66+
BlueprintName = "ObjectiveC-iOS-WithEncryption"
67+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
68+
</BuildableReference>
69+
</BuildableProductRunnable>
70+
</ProfileAction>
71+
<AnalyzeAction
72+
buildConfiguration = "Debug">
73+
</AnalyzeAction>
74+
<ArchiveAction
75+
buildConfiguration = "Release"
76+
revealArchiveInOrganizer = "YES">
77+
</ArchiveAction>
78+
</Scheme>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1140"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "331F37271D82CAB900AE2852"
18+
BuildableName = "ObjectiveC-iOS-WithoutEncryption.app"
19+
BlueprintName = "ObjectiveC-iOS-WithoutEncryption"
20+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
<BuildableProductRunnable
44+
runnableDebuggingMode = "0">
45+
<BuildableReference
46+
BuildableIdentifier = "primary"
47+
BlueprintIdentifier = "331F37271D82CAB900AE2852"
48+
BuildableName = "ObjectiveC-iOS-WithoutEncryption.app"
49+
BlueprintName = "ObjectiveC-iOS-WithoutEncryption"
50+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
51+
</BuildableReference>
52+
</BuildableProductRunnable>
53+
</LaunchAction>
54+
<ProfileAction
55+
buildConfiguration = "Release"
56+
shouldUseLaunchSchemeArgsEnv = "YES"
57+
savedToolIdentifier = ""
58+
useCustomWorkingDirectory = "NO"
59+
debugDocumentVersioning = "YES">
60+
<BuildableProductRunnable
61+
runnableDebuggingMode = "0">
62+
<BuildableReference
63+
BuildableIdentifier = "primary"
64+
BlueprintIdentifier = "331F37271D82CAB900AE2852"
65+
BuildableName = "ObjectiveC-iOS-WithoutEncryption.app"
66+
BlueprintName = "ObjectiveC-iOS-WithoutEncryption"
67+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
68+
</BuildableReference>
69+
</BuildableProductRunnable>
70+
</ProfileAction>
71+
<AnalyzeAction
72+
buildConfiguration = "Debug">
73+
</AnalyzeAction>
74+
<ArchiveAction
75+
buildConfiguration = "Release"
76+
revealArchiveInOrganizer = "YES">
77+
</ArchiveAction>
78+
</Scheme>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1140"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "739B567A24362B5F00937ECD"
18+
BuildableName = "ObjectiveC-macOS-WithEncryption.app"
19+
BlueprintName = "ObjectiveC-macOS-WithEncryption"
20+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
<BuildableProductRunnable
44+
runnableDebuggingMode = "0">
45+
<BuildableReference
46+
BuildableIdentifier = "primary"
47+
BlueprintIdentifier = "739B567A24362B5F00937ECD"
48+
BuildableName = "ObjectiveC-macOS-WithEncryption.app"
49+
BlueprintName = "ObjectiveC-macOS-WithEncryption"
50+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
51+
</BuildableReference>
52+
</BuildableProductRunnable>
53+
</LaunchAction>
54+
<ProfileAction
55+
buildConfiguration = "Release"
56+
shouldUseLaunchSchemeArgsEnv = "YES"
57+
savedToolIdentifier = ""
58+
useCustomWorkingDirectory = "NO"
59+
debugDocumentVersioning = "YES">
60+
<BuildableProductRunnable
61+
runnableDebuggingMode = "0">
62+
<BuildableReference
63+
BuildableIdentifier = "primary"
64+
BlueprintIdentifier = "739B567A24362B5F00937ECD"
65+
BuildableName = "ObjectiveC-macOS-WithEncryption.app"
66+
BlueprintName = "ObjectiveC-macOS-WithEncryption"
67+
ReferencedContainer = "container:ObjectiveC.xcodeproj">
68+
</BuildableReference>
69+
</BuildableProductRunnable>
70+
</ProfileAction>
71+
<AnalyzeAction
72+
buildConfiguration = "Debug">
73+
</AnalyzeAction>
74+
<ArchiveAction
75+
buildConfiguration = "Release"
76+
revealArchiveInOrganizer = "YES">
77+
</ArchiveAction>
78+
</Scheme>

0 commit comments

Comments
 (0)