Search code examples
macoswifisandbox

What is the entitlement for a Mac App to use CoreWLAN to access Wi-Fi in the Sandbox?


Bluetooth for e.g. is com.apple.security.device.bluetooth.

Apple does not currently document this particular entitlement in the Entitlement Key Reference


Solution

  • As of WWDC 18 and CoreWLAN.framework was allowed into the sandbox in both macOS 10.13 and 10.14. But note that the location entitlement is required to get the BSSID information from a Wi-Fi Scan.

    The specific entitlements for older versions of macOS can be found by using the codesign tool:

    $ codesign -d --entitlements :- /System/Library/PrivateFrameworks/CoreWLANKit.framework/Versions/A/XPCServices/WiFiProxy.xpc/Contents/MacOS/WiFiProxy
    Executable=/System/Library/PrivateFrameworks/CoreWLANKit.framework/Versions/A/XPCServices/WiFiProxy.xpc/Contents/MacOS/WiFiProxy
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>com.apple.wifi.anqp</key>
        <true/>
        <key>com.apple.wifi.associate</key>
        <true/>
        <key>com.apple.wifi.events</key>
        <true/>
        <key>com.apple.wifi.events.private</key>
        <true/>
        <key>com.apple.wifi.ibss</key>
        <true/>
        <key>com.apple.wifi.priority.id</key>
        <string>wifi_menu_extra</string>
        <key>com.apple.wifi.priority.internal</key>
        <true/>
        <key>com.apple.wifi.scan</key>
        <true/>
        <key>com.apple.wifi.set_power</key>
        <true/>
        <key>com.apple.wifi.tether.browse</key>
        <true/>
        <key>com.apple.wifi.tether.connect</key>
        <true/>
        <key>keychain-access-groups</key>
        <array>
            <string>apple</string>
        </array>
    </dict>
    </plist>