Add permissions for private entitlement

I have a pretty simply macOS application which I've just been trying to fix since a long time ago. It's origin is really old, using the apple 802.11 framework located in

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Apple80211

and it's supposed to just scan the area and display information about the local networks nearby.

For some reason when I run the application and press the button to scan for local networks (wifi scan) It errors out and in the Xcode console I get

Process WiFiInfo is missing entitlement required for Wi-Fi user-client access: <key>com.apple.private.driverkit.driver-access</key> <string>com.apple.private.wifi.driverkit</string>

If I add those two lines to the entitlements, Xcode fails to sign my application and fails to build and run

Provisioning profile "Mac Team Provisioning Profile: com.troger.WiFiInfo" doesn't include the com.apple.private.driverkit.driver-access entitlement.

Any way I can fix this? I would really like to get this application back up to its running state as it once was before but am completely lost on how to fix this

Answered by DTS Engineer in 790565022
Any way I can fix this?

No, but also yes.

Regarding your question about entitlements, this is a restricted entitlement and thus must be authorised a profile. There’s no way for a third-party developer to get a profile that authorises an Apple private entitlement. For more background on this, see TN3125 Inside Code Signing: Provisioning Profiles.

Regarding Apple80211 in general, this isn’t an API, and thus off topic for DevForums.

However, there is a supported way to achieve your overall goal, namely the public Core WLAN framework.

IMPORTANT On modern systems, Core WLAN will only return this sort of detailed info if your app has been granted the Location privilege by the user.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Any way I can fix this?

No, but also yes.

Regarding your question about entitlements, this is a restricted entitlement and thus must be authorised a profile. There’s no way for a third-party developer to get a profile that authorises an Apple private entitlement. For more background on this, see TN3125 Inside Code Signing: Provisioning Profiles.

Regarding Apple80211 in general, this isn’t an API, and thus off topic for DevForums.

However, there is a supported way to achieve your overall goal, namely the public Core WLAN framework.

IMPORTANT On modern systems, Core WLAN will only return this sort of detailed info if your app has been granted the Location privilege by the user.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

That's awful :( This code used to run on my macOS 13 (I think? If not then macOS 12) machine and now I can't? I have no intentions to sign this for public use but rather just for myself to build and run on my machine locally.

Under the hood the program is already using Core WLAN, it just stopped working after this update and I cant understand why

[EDIT] Confirmed that this app broke in macOS 14. Works fine on my macOS 13 machine build and compiles.

Add permissions for private entitlement
 
 
Q