summaryrefslogtreecommitdiff
path: root/Compatibility.md
blob: f80bfcbce00891ddaf8434a49c1dd8fc004547bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
### On-Disk-Format Compatability

gocryptfs uses ext4-style *feature flags* to add new functionality or better security to the on-disk-format. These are stored in `gocryptfs.conf` as `FeatureFlags`. When a new feature flag is added, gocryptfs will continue to support mounting older filesystems that do not have this flag set.

However, from time to time major gocryptfs revisions will drop support for very old filesystems. This keeps the gocryptfs code base clean and maintainable. Users are encouraged to upgrade their filesystems (see below for how) as the new features often improve security.

As seen on the tables below, v1.0 was the only version so far to drop support for very old filesystems (v0.6 and lower).

##### Supported versions (v0.7 and later)

|                                           | can be mounted on ▶ | v0.7, v0.8 | v0.9, v0.10, v0.11, <br> v1.0, v1.1, v1.2 | v1.1, v1.2 | v1.3 and later |
|-------------------------------------------|---------------------|------------|-------------------------------------------|------------|------------|
| ▼ **created by**                          | ▼ **feature flags** |            |                                           |            |            |
| v0.7, v0.8                                | DEG                 | Y          | Y                                         | Y          | Y          |
| v0.9, v0.10, v0.11, <br> v1.0, v1.1, v1.2 | DEGL                | -          | Y                                         | Y          | Y          |
| v1.1, v1.2 <br>(reverse mode)             | DEGLA               | -          | -                                         | Y          | Y          |
| v1.3 and later                                | DEGLRAH & DEGLRH               | -          | -                                         | -          | Y          |

##### Historical versions (v0.6 and earlier)

|                  | can be mounted on ▶ | v0.4 | v0.5 | v0.6 | v0.7, v0.8 | v0.9, v0.10 | v0.11 | v0.12 | v1.0+ |
|------------------|---------------------|------|------|------|------------|-------------|-------|-------|------|
| ▼ **created by** | ▼ **feature flags** |      |      |      |            |             |       |       |      |
| v0.4             | -                   | Y    | Y    | Y    | Y          | Y           | W     | RO    | -    |
| v0.5             | D                   | -    | Y    | Y    | Y          | Y           | W     | RO    | -    |
| v0.6             | DE                  | -    | -    | Y    | Y          | Y           | W     | RO    | -    |


Feature flags:
* D = DirIV
* E = EMENames
* G = GCMIV128
* L = LongNames
* A = AESSIV
* H = HKDF
* R = Raw64

Support flags:
* Y = full functionality
* W = a warning is printed on mount, otherwise full functionality
* RO = can only be mounted read-only
* \- = can not be mounted

### Upgrading

Upgrading a filesystem simply means creating a new filesystem and copying all the data over. See the "[Upgrading](https://github.com/rfjakob/gocryptfs/wiki/Upgrading)" page for more information.