Unpacked Data Format
Individual files for the index, locks or snapshots are encrypted and
authenticated like Data and Tree Blobs, so the outer structure is
IV || Ciphertext || MAC again. In repository format version 1 the plaintext
always consists of a JSON document which must either be an object or an array.
Repository format version 2 adds support for compression. The plaintext now
starts with a header to indicate the encoding version to distinguish it from
plain JSON and to allow for further evolution of the storage format:
encoding_version || data The encoding_version field is encoded as one byte.
For backwards compatibility the encoding versions ‘[’ (0x5b) and ‘{’ (0x7b) are
used to mark that the whole plaintext (including the encoding version byte)
should treated as JSON document.
For new data the encoding version is currently always 2. For that version
data contains a JSON document compressed using the zstandard compression
algorithm.