I have an internal customer who is trying to submit an IPA to TestFlight via a Jenkins pipeline, and they are submitting their IPA to our central code signing service first. But they're seeing failures in their logs such as:
{
"id" : "bb07c32d-b4d6-48c4-abfe-390a46dec3ca",
"status" : "409",
"code" : "STATE_ERROR.VALIDATION_ERROR.90179",
"title" : "Asset validation failed",
"detail" : "Invalid Code Signing. The executable
'Payload/their.app/Frameworks/Pods_their.framework/Pods_their'
must be signed with the certificate that is contained in the provisioning profile."
}
I obtained the signed IPA file, and examined one of the items flagged as incorrectly signed with "codesign -d -vvvv". I see the correct team identifier in the output, along with the correct ("Distribution") authority.
I unbundled the IPA with "ditto -xk", extracted the plist from the embedded provisioning file with "security cms -D -i", and examined the lone developer certificate with "plutil -extract DevelopCertificates.0" and "certtool d". The subject name fields correspond to the correct cert: "Other name" and "OrgUnit" contain "our" team name, "Org" has our company name, "Common Name" has the name of the authority mentioned above.
In short, it looks like we're signing it properly, but Apple notarization is refusing it.
(For the record, something on Apple's side complained about using "altool" instead of "notarytool". I don't know if that's our problem or not.)
What else should I be doing to confirm the status of the signatures? I'm missing something, but I have no idea what.
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles