# Adding ITSAppUsesNonExemptEncryption to Info.plist for iOS builds (SOLVED)

**URL:** <https://forum.defold.com/t/adding-itsappusesnonexemptencryption-to-info-plist-for-ios-builds-solved/19557>\
**Category:** Questions\
**Created:** [May 3, 2018, 2:53pm UTC](https://forum.defold.com/t/adding-itsappusesnonexemptencryption-to-info-plist-for-ios-builds-solved/19557 "2018-05-03T14:53:10Z")\
**Posts on this page:** 1\
**Showing post:** 19

<div class="post-metadata">

**Author:** ![britzl](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/britzl/32/23_2.png) [@britzl](https://forum.defold.com/u/britzl)\
**Post date:** [May 1, 2020, 2:24pm UTC](https://forum.defold.com/t/adding-itsappusesnonexemptencryption-to-info-plist-for-ios-builds-solved/19557/19 "2020-05-01T14:24:44Z")

</div>

I think there’s some confusion around entitlements, the \*.mobileprovision file and the Info.plist file.

**Entitlements**  
An entitlement is a right or privilege that grants an executable particular capabilities. For example, an app needs the HomeKit Entitlement — along with explicit user consent — to access a user’s home automation network. An app stores its entitlements as key-value pairs embedded in the code signature of its binary executable.

> **[Entitlements | Apple Developer Documentation](https://developer.apple.com/documentation/bundleresources/entitlements)**
>
> Key-value pairs that grant an executable permission to use a service or technology.

**Info.plist**  
An information property list file is a structured text file that contains essential configuration information for a bundled executable. The system uses these keys and values to obtain information about your app and how it is configured. As a result, all bundled executables (plug-ins, frameworks, and apps) are expected to have an information property list file.

> **[About Information Property List Files](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html)**
>
> Describes the keys for a bundle's Info.plist file.

**The .mobileprovision file**  
This file together with a signing identity is used when bundling an iOS game. The file is generated in the Apple Developer portal. It defines which application it can be applied to and if the application is packaged for development or distribution. It also defines which capabilities (read entitlements) the application has.

**How we bundle**  
When we bundle an iOS application we ask for the mobileprovision and a signing identity (from your keychain). We extract the entitlements from the mobileprovision file and use it when we create the application bundle. The entitlements are extracted like this:

```
security cms -D -i foobar.mobileprovision -o foobar.xml

```

You can try this yourself from the command line!

If you specify that you want to Override Entitlements we ignore the entitlements in your mobileprovision file and use the one you specify. Otherwise we merge them.

**The problem**  
After this very long intro we need to look at the actual problem. You want to add the key `ITSAppUsesNonExemptEncryption`. Apple definition of the property:

“Set the value for this key to `NO` in your app’s [Information Property List](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc) file to indicate that your app—including any third-party libraries you link against—either uses no encryption, or only uses encryption that’s exempt from export compliance requirements, as described in [Determine your export compliance requirements](https://help.apple.com/app-store-connect/#/dev63c95e436). Set the value to `YES` to indicate that your app uses non-exempt encryption.”

Note that it says **Information Property List**. It is not an entitlement and should not be merged into the entitlements. It must be stored in the Info.plist. That is why it works when you specify it in a full Info.plist file.

> [@totebo](#):
>
> It would be better if the key was merged with the built in .plist, to avoid maintaining the whole hard coded list.

Yes, I agree. What you can do is to fake an empty extension in your project and add your stub .plist file with the property and let the build server merge it for you.

---

_[View the full topic](https://forum.defold.com/t/adding-itsappusesnonexemptencryption-to-info-plist-for-ios-builds-solved/19557)._
