25.6 · Reading profiles and signatures, signing order and API keys
Signing errors are usually solved by looking at the file instead of guessing: decode the profile, read the signature, sign in the right order and know what each credential can do.
Mental model. A profile is a signed plist, a signature is a seal plus a rule (the designated requirement), and CI authenticates with a short-lived token made from a long-lived key.
Profiles and signatures
Reading what is inside the files the system verifies.
- How do you decode and audit a provisioning profile: which fields matter, how do you tell development, ad hoc and App Store profiles apart, and does decoding verify it?
A .mobileprovision is a CMS (PKCS#7) envelope around an XML property list. security cms -D -i file.mobileprovision prints the plist, and plutil -extract or… - What is inside a code signature: the code directory, hashes, the designated requirement and the team ID, and how do you read and test them with codesign?
A signature is a code directory plus optional blobs. The code directory lists a hash of every page of the executable and of each special slot (the Info.plist…
Order and automation
Signing nested code, and calling the App Store Connect API from CI.
- Why must nested code be signed before the code that contains it, what does “nested code is modified or invalid” mean, and why is --deep discouraged for releases?
A bundle’s signature seals hashes of everything inside it, including the signatures of nested frameworks, extensions, helpers and the watch app. Signing is… - How does a CI job authenticate to the App Store Connect API: API keys, the JWT claims, the signing algorithm, expiry, roles and rotation?
You create an API key in App Store Connect (an issuer ID, a key ID and a one-time-download .p8 private key, with a role such as App Manager or Developer that…
More in App Store & release engineering
- 25.1 · Code signing, provisioning and what each file is for
- 25.2 · CI/CD tools, versioning and designing the pipeline
- 25.3 · TestFlight, phased release, App Review and rollback
- 25.4 · Feature flags, remote config and the release train
- 25.5 · Backward-compatible change, deployment targets and device requirements
- 25.7 · What a build leaves behind: archives, binaries, dependencies and tests
- 25.8 · Pipelines that lie, build numbers, hotfix branches and rollout statistics