Cryptex1 DDI assets
iOS 17+ can have the DeveloperDiskImage installed as a cryptex through cryptexd, rather than mounted through the image mounter. That path needs four Cryptex1,* payloads which live only inside Xcode's own bundle, so hosts without Xcode — notably Windows — could not install a DDI that way at all.
They are now published as their own variant, reachable with:
from developer_disk_image.repo import DeveloperDiskImageRepository
cryptex_disk_image = DeveloperDiskImageRepository.create().get_cryptex_disk_image()Written back out under their published names (Image.dmg, Image.dmg.trustcache, Image.dmg.cryptex_info, Image.dmg.root_hash), the result is a directory cryptexd clients accept as-is — the build manifest shipped alongside them declares those same names.
No more rate limiting
Payloads now come from raw.githubusercontent.com instead of the REST API. That host is not subject to the API's 60-requests-per-hour anonymous quota, so no GitHub token is needed, and it avoids downloading a recursive tree listing of a repository full of disk images just to resolve a handful of known paths.
create() therefore performs no request of its own, and accepts a ref (branch, tag or commit) to read a revision other than main.
Breaking: DeveloperDiskImageRepository.__init__ no longer takes a tree. create() is unchanged for existing callers.
Other
- DDIs updated to 27A5228h.
- New
update_ddi.py, a dependency-free PEP 723 script that refreshes every variant from a local Xcode installation, verifying each payload against the SHA-384 digests in its build manifest.