Update ROADMAP.md
This commit is contained in:
+30
-74
@@ -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
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user