@@ -8,7 +8,7 @@ This document provides comprehensive information for AI agents working in the En
88
99- ** Language** : Rust (Edition 2024)
1010- ** Primary Goal** : Read/write compatibility with legacy EncFS filesystems
11- - ** Status** : Beta (v2.0.0-beta.4 ) - functional for read/write but still maturing
11+ - ** Status** : Beta (v2.0.0-beta.5 ) - functional for read/write but still maturing
1212
1313### Key Characteristics
1414- Encrypts individual files (not block devices)
@@ -93,6 +93,12 @@ task clippy
9393./target/debug/encfsctl info /path/to/encrypted
9494./target/debug/encfsctl decode /path/to/encrypted encrypted_filename
9595./target/debug/encfsctl cat /path/to/encrypted encrypted_filename
96+
97+ # Reverse encryption: plaintext source -> encrypted virtual view
98+ ./target/debug/encfsr /path/to/source/.encfs7 /path/to/source /path/to/mountpoint
99+
100+ # Opt in to writes through the encrypted reverse view
101+ ./target/debug/encfsr --write /path/to/source/.encfs7 /path/to/source /path/to/mountpoint
96102```
97103
98104### Installation
@@ -108,11 +114,13 @@ encfs/
108114├── src/ # Rust source code
109115│ ├── main.rs # Main encfs binary (FUSE mount)
110116│ ├── encfsctl.rs # Control utility binary
117+ │ ├── encfsr.rs # Reverse-mode FUSE binary
111118│ ├── lib.rs # Library entry point
112119│ ├── config.rs # Config file parsing (V4/V5/V6)
113120│ ├── config_binary.rs # Binary config format parser
114121│ ├── constants.rs # Global constants
115122│ ├── fs.rs # FUSE filesystem implementation
123+ │ ├── reverse_fs.rs # Reverse-mode FUSE implementation
116124│ └── crypto/ # Cryptographic operations
117125│ ├── mod.rs # Crypto module exports
118126│ ├── ssl.rs # Legacy cipher wrapper (RustCrypto)
@@ -141,7 +149,7 @@ encfs/
141149
1421502 . ** ` config.rs ` ** : Configuration file handling
143151 - ` EncfsConfig ` : Main config struct
144- - ` ConfigType ` : Enum for V3/V4/V5/V6 formats
152+ - ` ConfigType ` : Enum for V3/V4/V5/V6/V7 formats
145153 - ` Interface ` : Cipher/naming algorithm interface
146154 - Supports XML (V6) and binary (V4/V5) formats
147155 - XML uses Boost Serialization format for compatibility
@@ -172,6 +180,14 @@ encfs/
172180 - Subcommands: info, passwd, decode, encode, cat, ls, showkey, export
173181 - Standalone utility for inspecting/manipulating encrypted filesystems
174182
183+ 8 . ** ` reverse_fs.rs ` / ` encfsr.rs ` ** : Reverse encryption
184+ - Presents an encrypted V7 view of a plaintext source directory
185+ - Read-only by default; ` encfsr --write ` enables transactional writes
186+ - Requires ` unique_iv = false ` ; create a compatible V7 config with
187+ ` encfsctl new --no-unique-iv <source-dir> `
188+ - Stages ciphertext writes and validates authenticated blocks before applying
189+ changes to the plaintext source
190+
175191## Naming Conventions
176192
177193### Rust Standard Conventions
@@ -304,7 +320,16 @@ Three methods (in order of precedence):
3043202 . ` --stdinpass ` : Read from stdin
3053213 . Default: Interactive prompt via ` rpassword `
306322
307- ### 9. Validation Requirements
323+ ### 9. Reverse Mode Writes
324+ - ` encfsr ` only accepts V7 configs and rejects ` unique_iv = true ` .
325+ - Use ` --write ` explicitly; regular reverse mounts remain read-only.
326+ - ` encfsctl new --no-unique-iv ` remains compatible with V7 AES-GCM-SIV tags,
327+ filename IV chaining, and external IV chaining.
328+ - Incomplete or invalid ciphertext is rejected during flush/close without
329+ applying it to the plaintext source. Direct source changes while a write is
330+ staged cause the commit to fail with a conflict.
331+
332+ ### 10. Validation Requirements
308333The ` EncfsConfig::validate() ` method enforces:
309334- ` plain_data ` must be false (not supported)
310335- ` unique_iv ` may be true or false (filesystem supports both)
@@ -314,13 +339,13 @@ The `EncfsConfig::validate()` method enforces:
314339- ` block_mac_bytes ` must be 0-8
315340- Block size must be larger than MAC overhead
316341
317- ### 10 . Logging
342+ ### 11 . Logging
318343- Uses ` env_logger ` crate
319344- Controlled by ` RUST_LOG ` environment variable
320345- ` -v ` flag sets debug level
321346- ` -d ` flag sets debug + foreground mode
322347
323- ### 11 . Daemonization
348+ ### 12 . Daemonization
324349- Uses ` daemonize ` crate
325350- Automatic unless ` -f ` (foreground) or ` -d ` (debug) flag
326351- Happens after password validation, before FUSE mount
@@ -530,6 +555,6 @@ task test-live # Live mount tests
530555
531556---
532557
533- ** Last Updated** : July 22 , 2026
534- ** EncFS Version** : 2.0.0-beta.4
558+ ** Last Updated** : July 28 , 2026
559+ ** EncFS Version** : 2.0.0-beta.5
535560** Rust Edition** : 2024
0 commit comments