Skip to content

Latest commit

Β 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“± IPASIGN

Simple and powerful iOS IPA signing tool with graphical interface

IPASIGN is a modern Qt6-based application that simplifies iOS IPA file signing using the reliable zsign backend. Perfect for developers, testers, and anyone who needs to sign iOS applications quickly and efficiently.

✨ Features

  • πŸ–₯️ Modern Qt6 GUI - Clean and intuitive graphical interface
  • ⚑ zsign Integration - Powered by the robust zsign signing engine
  • πŸ“¦ Simple Workflow - Just select IPA, certificate, and profile
  • ☁️ App Store Connect Mode - Uses a Fastlane API-key JSON file to prepare a certificate and profile without revoking existing certificates
  • πŸͺͺ Automatic Bundle ID Flow - Reads the identifier from the IPA, proposes a team-owned signing identifier, and registers it when needed
  • πŸ–±οΈ Drag and Drop - Accepts IPA files, Fastlane API-key JSON files, and a Fastfile with an adjacent api_key.json
  • πŸ”’ Safe Process Execution - Paths are passed without shell interpolation and passwords are never logged
  • βœ… Verified Output - A signing run succeeds only when zsign creates a non-empty IPA
  • πŸ“± Device Management - Built-in iOS device detection and management
  • 🧰 Automatic Tool Setup - Detects, installs, or repairs libimobiledevice, ideviceinstaller, zsign, and Fastlane from the in-app status card
  • ⚠️ Smart Warnings - Conflict detection with helpful user guidance
  • πŸͺ΅ Resizable Detailed Logging - Drag the standard corner grip at the lower-right of the log to expand it while the form stays fixed

πŸš€ Quick Start

Prerequisites

  • macOS (Intel or Apple Silicon)
  • Qt 6.8+ development framework
  • Xcode Command Line Tools
  • Homebrew (for dependency management)

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/IPASIGN.git
    cd IPASIGN
  2. Install dependencies:

    # Install Qt6
    brew install qtbase cmake ninja libimobiledevice ideviceinstaller fastlane
    
    # Install zsign separately, then place the verified binary on PATH
  3. Build the application:

    cmake --preset release -DCMAKE_PREFIX_PATH="$(brew --prefix qtbase)"
    cmake --build --preset release --parallel

🎯 Usage

Signing modes

Local files: Select an existing P12/PFX, its password, and a matching mobileprovision file.

App Store Connect: Select an IPA and a Fastlane API-key JSON file. IPASIGN reads the IPA's Bundle ID, proposes a team-owned signing identifier when the source belongs to another developer, and creates the identifier when it is missing. Choose Development, Ad Hoc, or App Store and click Sertifika ve Profili HazΔ±rla. The generated P12 and profile are stored under the user's application-data directory and selected automatically. Existing certificates are not revoked. Development and Ad Hoc profiles require registered devices.

Basic IPA Signing

  1. Launch IPASIGN
  2. Select your IPA file - Choose the iOS app you want to sign
  3. Choose certificate - Select your .p12 certificate file
  4. Pick provisioning profile - Select the .mobileprovision file
  5. Enter password - Provide certificate password if required
  6. Click Sign - Let IPASIGN handle the rest!

Command Line

The CLI uses explicit commands and never requires the certificate password as a command-line argument.

# Show all commands and options
IPASigner --help

# List connected devices
IPASigner devices

# Sign an IPA (the password is requested without terminal echo)
IPASigner sign \
  --ipa Demo.ipa \
  --certificate Developer.p12 \
  --profile Developer.mobileprovision \
  --bundle-id com.example.testapp

# Install a signed IPA
IPASigner install --ipa Demo_signed.ipa --device DEVICE_UDID

For automation, pass the password through standard input with --password-stdin, or store it in the IPASIGN_P12_PASSWORD environment variable. A different variable name can be selected with --password-env NAME. Avoid placing secrets directly in command arguments.

Supported File Formats

  • Input: .ipa (iOS App Store Package)
  • Certificates: .p12 (PKCS#12 certificate)
  • Profiles: .mobileprovision (iOS provisioning profile)
  • Output: Signed .ipa ready for installation

πŸ”§ Technical Details

Architecture

IPASIGN uses a clean, modular architecture:

  • IPASigner Core - Main signing logic and zsign integration
  • Qt6 GUI - Modern cross-platform user interface
  • Worker Threads - Non-blocking signing and installation operations
  • Device Manager - iOS device detection and communication

zsign Integration

  • Uses a bundled zsign binary or a verified zsign executable from PATH
  • Does not download, compile, or install third-party software at runtime
  • Uses argument-safe process execution instead of shell command construction
  • Keeps the supported signing workflow deliberately small and auditable

πŸ“‹ Requirements

System Requirements

  • macOS 13+
  • 4GB RAM minimum
  • 1GB free disk space
  • No internet connection required for local signing; App Store Connect preparation requires internet access

Development Requirements

  • Qt 6.8+ with Widgets support
  • CMake 3.21+ and Ninja
  • C++20 compatible compiler
  • Xcode Command Line Tools

πŸ› οΈ Build from Source

Debug Build

cmake --preset debug -DCMAKE_PREFIX_PATH="$(brew --prefix qtbase)"
cmake --build --preset debug --parallel

Release Build

cmake --preset release -DCMAKE_PREFIX_PATH="$(brew --prefix qtbase)"
cmake --build --preset release --parallel

πŸ› Troubleshooting

Common Issues

"Device not detected via USB"

  • Trust the computer on your iPhone when prompted
  • Ensure USB cable supports data transfer (not just charging)
  • Try a different USB port or cable
  • Restart both iPhone and IPASIGN application
  • Check if device appears in Finder/iTunes first
  • Enable "Developer Mode" in iPhone Settings if available
  • Make sure iPhone is unlocked during connection

"zsign not found"

  • Install a trusted zsign build and add it to PATH, or copy it into the app bundle's Contents/Resources directory
  • IPASIGN intentionally does not download or execute unpinned source code at runtime

"Certificate invalid"

  • Verify .p12 file is not corrupted
  • Check certificate password
  • Ensure certificate is not expired

"Provisioning profile mismatch"

  • Verify profile matches your certificate
  • Check Bundle ID compatibility
  • Ensure device UDID is included in profile

"Installation fails on device"

  • Check device storage space
  • Verify device iOS version compatibility
  • Remove conflicting apps with same Bundle ID
  • Restart device and try again
  • Ensure device is connected to internet for verification

Device Connection Troubleshooting

Step-by-step USB connection fix:

  1. iPhone Settings Check:

    Settings β†’ Privacy & Security β†’ Developer Mode β†’ Enable
    Settings β†’ General β†’ About β†’ Trust Computer (when prompted)
    
  2. Mac System Check:

    # Check if device is detected by system
    system_profiler SPUSBDataType | grep iPhone
    
    # Check iOS device service
    brew services list | grep usbmuxd
  3. Reset Connection:

    • Disconnect iPhone
    • Restart IPASIGN application
    • Reconnect iPhone and trust computer again
    • Check if device appears in application
  4. Alternative Detection Methods:

    • Use Xcode's Device Manager (Window β†’ Devices and Simulators)
    • Check Finder sidebar for iPhone
    • Try iTunes/Music app detection first

Getting Help

  1. Check the built-in help system
  2. Review application logs in the GUI
  3. Consult zsign documentation for signing issues
  4. Create an issue on GitHub for bugs

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🀝 Contributing

Contributions are welcome! Please feel free to submit pull requests, report bugs, or suggest new features.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ™ Acknowledgments

  • zsign - The powerful signing engine that makes this possible
  • Qt Project - For the excellent cross-platform framework
  • iOS Development Community - For continuous support and feedback

Made with ❀️ for the iOS development community

About

πŸ” Cross-platform IPA signing tool with Qt6 GUI & CLI. Automatically matches certificates, adapts bundle IDs, and signs iOS apps with your own developer certificates.

Topics

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages