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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//! # Enkryptit!
//! \
//! **Enkryptit!** is a Rust-written cli-tool / interactive manager for file and folder encryption.
//!
//! > This project is currently a work in progress. It is **not audited** for production security.
//!
//! ## Code Layout
//! ```txt
//! src/
//! ├── main.rs # entry point, clap CLI definition & dispatch
//! ├── lib.rs # library entry point (used by tests)
//! ├── types/ # enums: CompressionType, KeyType, ParallelismType, KeyParams
//! │ ├── compression_type.rs
//! │ ├── key_type.rs
//! │ ├── parallelism_type.rs
//! │ └── key_params.rs
//! ├── frontend/ # everything user-facing
//! │ ├── cli/ # command-line interface
//! │ │ ├── inspection.rs # eck inspect
//! │ │ ├── params_helpers.rs
//! │ │ └── treatment.rs # object treatment (single / multiple paths)
//! │ ├── tui/ # terminal UI (inquire + rfd)
//! │ │ ├── action.rs
//! │ │ ├── browse.rs # file/folder pickers
//! │ │ ├── help.rs
//! │ │ ├── input.rs # TuiInput trait (mockable)
//! │ │ ├── parameters.rs
//! │ │ └── treatment.rs
//! │ ├── treat_output.rs # renders success / error / info badges
//! │ └── mod.rs
//! ├── diagnostic/ # logs, reports, errors & error rendering
//! │ ├── logging/ # EnkryptitLogger (tracing, daily rotation → log.txt)
//! │ ├── output/ # EnkryptitOutput, diagnostics & snippets (miette)
//! │ └── report/ # comfy-table Report rendering
//! ├── context/ # EnkryptitContext (password, config resolution)
//! │ ├── compression.rs
//! │ └── parallelism.rs # Auto inference helpers
//! ├── key/ # key resolution, derivation, storage
//! │ ├── derivation.rs # Argon2id key_from_password / derive_key
//! │ ├── generation.rs
//! │ ├── resolve.rs # key from file / OS keyring
//! │ ├── storage.rs
//! │ └── mod.rs # EnkryptitKey + LockedKey (mlock / zeroize)
//! ├── encryption/
//! │ ├── encryption_primitives.rs # XChaCha20-Poly1305 chunk encrypt/decrypt, nonce derivation
//! │ ├── encryption_flow.rs
//! │ ├── chunk_job/ # EncryptChunkJob / DecryptChunkJob / ChunkResult
//! │ ├── file.rs
//! │ ├── file_encryption/ # single & multithreaded file encryption
//! │ │ ├── single.rs
//! │ │ ├── multithread.rs
//! │ │ └── mod.rs
//! │ ├── folder_encryption/ # folder ↔ .encky archive
//! │ │ ├── collect_entry.rs
//! │ │ ├── entry/ # FileEntry handling
//! │ │ ├── intern_archive_encryption/ # per-entry single/multi treatment
//! │ │ ├── single.rs # entry loop
//! │ │ └── mod.rs
//! │ └── mod.rs
//! ├── compression.rs # zstd / lz4 / xz / none (with retry logic)
//! ├── parallelism/ # worker pool for chunk jobs
//! │ └── pool.rs # EnkryptitPool
//! ├── parameters/ # persisted parameters (config.json)
//! │ ├── argon2id_parameters.rs # static Argon2id params (128 MiB, 3, 1)
//! │ └── params.rs # EnkryptitParams load / save
//! ├── metadatas.rs # ArchiveHeader, MetaDatas, FolderMetadata, FileEntry, MAGIC
//! ├── treatment/ # high-level object treatment & inspection
//! ├── conversions.rs
//! ├── directory.rs # ProjectDirs (com.olruix.Enkryptit)
//! └── errors.rs # EnkryptitError
//! ```
//!
//! ## License
//!
//! This project is dual-licensed under:
//!
//! * **CeCILL-B License** (French law compliant, fully compatible with GNU GPL/Apache)
//! * **Apache License, Version 2.0**
//!
//! Choose the one that best fits your needs.
//!
//! ## Contact
//!
//!* **Developer:** Olruix ([VRAM-RAM](https://github.com/VRAM-RAM))
use crateVersion;
/// The version of `Enkryptit!`
/// Enkryptit versions are separated between :
/// - Nightly versions
/// - Stable versions
///
/// This constant is only for `Nightly` version.
///
/// So, for example, if you download **Enkryptit!** v0.1.4, it is the 4th nightly version of 1st stable version.
pub const VERSION: Version = 3;