File format specification - maurizuki/O2 GitHub Wiki
The O2 file format is made of a fixed-length part, that provides informations about the structure itself of the file, followed by a variable-length part, that is the content of the file.
| Offset | Size | Description |
|---|---|---|
| 0 | 16 | Globally unique identifier (GUID) of the file format: ABBB4FE2-9C21-450E-80B0-469DFD8A8BFC
|
| 16 | 1 | Minor version of the file format |
| 17 | 1 | Major version of the file format |
| 18 | 1 | Encryption flag |
| 19 | 1 | Cipher algorithm identifier |
| 20 | 1 | Hash algorithm identifier |
| 21 | 16 | Initialization vector (IV) of the cipher algorithm |
| 37 | 4 | 32-bit CRC calculated on the content of the file |
| 41 | Content of the file, compressed with the zlib deflate algorithm, then optionally encrypted |
A change of the major version means changes made to the file structure, a change of the minor version means changes made only to the schema of the content of the file.
| Version | Changes |
|---|---|
| 3.0 | Added IV |
| 2.3 | Added <TextType> element |
| 2.2 | Unicode encoding support |
| 2.1 | Added <Relations> element |
| 2.0 | Content compression |
| 1.0 | Initial version |