A .pkpass is a ZIP archive with a strict top-level layout. A signature failure is often caused by one changed byte, one nested directory, or one file missing from the manifest.
pass.jsonmanifest.jsonsignatureicon.pngStart with manifest.json and SHA-1
The manifest maps each pass file to its SHA-1 digest. Hash the exact bytes stored in the archive. One changed newline, recompressed image, or case change produces a different digest.
{
"pass.json": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b",
"icon.png": "2bb80d537b1da3e38bd30361aa855686bde0ba9a"
}The detached PKCS#7 signature
The signature file signs the exact bytes of manifest.json. Signing a different serialization will fail verification.
Certificate chain and packaging
The signing certificate must be valid for pass signing and chained to the Apple WWDR intermediate and a trusted root. Check the team identifier, private-key pairing, top-level ZIP layout, MIME type, and delivered bytes.
Pre-rebuild checklist
- Confirm the archive root layout.
- Recalculate every manifest SHA-1 from archive bytes.
- Verify the signature against the exact manifest.
- Inspect the full certificate chain and team identifier.
- Download the delivered file and compare its hash.
READY TO CHECK?
Turn the guide into evidence.
Use the StackHal tool connected to this field note to inspect your own configuration.
StackHal Field Notes: Practical explainers for developer infrastructure.