$ codesign -d --entitlements :- /Applications/Hoge.app
アプリ例その1)
Executable=/Applications/Hoge.app/Contents/MacOS/Hoge <?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.security.cs.allow-jit</key> <true/> <key>com.apple.security.cs.disable-library-validation</key> <true/> <key>com.apple.security.get-task-allow</key> <true/> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> </dict> </plist>
4つの意味をみていきます。
1. com.apple.security.cs.allow-jit
JavaScriptCore.framework などJITを使うライブラリの利用を許可します。
2. com.apple.security.cs.disable-library-validation
コードサイニングがないdylibの利用を許可します。
3. com.apple.security.get-task-allow
Xcodeデバッガでのアタッチを許可します。
4. com.apple.security.cs.allow-unsigned-executable-memory
MAP_JITフラグを使った書き込み、実行可能なメモリ領域の利用を許可します。
アプリ例その2)
<?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.security.automation.apple-events</key> <true/> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> <key>com.apple.security.cs.disable-library-validation</key> <true/> </dict> </plist>
5. com.apple.security.automation.apple-events
他のアプリへAppleEventを送信することを許可します。ユーザーによる承認が必要になります。
NotarizationについてWWDC19 の動画に概要がまとまっていて分かりやすいです。
All About Notarization
https://developer.apple.com/videos/play/wwdc2019/703/