Files
Mac 39c8675416 Packwright 1.1.0
Replace the third-party package engines with Packwright.Pkg, an engine of
its own: package reader, validator, writer, Kraken compression and a
metadata-only package editor. Remove ProsperoPkgTool and the LibProsperoPkg
1.2.0 payload, add optional user-imported compatibility keys, update the
README, notices and credits.
2026-10-08 03:02:25 +05:30

2.3 KiB

Compatibility keys (optional)

Packwright ships no keys of any kind. A package it builds is complete and readable without any: the inner image and the outer image use the public passcode scheme (the passcode is 00000000000000000000000000000000 unless you choose another), and Packwright reads, verifies and extracts its own packages with no key at all.

A few fields of a package are normally sealed by the original tools with public RSA values (the moduli of the public keys), or encrypted under a fixed key. A console may check them. If you have those values you can import them, and Packwright uses them when it builds a package. Without them those fields are filled with random bytes of the right length, which is fine for reading the package on a PC and may or may not be accepted by a console.

You are responsible for where the values come from. Packwright never downloads, extracts or generates them, and it never accepts a private key: a file that contains one is refused.

Importing

Settings > Compatibility keys > Import key file... and pick the file. Packwright checks it, keeps a copy in its data folder (keys.txt) and uses it for every package it builds. Remove deletes the copy.

File format

UTF-8 text, one name=value per line, # starts a comment. Values are hexadecimal.

Name Value Used for
passcode0 ... passcode6 seven 384-byte RSA-3072 public moduli, big-endian the wrapped keys in the container's entry-key table
mount-image a 384-byte RSA-3072 public modulus, big-endian the wrapped image key
metadata a 384-byte RSA-3072 public modulus, big-endian the seal over the container header
naps-meta-xts three 16-byte values (data key, tweak key, tweak), comma separated the install metadata table (naps_meta_18.dat); not written by this version

Every value is checked against a fingerprint (its SHA-256) that is part of Packwright's source. The fingerprints do not reveal the values; they only tell Packwright whether the file you picked is the expected one. A wrong or corrupt value is refused with a message, and nothing is imported.

The seven passcode lines have to be given together or not at all. Each line is optional otherwise: what is missing is filled with random bytes.