Skip to content

Commit dd23c94

Browse files
committed
Merge dev/v0.0.2 into master for release v0.0.2
2 parents 2ec6f6e + e73d53c commit dd23c94

19 files changed

Lines changed: 597 additions & 375 deletions

.gitignore

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,28 @@
1-
/target
2-
/secure_volume
1+
# Generated by Cargo
2+
# will have compiled files and executables
3+
debug/
4+
target/
5+
6+
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
7+
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
8+
# Cargo.lock
9+
10+
# These are backup files generated by rustfmt
11+
**/*.rs.bk
12+
13+
# MSVC Windows builds of rustc generate these, which store debugging information
14+
*.pdb
15+
16+
# DSPV Specific
17+
secure_volume/
18+
dspv.meta
19+
*.enc
20+
21+
# OS generated files
22+
.DS_Store
23+
.DS_Store?
24+
._*
25+
.Spotlight-V100
26+
.Trashes
27+
ehthumbs.db
28+
Thumbs.db

CONTRIBUTING.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Contributing to DSPV
2+
3+
First off, thank you for considering contributing to the Dynamic Secure Portable Volume! We welcome contributions from everyone.
4+
5+
## How Can I Contribute?
6+
7+
### Reporting Bugs
8+
* Ensure the bug was not already reported by searching on GitHub under Issues.
9+
* If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
10+
11+
### Suggesting Enhancements
12+
* Open a new issue with a detailed description of the proposed feature.
13+
* Explain *why* this enhancement would be useful to most users.
14+
15+
### Submitting Pull Requests
16+
1. **Fork the repository** and create your branch from `main`.
17+
2. **Clone** your fork locally.
18+
3. **Branch** out: `git checkout -b my-feature-branch`.
19+
4. **Develop** your feature or fix.
20+
5. **Test** your code: Ensure all existing tests pass (`cargo test`) and write new tests for your specific additions, especially if they touch cryptography (`mod crypto`) or file I/O (`mod storage`).
21+
6. **Lint** your code: Run `cargo fmt` and `cargo clippy` to ensure your code matches the project's style guidelines.
22+
7. **Commit** your changes with clear, descriptive commit messages.
23+
8. **Push** to your fork and **submit a pull request** to the `main` branch.
24+
25+
## Code Standards
26+
* **Security First:** Any changes to the cryptographic implementation must be thoroughly documented and backed by tests verifying boundary conditions (e.g., bit-flipping attacks, extreme offsets).
27+
* **Error Handling:** Use the custom structured Enums (e.g., `VaultError`, `ChunkIoError`) instead of generic IO errors to maintain clear logging and predictable failure states.
28+
* **Memory Safety:** If you introduce new structures holding sensitive data (keys, plain-text buffers), ensure they implement the `Zeroize` and `ZeroizeOnDrop` traits.

Cargo.lock

Lines changed: 121 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@ dashmap = "6.1.0"
2525
# --- Utilitaires OS ---
2626
fs4 = "0.13.1"
2727
rpassword = "7.4.0"
28+
clap = { version = "4.5", features = ["derive"] }

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 [Votre Nom ou Pseudo GitHub]
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# 🔐 Dynamic Secure Portable Volume (DSPV)
2+
3+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4+
[![Rust](https://img.shields.io/badge/Rust-1.70%2B-orange)](https://www.rust-lang.org/)
5+
[![GitHub release](https://img.shields.io/github/v/release/g3noce/Dynamic-Secure-Portable-Volume)](https://github.com/g3noce/Dynamic-Secure-Portable-Volume/releases)
6+
7+
> A portable, cross-platform encrypted container that creates a secure workspace on any USB drive or local folder without leaving traces on the host machine.
8+
9+
## ✨ Overview
10+
11+
DSPV transforms any standard folder into an **encrypted vault**. By placing the executable in a directory or USB drive, all files placed inside the designated secure folder are encrypted on disk.
12+
13+
Access is provided transparently via a local WebDAV server. You interact with your files through your OS's native file explorer, and DSPV handles the encryption and decryption on the fly in memory.
14+
15+
## 🛡️ Core Features
16+
17+
* **True Portability:** Single standalone executable. No drivers or administrative privileges required on the host machine.
18+
* **On-the-Fly Cryptography:** Uses **AES-256-XTS** for robust disk encryption, identical to standards used by VeraCrypt and BitLocker.
19+
* **Strong Key Derivation:** Master keys are derived using **Argon2id** with a random 32-byte salt to thwart brute-force attacks.
20+
* **Secure Memory Management:** Cryptographic keys and plain-text buffers are managed with strict `Zeroize` traits, ensuring sensitive data is securely wiped from RAM immediately after use.
21+
* **Chunk-Based I/O:** Files are not fully loaded into RAM. Read/Write operations are streamed and encrypted in chunks, allowing for the manipulation of massive files with minimal memory footprint.
22+
23+
## 🚀 Usage Workflow
24+
25+
### 1. Initialization
26+
1. Copy the `dspv` executable to the root of your USB drive or desired folder.
27+
2. Launch the executable.
28+
3. You will be prompted to enter a **volume encryption key**.
29+
4. A folder named `secure_volume` (or a custom name) is automatically created and locked with a `dspv.meta` file.
30+
31+
### 2. Accessing Files
32+
Once unlocked, DSPV hosts a local WebDAV server acting as a gateway.
33+
34+
* **Windows:** A network drive window opens automatically. Drag, drop, and edit files directly.
35+
* **Linux / macOS:** The server starts at `http://127.0.0.1:8080`.
36+
* **Linux:** Mount using `davfs2` or your file manager's "Connect to Server" feature (`dav://127.0.0.1:8080`).
37+
* **macOS:** Open Finder → Go → Connect to Server → `http://localhost:8080`.
38+
39+
*Note: Automatic native mounting for Linux and macOS is currently being refined.*
40+
41+
### 3. Closing the Vault
42+
Simply press `CTRL+C` in the terminal running DSPV. The server will gracefully shut down, flush all pending operations to disk, and purge the RAM.
43+
44+
## 🛠️ Building from Source
45+
46+
### Prerequisites
47+
* [Rust and Cargo](https://www.rust-lang.org/tools/install) (1.70+)
48+
49+
### Compilation
50+
```bash
51+
git clone [https://github.com/g3noce/Dynamic-Secure-Portable-Volume.git](https://github.com/g3noce/Dynamic-Secure-Portable-Volume.git)
52+
cd Dynamic-Secure-Portable-Volume
53+
cargo build --release
54+
```
55+
The compiled binary will be located at `target/release/dspv`.
56+
57+
### Running Tests
58+
The project includes an extensive suite of critical resilience and cryptographic tests.
59+
```bash
60+
cargo test
61+
```
62+
63+
---
64+
65+
> [!WARNING]
66+
> **Disclaimer**
67+
> This software is provided "as is". While it implements strong cryptographic primitives, the security of your data ultimately depends on the strength of your password and the physical security of the host machine (which could be compromised by keyloggers or malware). Always keep backups of your encrypted vaults.

0 commit comments

Comments
 (0)