{"id":13431214,"url":"https://github.com/zhlynn/zsign","last_synced_at":"2026-04-12T15:57:54.689Z","repository":{"id":37548318,"uuid":"209476862","full_name":"zhlynn/zsign","owner":"zhlynn","description":"It might be the quickest cross-platform codesign alternative for iOS 12+, supporting macOS, Linux, Windows, and more features.","archived":false,"fork":false,"pushed_at":"2026-03-28T13:44:42.000Z","size":23443,"stargazers_count":1718,"open_issues_count":9,"forks_count":465,"subscribers_count":46,"default_branch":"master","last_synced_at":"2026-03-28T16:34:26.911Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhlynn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-09-19T06:17:27.000Z","updated_at":"2026-03-28T13:43:29.000Z","dependencies_parsed_at":"2024-09-10T06:02:40.851Z","dependency_job_id":"137f8fae-7025-4716-8ada-67048aa72b9d","html_url":"https://github.com/zhlynn/zsign","commit_stats":{"total_commits":150,"total_committers":33,"mean_commits":4.545454545454546,"dds":0.6333333333333333,"last_synced_commit":"9fd2942fa9dc5fc5ba111526686b0e4a35aff3a9"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/zhlynn/zsign","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhlynn%2Fzsign","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhlynn%2Fzsign/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhlynn%2Fzsign/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhlynn%2Fzsign/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhlynn","download_url":"https://codeload.github.com/zhlynn/zsign/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhlynn%2Fzsign/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31501903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T02:01:01.392Z","updated_at":"2026-04-07T06:02:26.177Z","avatar_url":"https://github.com/zhlynn.png","language":"C++","funding_links":[],"categories":["C++","Projects"],"sub_categories":[],"readme":"# zsign\n\nA fast, cross-platform codesign alternative for iOS 12+. Re-sign iOS apps (.ipa, Mach-O, .app bundles) with custom certificates and provisioning profiles.\n\n**Supported platforms:** macOS, Linux, Windows, Android, FreeBSD\n\nIf this tool helps you, please give it a ⭐ **star** — [zhlynn](https://github.com/zhlynn)\n\n## Build\n\n### macOS\n\n```bash\nbrew install pkg-config openssl\ngit clone https://github.com/zhlynn/zsign.git\ncd zsign/build/macos\nmake clean \u0026\u0026 make\n```\n\n### Linux\n\n#### Ubuntu / Debian\n\n```bash\nsudo apt-get install -y git g++ pkg-config libssl-dev\ngit clone https://github.com/zhlynn/zsign.git\ncd zsign/build/linux\nmake clean \u0026\u0026 make\n```\n\n#### RHEL / CentOS / Alma / Rocky\n\nInstall `epel-release` first:\n\n```bash\nsudo yum -y install epel-release\n```\n\nThen build:\n\n```bash\nsudo yum install -y git gcc-c++ pkg-config openssl-devel\ngit clone https://github.com/zhlynn/zsign.git\ncd zsign/build/linux\nmake clean \u0026\u0026 make\n```\n\n### Windows\n\nOpen `build/windows/vs2022/zsign.sln` in Visual Studio 2022 and build.\n\n## Usage\n\n```\nUsage: zsign [-options] [-k privkey.pem] [-m dev.prov] [-o output.ipa] file|folder\n\nOptions:\n  -k, --pkey              Path to private key or p12 file (PEM or DER format)\n  -m, --prov              Path to provisioning profile (use multiple -m for extensions)\n  -c, --cert              Path to certificate file (PEM or DER format)\n  -a, --adhoc             Perform ad-hoc signature only\n  -d, --debug             Generate debug output (.zsign_debug folder)\n  -f, --force             Force sign without cache\n  -o, --output            Path to output ipa file\n  -p, --password          Password for private key or p12 file\n  -b, --bundle_id         New bundle identifier\n  -n, --bundle_name       New bundle display name\n  -r, --bundle_version    New bundle version\n  -e, --entitlements      New entitlements file\n  -z, --zip_level         Compression level for output ipa (0-9)\n  -l, --dylib             Dylib to inject (use multiple -l for multiple dylibs)\n  -D, --rm_dylib          Dylib to remove (use multiple -D for multiple)\n  -w, --weak              Inject dylib as LC_LOAD_WEAK_DYLIB\n  -i, --install           Install via ideviceinstaller after signing\n  -t, --temp_folder       Temporary folder for intermediate files\n  -2, --sha256_only       Use SHA256-only code directory\n  -C, --check             Check certificate validity and OCSP status\n  -x, --metadata          Extract metadata and icon to directory\n  -R, --rm_provision      Remove provisioning profile after signing\n  -S, --enable_docs       Enable UISupportsDocumentBrowser and UIFileSharingEnabled\n  -M, --min_version       Set MinimumOSVersion in Info.plist\n  -E, --rm_extensions     Remove all app extensions (PlugIns/Extensions)\n  -W, --rm_watch          Remove watch app from bundle\n  -U, --rm_uisd           Remove UISupportedDevices from Info.plist\n  -q, --quiet             Quiet operation\n  -v, --version           Show version\n  -h, --help              Show help\n```\n\n## Examples\n\n**Show Mach-O and codesignature info:**\n```bash\nzsign demo.app/demo\n```\n\n**Sign an IPA:**\n```bash\nzsign -k privkey.pem -m dev.prov -o output.ipa -z 9 demo.ipa\n```\n\n**Sign with p12 (cached):**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -o output.ipa demo.app\n```\n\n**Sign with p12 (force, no cache):**\n```bash\nzsign -f -k dev.p12 -p 123 -m dev.prov -o output.ipa demo.app\n```\n\n**Ad-hoc sign:**\n```bash\nzsign -a -o output.ipa demo.ipa\n```\n\n**Inject dylib and re-sign:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -l demo.dylib -o output.ipa demo.ipa\n```\n\n**Change bundle id and name:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -b 'com.new.bundle.id' -n 'NewName' -o output.ipa demo.ipa\n```\n\n**Inject dylib (LC_LOAD_DYLIB) into Mach-O:**\n```bash\nzsign -a -l \"@executable_path/demo1.dylib\" -l \"@executable_path/demo2.dylib\" demo.app/execute\n```\n\n**Inject weak dylib (LC_LOAD_WEAK_DYLIB):**\n```bash\nzsign -w -l \"@executable_path/demo.dylib\" demo.app/execute\n```\n\n**Extract metadata and icon:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -x ./metadata -o output.ipa demo.ipa\n# outputs ./metadata/metadata.json and ./metadata/\u003chash\u003e.png\n```\n\n**Enable Files app integration:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -S -o output.ipa demo.ipa\n```\n\n**Set minimum OS version:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -M 14.0 -o output.ipa demo.ipa\n```\n\n**Remove app extensions:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -E -o output.ipa demo.ipa\n```\n\n**Remove watch app:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -W -o output.ipa demo.ipa\n```\n\n**Remove UISupportedDevices:**\n```bash\nzsign -k dev.p12 -p 123 -m dev.prov -U -o output.ipa demo.ipa\n```\n\n## Certificate Check (-C)\n\nCheck the signing certificate of any supported file and perform an OCSP revocation check against Apple's servers. Reads binaries directly from inside IPA files without extracting to disk.\n\n**Supported file types:** `.ipa`, `.mobileprovision`, `.p12`/`.pfx`, `.cer`/`.pem`, Mach-O binaries\n\n```bash\n# Check an IPA\nzsign -C demo.ipa\n\n# Check a provisioning profile\nzsign -C dev.mobileprovision\n\n# Check a P12/PFX certificate\nzsign -C dev.p12 -p 123\n\n# Check a Mach-O binary\nzsign -C demo.app/demo\n\n# Sign and verify certificate before archiving\nzsign -C -k dev.p12 -p 123 -m dev.prov -o output.ipa demo.ipa\n```\n\n**Example output:**\n```\n\u003e\u003e\u003e Check:      demo.ipa (IPA)\n\u003e\u003e\u003e Signed:     Yes\n\u003e\u003e\u003e Name:       Apple Distribution: Company Name (TEAMID)\n\u003e\u003e\u003e Type:       Apple Distribution\n\u003e\u003e\u003e Org:        Company Name\n\u003e\u003e\u003e Team:       TEAMID\n\u003e\u003e\u003e Serial:     XX:XX:XX:XX:XX:XX:XX:XX\n\u003e\u003e\u003e Issued:     2025-01-01T00:00:00Z\n\u003e\u003e\u003e Expires:    2026-01-01T00:00:00Z (365 days remaining)\n\u003e\u003e\u003e Algorithm:  RSA 2048-bit\n\u003e\u003e\u003e Issuer:     Apple Worldwide Developer Relations Certification Authority\n\u003e\u003e\u003e OCSP:       Valid (ocsp.apple.com)\n```\n\n## Fast Re-signing\n\nUnzip the IPA first, then sign the extracted folder. On the first sign, zsign caches signature data in `.zsign_cache`. Subsequent re-signs with different assets reuse the cache, making the process significantly faster.\n\n## License\n\nzsign is licensed under the MIT License. See the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhlynn%2Fzsign","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhlynn%2Fzsign","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhlynn%2Fzsign/lists"}