Ausfuhr-Erklärung zur Verschlüsselung hinterlegt

ITSAppUsesNonExemptEncryption: false in der Info.plist. Damit entfällt
das „Missing Compliance" bei jedem neuen Build in App Store Connect.

Die Erklärung trifft zu: die App nutzt ausschließlich Verschlüsselung
des Betriebssystems — HTTPS über URLSession und den Schlüsselbund für
die Tokens. Eigene Algorithmen gibt es keine; im Quelltext steht nur ein
`import Security`, und das für SecItemAdd und SecItemCopyMatching.

Als Vorbehalt im Quelltext vermerkt: VLCKit ist ein fremdes Binary mit
eigenen Netzwerkbibliotheken. Solange nur Dateien vom eigenen Server
laufen, bleibt es bei Standardverfahren — käme etwas mit eigener
Verschlüsselung dazu, gehört der Wert überprüft.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-09-11 22:14:28 +02:00
co-authored by Claude Opus 5
parent 3229564075
commit 8a77ab6600
3 changed files with 2374 additions and 2353 deletions
+2
View File
@@ -31,6 +31,8 @@
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
+67 -66
View File
@@ -922,6 +922,56 @@
}
}
},
"downloads.quality.approx %@ %@" : {
"comment" : "Platzhalter: Stufenname, geschätzte Größe",
"extractionState" : "stale",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@ · etwa %@"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@ · about %@"
}
}
}
},
"downloads.quality.hint" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Niedrigere Stufen rechnet der Server unterwegs herunter. Das dauert länger, spart aber deutlich Platz."
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Lower levels are transcoded by the server. That takes longer but saves a lot of space."
}
}
}
},
"downloads.quality.title" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "In welcher Qualität?"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Which quality?"
}
}
}
},
"downloads.queued" : {
"localizations" : {
"de" : {
@@ -3110,6 +3160,23 @@
}
}
},
"signIn.manualHint" : {
"comment" : "Hinweis, wenn die Browser-Verknüpfung nicht greift",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Hat das Fenster nicht verknüpft? Öffne plex.tv/link und gib diesen Code ein:"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Window didn't link? Open plex.tv/link and enter this code:"
}
}
}
},
"signIn.privacy" : {
"localizations" : {
"de" : {
@@ -3583,72 +3650,6 @@
}
}
}
},
"signIn.manualHint": {
"comment": "Hinweis, wenn die Browser-Verknüpfung nicht greift",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Hat das Fenster nicht verknüpft? Öffne plex.tv/link und gib diesen Code ein:"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Window didn't link? Open plex.tv/link and enter this code:"
}
}
}
},
"downloads.quality.title": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "In welcher Qualität?"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Which quality?"
}
}
}
},
"downloads.quality.hint": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Niedrigere Stufen rechnet der Server unterwegs herunter. Das dauert länger, spart aber deutlich Platz."
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Lower levels are transcoded by the server. That takes longer but saves a lot of space."
}
}
}
},
"downloads.quality.approx %@ %@": {
"comment": "Platzhalter: Stufenname, geschätzte Größe",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "%@ · etwa %@"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "%@ · about %@"
}
}
}
}
},
"version" : "1.1"
+18
View File
@@ -100,6 +100,24 @@ targets:
CFBundleURLSchemes:
- com.scarriffleservices.flixy
# Die Ausfuhr-Erklärung zur Verschlüsselung.
#
# `false` heißt: die App nutzt ausschließlich Verschlüsselung, die
# unter die Ausnahmeregelung fällt. Das trifft hier zu — HTTPS über
# URLSession und der Schlüsselbund für die Tokens, beides vom
# Betriebssystem gestellt. Eigene Algorithmen gibt es keine.
#
# Ohne diesen Eintrag fragt App Store Connect bei JEDEM Build erneut
# („Missing Compliance"), und der Build lässt sich bis dahin nicht
# verteilen.
#
# Zu beachten, falls sich das ändert: VLCKit ist ein fremdes Binary
# und bringt eigene Netzwerkbibliotheken mit. Solange nur Dateien vom
# eigenen Server abgespielt werden, bleibt es bei Standardverfahren.
# Käme irgendwann etwas mit eigener Verschlüsselung dazu — DRM etwa —,
# gehört dieser Wert überprüft.
ITSAppUsesNonExemptEncryption: false
# Ohne diesen Schlüssel lehnt ActivityKit jede Anfrage ab — und
# zwar wortlos, was die Suche nach dem Grund unangenehm macht.
NSSupportsLiveActivities: true