Convert Provisioning Profile Plist Excerpt to JSON
Convert the plist content extracted from an iOS provisioning profile to JSON. Understand team IDs, device UDIDs, and certificate data.
Detailed Explanation
Provisioning Profile Plist
iOS provisioning profiles (.mobileprovision files) contain a plist payload wrapped in a CMS signature. After extracting the plist (using security cms -D -i profile.mobileprovision), you can convert it to JSON for easier inspection.
Typical Structure (Excerpt)
<dict>
<key>AppIDName</key>
<string>My App</string>
<key>ApplicationIdentifierPrefix</key>
<array>
<string>ABC123DEF4</string>
</array>
<key>CreationDate</key>
<date>2025-01-15T10:00:00Z</date>
<key>ExpirationDate</key>
<date>2026-01-15T10:00:00Z</date>
<key>Name</key>
<string>My App Development</string>
<key>ProvisionedDevices</key>
<array>
<string>00001111-AAAA2222BBBB3333</string>
<string>00004444-CCCC5555DDDD6666</string>
</array>
<key>TeamIdentifier</key>
<array>
<string>ABC123DEF4</string>
</array>
<key>TeamName</key>
<string>Example Corp</string>
<key>TimeToLive</key>
<integer>365</integer>
<key>Version</key>
<integer>1</integer>
</dict>
JSON Output
{
"AppIDName": "My App",
"ApplicationIdentifierPrefix": ["ABC123DEF4"],
"CreationDate": "2025-01-15T10:00:00Z",
"ExpirationDate": "2026-01-15T10:00:00Z",
"Name": "My App Development",
"ProvisionedDevices": [
"00001111-AAAA2222BBBB3333",
"00004444-CCCC5555DDDD6666"
],
"TeamIdentifier": ["ABC123DEF4"],
"TeamName": "Example Corp",
"TimeToLive": 365,
"Version": 1
}
Date Fields
Provisioning profiles use <date> for CreationDate and ExpirationDate. The JSON output preserves these as ISO 8601 strings, making it easy to check expiration with standard date libraries.
Device UDIDs
The ProvisionedDevices array lists all device UDIDs registered for development profiles. In JSON format, this array is easy to process for fleet management or automated device registration scripts.
DeveloperCertificates
The full provisioning profile also contains <data> elements for DER-encoded certificates. These large Base64 strings are preserved in JSON, though they are typically processed by specialized certificate tools rather than read directly.
Use Case
Critical for iOS build engineers who need to inspect provisioning profile contents, check device registrations, verify expiration dates, or automate profile management in CI/CD pipelines.