Skip to content
Open
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
16 changes: 7 additions & 9 deletions Snap-Safe-Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- Export compliance: SnapSafe uses non-exempt encryption (AES-256-GCM via
CryptoKit is its core feature), but ITSAppUsesNonExemptEncryption is
deliberately NOT set here. Declaring it without a matching
ITSEncryptionExportComplianceCode makes App Store Connect reject the
upload (error 90592), and the app has no approved encryption
documentation/code yet. Leaving the key out makes App Store Connect ask
the export compliance questions per build; answer them truthfully
(uses encryption: yes, standard algorithms). If App Store Connect later
issues a code, add both keys back together. -->
<!-- SnapSafe encrypts user media with AES-256-GCM (CryptoKit) as its core
feature, which is NOT exempt encryption, so this must be true.
App Store Connect rejects an upload that declares this without an
ITSEncryptionExportComplianceCode matching the app's approved
encryption documentation (altool error 90592). -->
<key>ITSAppUsesNonExemptEncryption</key>
<true/>
</dict>
</plist>
4 changes: 2 additions & 2 deletions SnapSafe.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1379,7 +1379,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2;
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_ASSET_PATHS = "\"SnapSafe/Preview Content\"";
DEVELOPMENT_TEAM = BP75F4S5N3;
ENABLE_PREVIEWS = YES;
Expand Down Expand Up @@ -1424,7 +1424,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 2;
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_ASSET_PATHS = "\"SnapSafe/Preview Content\"";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8P3G3HT4J5;
Expand Down
9 changes: 4 additions & 5 deletions docs/HOW-TO-RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,10 @@ git push origin vX.Y.Z
## 5. App Store Connect (manual)

- [ ] Wait for the build to finish processing.
- [ ] Answer the export compliance questions for the build (it shows "Missing Compliance" until you do).
SnapSafe uses non-exempt encryption: answer yes, standard algorithms. `Snap-Safe-Info.plist`
deliberately omits `ITSAppUsesNonExemptEncryption`: setting it without an
`ITSEncryptionExportComplianceCode` makes the upload fail with error 90592, and the app has no
approved encryption documentation code yet. If App Store Connect issues one, add both keys.
- [ ] Check export compliance for the build. `Snap-Safe-Info.plist` declares
`ITSAppUsesNonExemptEncryption = YES` (SnapSafe's AES-256-GCM media encryption is not exempt).
App Store Connect rejects the upload with error 90592 unless the plist also carries an
`ITSEncryptionExportComplianceCode` matching the app's approved encryption documentation.
- [ ] Create the new version, enter "What's New" release notes, and select the build.
- [ ] Update screenshots if the UI changed.
- [ ] Submit for review; release once approved.
Expand Down
Loading