aboutsummaryrefslogtreecommitdiff
path: root/crates/chat-crypto/README.txt
diff options
context:
space:
mode:
authorDoan Luu Duc Tai <doan@luuduct.ai>2026-10-30 21:39:57 -0500
committerDoan Luu Duc Tai <doan@luuduct.ai>2026-10-30 21:39:57 -0500
commite6b350a1d48ca0490b7a3447bb8d0a4235514b76 (patch)
tree57ae2a9c5455f335e8c34b293f4f13975cb3d09e /crates/chat-crypto/README.txt
parent0a4da3b86eb69f0f09b802a55e36fa9cf1bbf38c (diff)
Implement experimental file-based encrypted private chat
Add fixed-suite Rust/WASI identity files, signed challenge authentication, ciphertext-only SQLite storage, a minimal LibreJS-compatible interface, and consistent backup snapshots. Keep production unchanged and document the local workflow, limits, source distribution, and browser recovery tests.
Diffstat (limited to 'crates/chat-crypto/README.txt')
-rw-r--r--crates/chat-crypto/README.txt56
1 files changed, 27 insertions, 29 deletions
diff --git a/crates/chat-crypto/README.txt b/crates/chat-crypto/README.txt
index d09ff82..e04246c 100644
--- a/crates/chat-crypto/README.txt
+++ b/crates/chat-crypto/README.txt
@@ -14,26 +14,33 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-CHAT CRYPTOGRAPHY COMPATIBILITY PROBE
-
- Experimental, local-only work on feature/private-chat. This is a
- cryptographic compatibility test, not a messaging application. Do not use
- it for private conversations or real identities. It creates temporary
- identities in memory and discards them; it does not create user chat files.
+PRIVATE CHAT CRYPTOGRAPHY
Fixed encryption: RFC 9980 ML-KEM-1024 + X448, OpenPGP v6.
- Tested signing: ML-DSA-87 + Ed448, OpenPGP v6.
+ Signing: ML-DSA-87 + Ed448, OpenPGP v6.
Backend: Sequoia 2.4.2 with OpenSSL 3.6.5. No algorithm substitution or
- vulnerability-advisory exception was used. The first checkpoint's Rust
- backend is historical and no longer selected.
+ vulnerability-advisory exception was used. The original RustCrypto backend
+ is historical and no longer selected.
+
+ This crate implements purpose-specific identity creation, Argon2id/AES-256-GCM
+ protected files, detached authentication proofs, signed two-recipient messages,
+ bounded verified history batches, and the original compatibility probe.
+ Native Rust and browser WASI share the implementation. The standalone command
+ accepts one JSON request on stdin; empty input runs the compatibility probe.
+ Its browser WASI host grants no filesystem or network access. Private request
+ data must remain in local memory and must never be submitted to the server.
+
+ See ../../docs/CHAT-APPLICATION.txt for implemented formats, local setup,
+ tests, backups, and limitations. Work remains experimental and local on
+ feature/private-chat. Production remains unchanged. Do not mistake the
+ compatibility probe for an application security audit.
- See ../../docs/CHAT-OPENSSL-MIGRATION.txt for the complete decision record,
- pinned source hashes, build flags, capability boundaries, dependency-policy
- exceptions, observed results, limitations, and reproduction commands.
- ../../docs/CHAT-SECURITY-REVIEW.txt records the original dependency findings.
- ../../docs/CHAT-DESIGN.txt describes the planned application.
+ ../../docs/CHAT-OPENSSL-MIGRATION.txt records the complete backend decision,
+ pinned source hashes, build flags, FFI/capability limitations, and reviewed
+ dependency-policy exceptions. ../../docs/CHAT-SECURITY-REVIEW.txt records
+ the superseded RustCrypto findings without advisory ignores.
-QUICK CHECKS FROM THE STACK ROOT
+CHECKS FROM THE WORKSPACE ROOT
cargo test --locked -p stack-chat-crypto
cargo run --locked -p stack-chat-crypto
@@ -41,17 +48,8 @@ QUICK CHECKS FROM THE STACK ROOT
PLAYWRIGHT_BROWSERS_PATH="$PWD/.tools/browsers" node crates/chat-crypto/tests/browser.mjs
cargo stack check
- Native checks require OpenSSL >=3.5 development files and libclang.
- The cross-build script currently supports Linux x86_64 development hosts.
- Browser tooling installation is documented in the migration record.
-
- The harness serves only a blank document, a readable AGPL JavaScript WASI
- bridge, and the new WASI binary on an ephemeral loopback port. It verifies
- the actual OpenSSL backend, cryptographic round trips, tampering and invalid
- credential rejection, repeated fresh instances, and failure without CSPRNG.
- It checks for external requests and persistent browser application state.
-
- The application itself, private chat-file envelope, and session workflow
- remain unimplemented. LibreJS acceptance has not been tested; there is no
- public chat page or compliance badge. The fixture password is public test
- data, not a configured secret. No .env file or user private key is needed.
+ Native builds require OpenSSL >=3.5 development files and libclang.
+ The cross-build script supports an x86_64 GNU/Linux development host.
+ Browser tooling is excluded from the public source tree and releases.
+ The probe uses public fixture credentials and creates temporary identities
+ in memory. It does not open the root .env or use the canonical RSA key.