In Swift I'm using unzip by launching a Process to unzip a file.
I added a launchRequirement to the process in order to make sure the executable is code signed by Apple and the identifier is com.apple.unzip. After testing out my code on another machines (both physical and virtual), I found out that in some the identifier is actually com.apple.zipinfo, which broke the SigningIdentifier requirement.
It's safe to assume that /usr/bin/unzip can be trusted since it's in a System Integrity Protection (SIP) location, but I'm wondering why this executable has different identifiers?
Demystify code signing and its importance in app development. Get help troubleshooting code signing issues and ensure your app is properly signed for distribution.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
I'm trying to help out one of our vendors by building a skeleton PCI dext which they can flesh out.
However, I can't seem to get the signing right.
I can't sign it at all using no team or my personal team. "Signing for requires a development team", and "Personal development teams ... do not support the System Extension capability".
I can't sign the driver because "DriverKit Team Provisioning Profile: doesn't match the entitlements file's value for the com.apple.developer.driverkit.transport.pci entitlement.
I think this problem occurs because our company has already been assigned a transport.pci entitlement, but for our own PCI vendor ID. But I want to build and test software that works with our vendor's PCI device.
I tried generating a profile for the driver manually, it contained only our own company's PCI driver match:
IOPCIPrimaryMatch = "0x0000MMMM&0x0000FFFF";
where MMMM is our own PCI vendor ID.
Is there a better way to inspect the profile Xcode is using than the postage-stamped sized info popup which truncates the information? I would download the generated profile but it doesn't appear on the profile, but Xcode is accessing it from somewhere.
When I look at the available capabilities I can add to an app identifier on the Developer portal, I see com.apple.developer.driverkit.transport.usb, which is "development only". There's no "development only" capability for PCI. Does this mean it isn't possible to develop even a proof-of-concept PCI driver without being first granted the DriverKit PCI (Primary Match) entitlement?
When adding capabilities to a driver, the list of available capabilities shown in Xcode has one "DriverKit PCI (Primary Match) entry", but if I double click it, two such entries appear in the Signing and Capabilities tab for my driver target. On the Developer portal, when I look at my driver's Identifier, there are two Capabilities labelled DriverKit PCI (Primary Match). Why?
I'm working on an app that needs access to device activity. When I add device activity entitlement, I'm getting Provisioning profile "..." doesn't include the com.apple.developer.deviceactivity entitlement. This is failing for both, the main app and the extension, and both have entitlements added. It is not clear how to add it to the profile, the provisioning profile is created/managed by XCode.
When I remove the entitlement, I can build my app but it won't be able to use device activity data
I reached out to Developer Support, and they sent me here.
What is the right way to add device activity entitlement?
I'm also seeing another issue with XCode Cloud builds. When I remove device activity entitlement. I can build my app w/o any issue, and I can also install it directly on my iPhone. However, XCode Cloud builds fail wit
Run command: 'xcodebuild -exportArchive -archivePath /Volumes/workspace/tmp/d41fc2f1-4f39-4906-8941-112488e75f6c.xcarchive -exportPath /Volumes/workspace/adhocexport -exportOptionsPlist /Volumes/workspace/ci/ad-hoc-exportoptions.plist '-DVTPortalRequest.Endpoint=http://172.16.68.193:8089' -DVTProvisioningIsManaged=YES -IDEDistributionLogDirectory=/Volumes/workspace/tmp/ad-hoc-export-archive-logs -DVTSkipCertificateValidityCheck=YES -DVTServicesLogLevel=3'
I suspect that it could be related to my app having DeviceActivityExtension but no device activity entitlement is present.
Thanks,
Peter.
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Hello everyone,
I'm facing a critical build issue related to Family Controls entitlements and would appreciate any insights or help from the community or Apple engineers.
My Goal:
I am trying to build and run my app on a physical device to test my DeviceActivityMonitor and ShieldConfigurationExtension. I have already been approved for the Family Controls (Development) entitlement.
The Problem:
When I try to build, Xcode fails with the following errors, preventing me from testing:
For my DeviceActivityMonitor target:
Provisioning profile "..." doesn't include the com.apple.developer.deviceactivity entitlement.
For my SOSAppShieldExtension target:
Provisioning profile "..." doesn't include the com.apple.developer.screen-time-api entitlement.
The Core Evidence:
This seems to be a server-side issue with how the provisioning profiles are generated. I have used the security cms -D -i command to inspect the downloaded .mobileprovision files.
The inspection reveals that the profiles do contain the parent com.apple.developer.family-controls entitlement. However, they are missing the required child entitlements:
The profile for my monitor extension is missing com.apple.developer.deviceactivity.
The profile for my shield extension is missing com.apple.developer.screen-time-api.
Troubleshooting Steps I've Already Taken:
I believe I have exhausted all possible client-side fixes. Here is what I have tried over the past few days:
Confirmed Approval: I am fully approved for the Family Controls (Development) entitlement.
Enabled Capabilities: The "Family Controls" capability is checked and enabled for all three relevant App IDs (main app, monitor extension, shield extension) on the developer portal.
Profile Regeneration: I have deleted and regenerated all provisioning profiles for all targets multiple times.
Forcing a Server Refresh: I have toggled the "Family Controls" capability off, saved, and then toggled it back on and saved again for each App ID.
Creating New Identifiers: I created a brand new, clean App ID for the DeviceActivityMonitor extension (com.sosapp.ios.devicemonitor) and created a new profile for it, but the error persists.
Xcode Configuration: I am using manual signing in Xcode and have double-checked that each target is pointing to the correct, newly downloaded provisioning profile. I have also cleaned the build folder and deleted Derived Data multiple times.
My Question:
Given that my account is approved and the capability is enabled, but the generated profiles are provably missing the necessary child entitlements, this points directly to a bug in the profile generation service on Apple's backend.
Has anyone else experienced this specific issue where the parent entitlement is present but the required child entitlements are missing? Is there a known workaround, or can an Apple engineer please investigate the profile generation for my Team ID?
Any help would be greatly appreciated. Thank you!
I have an app that runs as a status bar app, mostly. I have set the following in the info.plist file for the app:
<key>Application is agent (UIElement)</key>
<true/>
However, I get a compile error:
Provisioning profile Mac Team Provisioning Profile: yout.Drive doesn't include the Application is agent (UIElement) entitlement.
Checking the entitlements, I do not see this entitlement anywhere. Where and how do I set this?
In the LightweightCodeRequirements framework, there is a LaunchCodeRequirement object which can be used as a requirement object for a Process for example.
What I don't understand (I admit my macOS low-level knowledge is limited) is that how can this be used in a secure way that doesn't fall victim of a Time-of-Check/Time-of-Use issue.
e.g.
I specify a LaunchCodeRequirement via Process.launchRequirement for my process, let's say /usr/local/bin/mycommandlinetool.
The LaunchCodeRequirement specifies my development team and a developer ID certificate.
The process must be started in some form, before a SecCode/SecTask object can be created, rather than a SecStaticCode object (which only guarantees its validity checks to be intact as long as the file is not modified).
But if the process was started, then I have no tools in my set to prevent it from executing its initialization code or similar. Then, by the time I'm able to check via SecCode/SecTask functions the LaunchCodeRequirement, I might have already ran malicious code - if mycommandlinetool was maliciously replaced.
Or does the operating system use a daemon to copy the executable specified for Process to a secure location, then creates the SecStaticCode object, assesses the LaunchCodeRequirement and if passed, launches the executable from that trusted location (which would make sure it is immutable for replacement by malicious actors)?
I have a hard time understanding how this works under the hood - if I remember correctly these are private APIs.
I am responsible for the mobile app and thus also of the apple developer and app store connect accounts of a company.
An external freelancer developed a software package for us which we aim to offer for installation and use on macOS systems of our customers; distributed exclusively outside of the Apple App Store. The software package has nothing to do with the mobile app. MacOS' Gatekeeper currently warns or even prevents our customers regarding the installation of the package on their device; pretty much as described here: https://developer.apple.com/developer-id/.
According to a previous talk with Apple's Support, the software package (.app) the Freelancer developed must be signed with one of our own certificates. As we cannot grant selective app store connect access to third persons (only for the concerned certificates), we prefer to not provide access to our entire apple developer account to the freelancer, for the sole reason of the certificate & signing process. According to previous attempts with Apples' support regarding the most feasible solution in this case, they recommended me to manage the signing of the package of the freelancer, and simply request the package from the freelancer.
I've thus generated an according Developer ID Certificate, but regarding the signing process, I'm confused. I know how signing works with mobile apps in XCode, but regarding software that is not distributed throughout the App Store on macOS, I'm unsure about the process. Also, as far as I know, the entitlements of the application are involved in the signing process. So my concern is that simply having the software package (.app) from the freelancer is not really enough to complete the signing + notarization process? Won't I need further information about the app's entitlements etc.?
I would like to have a clear solution about the procedure that is required in these cases, as online documentations and / or forums as well as previous talks with your non-technical support from Apple did not resolve the issue.
Hello,
Unable to see the App Sandbox entitlement while creating a new App ID. Have tried to recreate APP ID multiple times. Don't see the option in Developer portal.
Looking for some assistance and having an Apple Signing Certificate for our Audio Units Plugin.
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Xcode automatic signing consistently fails for the macOS target when adding the App Groups capability, even though the Developer Portal is correctly configured.
Error:
Provisioning profile “Mac Team Provisioning Profile: com.example.testapp.mobile” doesn’t support the App Groups capability.
Setup:
• Bundle ID: com.example.testapp.mobile
• App Group: $(TeamIdentifierPrefix)group.com.example.testapp.mobile
Troubleshooting Steps Tried (None Helped):
• Changed bundle identifiers and deleted/recreated them in the Developer Portal
• Deleted and recreated App Groups
• Removed and re-added the developer account in Xcode
• Deleted all provisioning profiles from the system
• Cleared Derived Data and Xcode caches
• Even tried on a clean macOS system
This setup used to work previously. The issue seems to have started after the Apple Developer account was renewed.
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Tried notarizing my app yesterday afternoon via Mac terminal, and when I came back to work this morning it was still "In Process...". I closed terminal, and checked appleid.apple.com, and it was asking me to reset my password- maybe because the notarization timed out?
Either way, I reset my password, generated a new app-specific password and tried notarizing the app again, but it's now been 3 hours and it's still "In Process..." again.
When I check the status via terminal, nothing seems off- and the status is In Progress.
How can I determine if there's a bigger issue I need to fix before notarizing?
UUID: e7ae29c8-2478-41a3-93b4-3f274de643d0
Topic:
Code Signing
SubTopic:
Notarization
We've been trying to get the CarPlay Navigation Entitlement for a couple years now without much luck.
Did you have a similar experience? How did you succeed getting the entitlement?
Part of the form requires us to submit Screenshots. Did you provide screenshots of your on-device experience or wireframe for CarPlay?
How was your experience?
This is a lengthy one. I have basically compiled a Rust binary into a dylib and packaged into a .xcframework that contains per arch .frameworks. This loads correctly when run from Xcode into a real iOS device. However, when deployed to TestFlight the app crashes.
Here is what is a bit different, the dylib is not fully self-contained. It tries to reach in an use C functions I have exposed in my library code. Calling functions that are just within the dylib and just return works fine, but the moment it tries to call one of the exposed functions it crashes.
A full in-depth step by step of how I packaged the binaries can be found in my website: https://ospfranco.com/complete-guide-to-dylibs-in-ios-and-android
When I look at the TestFlight crash report there are no symbols but the termination cause via WatchDog is:
Termination Reason: CODESIGNING 2 Invalid Page
I have declared my functions as such:
OBJC_EXTERN void ios_prepare_request(const char *url)
#define EXPORT __attribute__((visibility("default"), used, retain))
extern "C" {
EXPORT void ios_prepare_request(const char *url) {
NSString *urlString = [NSString stringWithUTF8String:url];
request =
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
}
}
// Function used to prevent optimization
void force_symbol_registration() {
// Force these symbols to be included in the binary by referencing them
volatile void *ptrs[] = {(void *)ios_prepare_request,};
// Prevent compiler from optimizing away the array
(void)ptrs;
}
And I load my framework as:
opacity::force_symbol_registration();
// NSBundle *dylib_bundle =
// [NSBundle bundleWithIdentifier:@"com.opacitylabs.sdk"];
// NSString *dylib_path = [dylib_bundle pathForResource:@"sdk" ofType:@""];
// // Load the dynamic library
// void *handle = dlopen([dylib_path UTF8String], RTLD_NOW | RTLD_GLOBAL);
// if (!handle) {
// NSString *errorMessage = [NSString stringWithUTF8String:dlerror()];
// *error =
// [NSError errorWithDomain:@"OpacitySDKDylibError"
// code:1002
// userInfo:@{NSLocalizedDescriptionKey :
// errorMessage}];
// return -1; // or appropriate error code
// }
// Make sure the main executable's symbols are available
dlopen(NULL, RTLD_NOW | RTLD_GLOBAL);
NSBundle *frameworkBundle =
[NSBundle bundleWithIdentifier:@"com.opacitylabs.sdk"];
if (![frameworkBundle isLoaded]) {
BOOL success = [frameworkBundle load];
if (!success) {
NSString *errorMessage = @"Failed to load framework";
*error =
[NSError errorWithDomain:@"OpacitySDKDylibError"
code:1002
userInfo:@{NSLocalizedDescriptionKey : errorMessage}];
return -1;
}
}
As you can see, I have also tried dlopen both work when run from Xcode but crash when deployed on testflight.
I have tried re-signing the xcframework/frameworks on a pre build step but it doesn't work
As stated, I can call the functions inside the dylib, but once they try to call my exposed code it crashes
Is this achievable at all or just a limitation of the iOS sandbox?
Hi everyone, I'm working with a third party to integrate their USB driver into our app and I'm wondering if iPadOS supports bundling a prebuilt .systemextension file with the entitlement com.apple.developer.system-extension.redistributable into our app that has the com.apple.developer.driverkit.communicates-with-drivers entitlement?
If not, is there a way to bundle a third party USB driver into our iPad app?
Hello,
i have a problem. From one day to another i get following error (I never experienced this error with the same profile before) while trying to build and release my app via fastlane:
exportArchive Provisioning profile "" doesn't support the External Link Account capability.
Looking in the App developer website, it seems, that the existing and valid profile includes this capability. On the other side, inspecting the profile via xcode profile download, there is no hint that this capability is enabled.
Any suggestions?
Thanks!
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Hello Apple Support,
While attempting to staple a notarization ticket for our signed installer package, the stapler command fails with Error 65. Upon investigation, we found that connections to oscdn.apple.com present an SSL certificate issued to a248.e.akamai.net, which does not include oscdn.apple.com in its Subject Alternative Name (SAN).
This mismatch prevents our macOS environment from validating tickets and completing the stapling process.
Steps tried:
Verified notarization status (Accepted).
DNS flushed, tried different DNS (8.8.8.8, 1.1.1.1).
curl to oscdn.apple.com consistently fails with SSL error 60.
Please advise on resolving this certificate mismatch.
also when I try to run the stapler command with my pkg
"xcrun stapler staple/Users/mactest/Desktop/IPMPlus_Macos_Installer.signed.pkg"
getting the output like :-
Processing: /Users/mactest/Desktop/IPMPlus_Macos_Installer.signed.pkg
Could not validate ticket for /Users/mac-test/Desktop/IPMPlus_Macos_Installer.signed.pkg
The staple and validate action failed! Error 65.
please help
Thank you.
The attached file bellow contains the full error
error
I clone this repo to my mac, change team id and group, and run it in Xcode: https://github.com/protonpass/ios-pass
There's no issue when I ran it with the Debug configuration, but when I go to Product > Scheme > Edit Scheme and change the iOS target build configuration to Release then I got that error above.
I have tried Archive and export the ipa, verify that the provisioning profile contains my Mac UDID, but when double clicking the ipa to install, I also got the error This app cannot be installed because its integrity could not be verified.
Hello community,
I'm new here, so please excuse my blunt question. I'm trying to understand how everything works and the logic behind it.
I have an idea for an app which requires the FamilyControl entitlement. Now I am not sure if the idea even works, so I wanted to test it on my own device.
Am I correct, that I cannot even test an App with such entitlements without paying for the ADP? Not even on my own device?
I completely understand I need to be a member in the ADP if I want to distribute my app, but I'm not there, yet, and I just want to do a proof-of-concept.
I thought I can't be the first one with that question, but couldn't find a past topic on this, so I'm posting it.
Regards,
Niklas
Its just stuck in progress.
$ xcrun notarytool history --keychain-profile X
Successfully received submission history.
history
--------------------------------------------------
createdDate: 2025-07-21T16:46:13.233Z
id: X
name: X.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-07-20T18:44:35.683Z
id: X
name: X.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-07-20T11:24:20.319Z
id: X
name: X.dmg
status: In Progress
Its a go app; not simple but not very complicated. It is my first time notarising but even then should it take this long?? 3 days is ridiculous!
Two months ago we got approval for using the Notification Filtering entitlement. We rushed out to implement it in our app, only to find out that the permission was set for the wrong bundle identifier.
We expected to get the permission for the notification extension's bundle identifier, yet it is added for the main app's bundle identifier.
Per the official docs, the entitlement permission should be in the notification service extension target:
After you receive permission to use the entitlement, add com.apple.developer.usernotifications.filtering to the entitlements file in the Notification Service Extension target.
However, this fails to get signed when compiling for non-simulator targets because of the bundle mismatch issue. Simulator perfectly filters notifications.
Adding the entitlement to the main app does compile, but filtering does not work (as expected).
We reached out to Apple twice (Case-ID: 14330583) but we have yet to receive any response.
Could there be something else wrong instead of the identifier mismatch?
Topic:
Code Signing
SubTopic:
Entitlements
Tags:
Entitlements
Code Signing
App ID
User Notifications