6 Proxmox File Archive Format (``.pxar``)
7 ---------------------------------------
9 .. graphviz:: pxar-format-overview.dot
14 Data Blob Format (``.blob``)
15 ----------------------------
17 The data blob format is used to store small binary data. The magic number
18 decides the exact format:
23 * - ``[66, 171, 56, 7, 190, 131, 112, 161]``
26 * - ``[49, 185, 88, 66, 111, 182, 163, 127]``
29 * - ``[123, 103, 133, 190, 34, 45, 76, 240]``
32 * - ``[230, 89, 27, 191, 11, 191, 216, 11]``
36 The compression algorithm used is ``zstd``. The encryption cipher is
39 Unencrypted blobs use the following format:
44 * - ``MAGIC: [u8; 8]``
45 * - ``CRC32: [u8; 4]``
46 * - ``Data: (max 16MiB)``
48 Encrypted blobs additionally contain a 16 byte initialization vector (IV),
49 followed by a 16 byte authenticated encryption (AE) tag, followed by the
54 * - ``MAGIC: [u8; 8]``
55 * - ``CRC32: [u8; 4]``
58 * - ``Data: (max 16MiB)``
61 .. _fixed-index-format:
63 Fixed Index Format (``.fidx``)
64 -------------------------------
66 All numbers are stored as little-endian.
70 * - ``MAGIC: [u8; 8]``
71 - ``[47, 127, 65, 237, 145, 253, 15, 205]``
72 * - ``uuid: [u8; 16]``,
75 - Creation Time (epoch)
76 * - ``index_csum: [u8; 32]``,
77 - SHA-256 over the index (without header) ``SHA256(digest1||digest2||...)``
80 * - ``chunk_size: u64``,
82 * - ``reserved: [u8; 4016]``,
83 - Overall header size is one page (4096 bytes)
84 * - ``digest1: [u8; 32]``
86 * - ``digest2: [u8; 32]``
89 - Next chunk digest ...
92 .. _dynamic-index-format:
94 Dynamic Index Format (``.didx``)
95 --------------------------------
97 All numbers are stored as little-endian.
101 * - ``MAGIC: [u8; 8]``
102 - ``[28, 145, 78, 165, 25, 186, 179, 205]``
103 * - ``uuid: [u8; 16]``,
106 - Creation Time (epoch)
107 * - ``index_csum: [u8; 32]``,
108 - SHA-256 over the index (without header) ``SHA256(offset1||digest1||offset2||digest2||...)``
109 * - ``reserved: [u8; 4032]``,
110 - Overall header size is one page (4096 bytes)
113 * - ``digest1: [u8; 32]``
116 - End of second chunk
117 * - ``digest2: [u8; 32]``
118 - Second chunk digest
120 - Next chunk offset/digest