fix(passkeys_darwin): declare a privacy manifest for Apple platforms - #317
Merged
Merged
Conversation
The plugin's Swift sources touch no required-reason API: they import AuthenticationServices, LocalAuthentication, Foundation and Combine only, and Keychain is not on Apple's list, so the manifest declares no tracking, no collected data and an empty accessed-API list. Wired into both build paths, since the plugin ships SwiftPM and CocoaPods: a resource bundle in the podspec and a processed resource in Package.swift.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Declares the plugin's behavior on Apple platforms: no tracking, no data collected, and no required-reason API use.
Why the accessed-API list is empty
An empty
NSPrivacyAccessedAPITypesis an affirmative claim that the plugin touches none of Apple's required-reason APIs, so it was checked rather than assumed. All five Swift sources were grepped for every category's symbols (file timestamps,UserDefaults, system boot time, disk space, active keyboard) plus Keychain andSecItem: zero hits. The imports areAuthenticationServices,LocalAuthentication,Foundation,CombineandFlutter, none of which are required-reason APIs, and Keychain is not on Apple's list either.Without a manifest, apps embedding this plugin have nothing from us in the privacy report Xcode aggregates at submission.
Placement
passkeys_darwinis the only package in the repository with Apple native code, so one manifest covers iOS and macOS. It is wired into both build paths the plugin ships:passkeys_darwin_privacyresource bundle, the same shapeurl_launcher_iosand the other first-party plugins use.resources: [.process("Resources")]on the target.Testing
plutil -pconfirms the plist parses withNSPrivacyTrackingfalse and three empty arrays. Thepod installrun needed the example's Podfile temporarily raised to iOS 15.0, because Flutter 3.47's generatedFlutter.podspecrequires 15.0 while the example pins 13.0; CI is unaffected since it pins Flutter 3.44.5.flutter build ioswas not run locally (Command Line Tools only, no Xcode), so the CocoaPods and SwiftPM build jobs in CI are the check for that.Typed
fixrather thanchoreon purpose: achorecommit produces no version bump, and the manifest only reaches consumers oncepasskeys_darwinis published.