Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit 096f589

Browse files
committed
doc: Added a fcef format documentation
1 parent 915a3c0 commit 096f589

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

docs/fcef_format.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
## FCEF Format specification
2+
3+
### Ver 1 (v0001) (DEPRECATED)
4+
This document explains the specification of the FCEF file format Ver 1
5+
**DEPRECATED: due to the vulnerability in the Ver 1 encryption algorithm it's strongly recommended to use Ver 2**
6+
7+
The FCEF format contain(s)
8+
1. nonce & Encrypted Data
9+
10+
**These will be called tags hereafter**
11+
12+
#### Encrypted data
13+
A FCEF file generated with FileCrypt writes the nonce and encrypted data **after 0x0**.
14+
This tag contains the actual data that is used to decrypt.
15+
16+
17+
### Ver 2 (v0002)
18+
This document explains the specification of the FCEF file format Ver 2
19+
20+
The FCEF format contain(s)
21+
1. Version number
22+
2. Salt
23+
3. Nonce & Encrypted data
24+
25+
**These will be called tags hereafter**
26+
**The tag size(excluding Encrypted data) of FCEF Ver2 is 22 bytes**
27+
28+
#### Version number
29+
A FCEF file generated with FileCrypt writes the encryption version that it used to encrypt the file **from 0x0 to 0x5**.
30+
It's used to check whether the FCEF file can be decrypted using the current version of the software.
31+
Every version after Ver 1 will contain this tag.
32+
**Note: the last byte(0x5) of the version tag contains a line brake(`\n`)**
33+
**Note: the version number ranges from v0001 to v9999**
34+
35+
#### Salt
36+
A FCEF file generated with FileCrypt writes the salt generated using `rand.Read(salt)` **from 0x6 to 0x15**
37+
It's used while decrypting to regenerate the argon2 hash from the password.
38+
39+
#### Encrypted data
40+
A FCEF file generated with FileCrypt writes the nonce and encrypted data **after 0x15**.
41+
This tag contains the actual data that is used to decrypt.
42+

0 commit comments

Comments
 (0)