f4180edf61
Adapt Princess_Pi's Encrypt-Share-Attribution scheme so shared files are anonymous but provably attributable. A. In-session: a persistent Ed25519 persona key (~/.config/hack-house/ persona_ed25519) signs every /send and /sendroom offer over the content hash; receivers verify it and see the persona fingerprint. Optional --attest <passphrase> attaches a revealable SHA-512(pass||sha256) commitment. Additive JSON — wire-compatible with the Python client. B. Portable: /export-signed <dir> packages a directory into Princess_Pi's exact ESA 7z (fresh per-round Ed25519 sig over an inner 7z, SHA-512 checksums, bundled verify scripts). Builder embedded from hh/tools/esa/esa_build.sh; verifiable with just bash+7z+ssh-keygen. Tests: 45 pass (3 new persona). ESA archive build + verify-everything.sh + passphrase reveal verified end-to-end. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
57 lines
1.4 KiB
TOML
57 lines
1.4 KiB
TOML
[package]
|
|
name = "hack-house"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "hack-house — encrypted collaborative sessions with a summoned sandbox."
|
|
license = "MIT"
|
|
|
|
[[bin]]
|
|
name = "hack-house"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# crypto
|
|
num-bigint = "0.4"
|
|
num-traits = "0.2"
|
|
sha2 = "0.10"
|
|
hkdf = "0.12"
|
|
fernet = "0.2"
|
|
base64 = "0.22"
|
|
rand = "0.8"
|
|
hex = "0.4"
|
|
# pseudonymous attribution (persona signing keys, ESA-style)
|
|
ed25519-dalek = "2"
|
|
|
|
# net
|
|
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] }
|
|
tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
|
|
rustls = "0.23"
|
|
url = "2"
|
|
|
|
# sandbox (P3): PTY + terminal emulation
|
|
portable-pty = "0.8"
|
|
vt100 = "0.15"
|
|
|
|
# file/dir transfer (P5)
|
|
tar = "0.4"
|
|
|
|
# async + tui
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "io-util", "sync", "time", "signal"] }
|
|
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
|
|
futures-util = "0.3"
|
|
ratatui = { version = "0.29", features = ["serde", "unstable-rendered-line-info"] }
|
|
crossterm = { version = "0.28", features = ["event-stream"] }
|
|
toml = "0.8"
|
|
|
|
# data
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# cli / errors
|
|
clap = { version = "4", features = ["derive"] }
|
|
anyhow = "1"
|
|
|
|
[dev-dependencies]
|
|
# property-based fuzzing of the frame parsers (attacker-controlled JSON)
|
|
proptest = "1"
|