ipasign

iOS code signing written in Python. Re-sign .ipa archives, .app bundles, frameworks, dylibs and bare Mach-O executables with a .p12 identity and a .mobileprovision profile, producing a signature that iOS and Apple’s codesign accept.

Install

  • PyPI
pip install ipasign
  • uv
uv add ipasign

Requires Python 3.10 or later. The only dependencies are cryptography and asn1crypto.

Quick example

import ipasign

key = ipasign.Key("identity.p12", "profile.mobileprovision", "password")

out = ipasign.App("input.ipa").sign(key)

print(f"Successfully signed: {out.output_path}")
print(f"{out.app_name} {out.app_version} ({out.bundle_id})")

Features

  • Signs .ipa archives, .app/.appex bundles, frameworks, dylibs and bare Mach-O executables.
  • Bundle modification before signing: bundle id, name, version, icon, minimum OS, document browser, and removing extensions, watch app or supported devices.
  • Certificate check with OCSP revocation status for .ipa, Mach-O, .mobileprovision, .p12, .cer/.der and .pem.
  • Reads app metadata and extracts the primary icon without signing.
  • Ad-hoc signing, no credentials needed.

Source code and full documentation here.
Package on PyPI.