Update ROADMAP.md

This commit is contained in:
Tyler
2025-08-06 12:36:45 -10:00
committed by GitHub
parent 66ed918a78
commit f042127931
+30 -74
View File
@@ -50,11 +50,13 @@ Implement engines:
[] rsa_hybrid.py [] rsa_hybrid.py
[] kyber_hybrid.py (Testing) [] kyber_hybrid.py (Testing)
[] Each must expose: [] Each must expose:
`def encrypt\_text(text, key, metadata): ...` ```
`def decrypt\_text(ciphertext, key, metadata): ...` def encrypt\_text(text, key, metadata): ...
`def encrypt\_file(in\_path, out\_path, key, metadata): ...` def decrypt\_text(ciphertext, key, metadata): ...
`def decrypt\_file(in\_path, out\_path, key, metadata): ...` def encrypt\_file(in\_path, out\_path, key, metadata): ...
`def get\_name(): return "AES-GCM"` def decrypt\_file(in\_path, out\_path, key, metadata): ...
def get\_name(): return "AES-GCM"
```
--- ---
### Phase 2: PacShare - Reimplementation ### Phase 2: PacShare - Reimplementation
/encrypt Route Flow /encrypt Route Flow
@@ -83,22 +85,26 @@ Implement engines:
[] Offer file download [] Offer file download
--- ---
##### Metadata Structure (Encrypted JSON) ##### Metadata Structure (Encrypted JSON)
`"filename": "report.pdf",` ```
`"enc\_mode": "aes\_gcm",` "filename": "report.pdf",
`"pickup\_hash": "<argon2>",` "enc\_mode": "aes\_gcm",
`"created\_at": "2025-08-05T18:00Z",` "pickup\_hash": "<argon2>",
`"2fa\_seed": "base32string", // optional` "created\_at": "2025-08-05T18:00Z",
`"yubi\_token\_hash": "sha256", // optional` "2fa\_seed": "base32string", // optional
"yubi\_token\_hash": "sha256", // optional
```
>Stored as .meta >Stored as .meta
>Encrypted with AES-GCM using key from pickup\_password >Encrypted with AES-GCM using key from pickup\_password
--- ---
### Phase 3: External API Access (/api/*) ### Phase 3: External API Access (/api/*)
##### Endpoint Description ##### Endpoint Description
`POST /api/encrypt Local-only file/text encryption (returns file/meta)` ```
`POST /api/ps-send Upload + encrypt + return pickup link (JSON)` POST /api/encrypt Local-only file/text encryption (returns file/meta)
`POST /api/ps-pickup Provide pickup ID + passwords, return decrypted file` POST /api/ps-send Upload + encrypt + return pickup link (JSON)
`POST /api/decrypt Decrypt local .enc + .meta bundle` POST /api/ps-pickup Provide pickup ID + passwords, return decrypted file
`GET /api/version Return current version tag` POST /api/decrypt Decrypt local .enc + .meta bundle
GET /api/version Return current version tag
```
> These endpoints must receive both passwords. Encryption password is never saved. > These endpoints must receive both passwords. Encryption password is never saved.
--- ---
### Phase 4: CLI Tool (Offline and API Hybrid) ### Phase 4: CLI Tool (Offline and API Hybrid)
@@ -118,7 +124,7 @@ Optional (Send + Pickup)
[] 2FA Token [] 2FA Token
⦁ No Yubi or passkey support for API calls ⦁ No Yubi or passkey support for API calls
[] --help (Shows command usage) [] --help (Shows command usage)
[] CLI PacMan like mini game "(LOW PRIORITY)" [] CLI PacMan like mini game (LOW PRIORITY)
--- ---
### Phase 5: Local GUI Applications ### Phase 5: Local GUI Applications
##### Linux (First) ##### Linux (First)
@@ -154,14 +160,17 @@ Optional (Send + Pickup)
[] PS 2FA Token support [] PS 2FA Token support
⦁ No Yubi/Passkey support for API calls ⦁ No Yubi/Passkey support for API calls
[] PS error message if devices is offline or server can't be reached [] PS error message if devices is offline or server can't be reached
> No Windows support for a application, only webapp, and maybe CLI support. > No <ins>Windows</ins> support for a application, only webapp, and maybe CLI support.
> Linux master race
`Linux master race`
--- ---
### PacShare File Format ### PacShare File Format
```
pacshare/ pacshare/
├── <file_id>pdf/jpeg/etc.paccrypt # Encrypted binary file ├── <file_id>pdf/jpeg/etc.paccrypt # Encrypted binary file
└── <file_id>meta.paccrypt # Encrypted metadata └── <file_id>meta.paccrypt # Encrypted metadata
```
--- ---
### Development Order ### Development Order
0. [] Phase 0 Tasks 0. [] Phase 0 Tasks
@@ -185,113 +194,60 @@ pacshare/
--- ---
### Draft tree for webapp ### Draft tree for webapp
```
paccrypt-webapp/ paccrypt-webapp/
├── static/ ├── static/
│ ├── audio/ │ ├── audio/
│ │ └── chomp.mp3 │ │ └── chomp.mp3
│ ├── css/ │ ├── css/
│ │ └── styles.css │ │ └── styles.css
│ ├── fonts/ │ ├── fonts/
│ │ └── PressStart2P-Regular.ttf │ │ └── PressStart2P-Regular.ttf
│ ├── img/ │ ├── img/
│ │ ├── Github_logo.png │ │ ├── Github_logo.png
│ │ ├── PacCrypt.png │ │ ├── PacCrypt.png
│ │ ├── PacCrypt_W-Background.png │ │ ├── PacCrypt_W-Background.png
│ │ ├── PacCrypt_W-Backgroud_Name.png │ │ ├── PacCrypt_W-Backgroud_Name.png
│ │ ├── PacCrypt_W-Name.png │ │ ├── PacCrypt_W-Name.png
│ │ └── sitemap.png <-- **Change img** │ │ └── sitemap.png <-- **Change img**
│ └── js/ <-- **Pending changes** │ └── js/ <-- **Pending changes**
│ ├── encryption.js │ ├── encryption.js
│ ├── fileops.js │ ├── fileops.js
│ ├── main.js │ ├── main.js
│ ├── pacman.js │ ├── pacman.js
│ └── ui.js │ └── ui.js
├── templates/ ├── templates/
│ ├── 403.html │ ├── 403.html
│ ├── 404.html │ ├── 404.html
│ ├── 500.html │ ├── 500.html
│ ├── admin.html │ ├── admin.html
│ ├── admin_login.html │ ├── admin_login.html
│ ├── admin_settings.html │ ├── admin_settings.html
│ ├── admin_setup.html │ ├── admin_setup.html
│ ├── index.html │ ├── index.html
│ └── pickup.html │ └── pickup.html
├── application_data/ <-- *New* ├── application_data/ <-- *New*
│ ├── scripts/ <-- *New* │ ├── scripts/ <-- *New*
│ │ ├── start_dev <-- *Moved* │ │ ├── start_dev <-- *Moved*
│ │ ├── start_prod <-- *Moved* │ │ ├── start_prod <-- *Moved*
│ │ ├── restart_dev <-- *New* │ │ ├── restart_dev <-- *New*
│ │ ├── restart_prod <-- *New* │ │ ├── restart_prod <-- *New*
│ │ └── stop <-- *New* │ │ └── stop <-- *New*
│ ├── settings.json <-- *Moved* │ ├── settings.json <-- *Moved*
│ ├── requirements.txt <-- *Moved* │ ├── requirements.txt <-- *Moved*
│ ├── admin_cred <-- **Generated once admin is setup** / *Moved* │ ├── admin_cred <-- **Generated once admin is setup** / *Moved*
│ └── admin_hash <-- **Generated once admin is setup** / *Moved* │ └── admin_hash <-- **Generated once admin is setup** / *Moved*
├── paccrypt_algos/ <-- *New* ├── paccrypt_algos/ <-- *New*
│ ├── aes_gcm.py <-- *New* │ ├── aes_gcm.py <-- *New*
│ ├── aes_cbc.py <-- *New* │ ├── aes_cbc.py <-- *New*
│ ├── xchacha.py <-- *New* │ ├── xchacha.py <-- *New*
│ ├── rsa_hybrid.py <-- *New* │ ├── rsa_hybrid.py <-- *New*
│ └── kyber_hybrid.py <-- *New* │ └── kyber_hybrid.py <-- *New*
├── pacshare/ <-- **Generated at time of first PacShare upload, location customizable** / *New* ├── pacshare/ <-- **Generated at time of first PacShare upload, location customizable** / *New*
│ ├── <file_id>pdf/jpeg/etc.paccrypt <-- **Encrypted binary file** / *Moved* │ ├── <file_id>pdf/jpeg/etc.paccrypt <-- **Encrypted binary file** / *Moved*
│ └── <file_id>meta.paccrypt <-- **Encrypted metadata** / *Moved* │ └── <file_id>meta.paccrypt <-- **Encrypted metadata** / *Moved*
├── README.md <-- **Needs Updated** ├── README.md <-- **Needs Updated**
├── ROADMAP.md ├── ROADMAP.md
├── LICENSE <-- *New* ├── LICENSE <-- *New*
└── app.py └── app.py
```