Title: Apple App Store rejecting apps because of "(ITMS-91061) Missing privacy manifest" · Issue #132006 · python/cpython · GitHub
Open Graph Title: Apple App Store rejecting apps because of "(ITMS-91061) Missing privacy manifest" · Issue #132006 · python/cpython
X Title: Apple App Store rejecting apps because of "(ITMS-91061) Missing privacy manifest" · Issue #132006 · python/cpython
Description: I've received a report (beeware/Python-Apple-support#268) that the iOS App Store is now rejecting apps that include a Python framework with the following error: ITMS-91061: Missing privacy manifest - Your app includes “Frameworks/_hashli...
Open Graph Description: I've received a report (beeware/Python-Apple-support#268) that the iOS App Store is now rejecting apps that include a Python framework with the following error: ITMS-91061: Missing privacy manifest...
X Description: I've received a report (beeware/Python-Apple-support#268) that the iOS App Store is now rejecting apps that include a Python framework with the following error: ITMS-91061: Missing privacy mani...
Opengraph URL: https://github.com/python/cpython/issues/132006
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Apple App Store rejecting apps because of \"(ITMS-91061) Missing privacy manifest\"","articleBody":"\nI've received a report (beeware/Python-Apple-support#268) that the iOS App Store is now rejecting apps that include a Python framework with the following error:\n\n\u003e ITMS-91061: Missing privacy manifest - Your app includes “Frameworks/_hashlib.framework/_hashlib.cpython-39-iphoneos.dylib”, which includes BoringSSL / openssl_grpc, an SDK that was identified in the documentation as a commonly used third-party SDK. If a new app includes a commonly used third-party SDK, or an app update adds a new commonly used third-party SDK, the SDK must include a privacy manifest file. Please contact the provider of the SDK that includes this file to get an updated SDK version with a privacy manifest. For more details about this policy, including a list of SDKs that are required to include signatures and manifests, visit: https://developer.apple.com/support/third-party-SDK-requirements.\n\u003e\n\u003e ITMS-91061: Missing privacy manifest - Your app includes “Frameworks/_ssl.framework/_ssl.cpython-39-iphoneos.dylib”, which includes BoringSSL / openssl_grpc, an SDK that was identified in the documentation as a commonly used third-party SDK. If a new app includes a commonly used third-party SDK, or an app update adds a new commonly used third-party SDK, the SDK must include a privacy manifest file. Please contact the provider of the SDK that includes this file to get an updated SDK version with a privacy manifest. For more details about this policy, including a list of SDKs that are required to include signatures and manifests, visit: https://developer.apple.com/support/third-party-SDK-requirements.\n\nThe two libraries that are being flagged are libraries that link against OpenSSL, which has been flagged by Apple as an [SDK that require(s) a privacy manifest and signature](https://developer.apple.com/support/third-party-SDK-requirements/). \n\nI haven't confirmed if this is also the case for the Mac App Store, but it seems highly likely that it will be.\n\nThe [documentation for Privacy Manifests](https://developer.apple.com/documentation/bundleresources/privacy-manifest-files?language=objc) suggests that OpenSSL itself should be responsible for providing the privacy manifest; but it also assumes that OpenSSL will be used as an XCframework, rather than being linked and redistributed as a dynamic library. It definitely doesn't cover the iOS use case of \"static linking and build-time relocation into the Frameworks folder\".\n\nOpenSSL has addressed this for macOS Framework builds; but has indicated that because they don't produce official iOS builds, they aren't going to fix the problem for iOS.\n* openssl/openssl#24260 adds a candidate PrivacyInfo file for macOS builds\n* openssl/openssl#23262 is a discussion about the requirement for iOS\n* openssl/openssl#23494 is a report on OpenSSL's repo about this issue on iOS\n\nmacOS isn't using OpenSSL.framework, so the implication is that this PrivacyInfo file would need to be incorporated into Python.framework. More investigation is required (including confirming whether this is actually a problem for the macOS App Store).\n\nBased on what I've seen so far, it seems like the iOS solution will be to incorporate PrivacyInfo handling into the framework build script, and include the PrivacyInfo file next to the .so files that are being processed by the Xcode build handling. It seems likely that the macOS privacy manifest can also be used on iOS.\n\n\nA *very* suboptimal workaround is to delete the problem files so they aren't included in a packaged app. This is only a viable workaround if you're *not* using the `ssl` or `hashlib` module (directly or indirectly).\n\n\n### CPython versions tested on:\n\n3.13 - but it likely affects all supported CPython versions, as OpenSSL has been a dependency for a long time.\n\n### Operating systems tested on:\n\niOS\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-139163\n* gh-139410\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/freakboy3742","@type":"Person","name":"freakboy3742"},"datePublished":"2025-04-02T11:08:45.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":8},"url":"https://github.com/132006/cpython/issues/132006"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:0b40aaa7-7b9c-eddd-6062-bedd34216bd8 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9DB0:BFC9D:B35894:1059F48:6A58A34C |
| html-safe-nonce | 884f4b7488469477ef2547df0419233f23f2aab403fd6d7872efb29e17208931 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5REIwOkJGQzlEOkIzNTg5NDoxMDU5RjQ4OjZBNThBMzRDIiwidmlzaXRvcl9pZCI6Ijc4MTk3NjU1Njc5ODExMzQ2NjgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | e2a70ec1ac8ff02e86149462c37d8a4680ee4514454953d7f71fef4e5c14403c |
| hovercard-subject-tag | issue:2966038313 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/132006/issue_layout |
| twitter:image | https://opengraph.githubassets.com/0a53795caa145272c71b6faa703530ee80b99dc344c344ca102fe5a62679240d/python/cpython/issues/132006 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/0a53795caa145272c71b6faa703530ee80b99dc344c344ca102fe5a62679240d/python/cpython/issues/132006 |
| og:image:alt | I've received a report (beeware/Python-Apple-support#268) that the iOS App Store is now rejecting apps that include a Python framework with the following error: ITMS-91061: Missing privacy manifest... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | freakboy3742 |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5f2a0c7865178af3d91dd9f13b0cdfc3c73a2529c873d2780bb4c01271a57ec6 |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 8aae7b8d6caacacf5c66eaeb2702d8dc88d85b4a |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width