1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
Copyright (C) 2026 Doan Luu Duc Tai <doan@luuduct.ai>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
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.
Fixed encryption: RFC 9980 ML-KEM-1024 + X448, OpenPGP v6.
Tested signing: ML-DSA-87 + Ed448, OpenPGP v6.
No algorithm substitution or security-advisory ignore is permitted.
See ../../docs/CHAT-SECURITY-REVIEW.txt for the blocking dependency review,
and ../../docs/CHAT-DESIGN.txt for the intended application and limitations.
REPRODUCE THE NATIVE TEST
cargo test --locked -p stack-chat-crypto
cargo clippy --locked -p stack-chat-crypto --all-targets
REPRODUCE THE BROWSER TEST
From the stack root, install development-only tools under .tools:
rustup target add wasm32-unknown-unknown
cargo install --locked --version 0.2.130 wasm-bindgen-cli --root .tools
npm install --prefix .tools/browser --save-exact playwright@1.64.1
PLAYWRIGHT_BROWSERS_PATH="$PWD/.tools/browsers" .tools/browser/node_modules/.bin/playwright install chromium
Build and bind the Rust module, then run it in actual Chromium:
cargo build --locked --release -p stack-chat-crypto --target wasm32-unknown-unknown
.tools/bin/wasm-bindgen --target web --out-dir .tools/chat-proof target/wasm32-unknown-unknown/release/stack_chat_crypto.wasm
PLAYWRIGHT_BROWSERS_PATH="$PWD/.tools/browsers" node crates/chat-crypto/tests/browser.mjs
The harness serves only a blank test document and the generated JS/WASM on
an ephemeral loopback port. It checks the actual browser cryptographic
result and verifies that the probe creates no cookies, web storage, or
IndexedDB databases and sends no requests to external hosts.
This does not establish the storage or network behavior of a future chat
application, which has not been built yet. LibreJS acceptance has not been
tested; there is no public application or compliance badge for this probe.
The test password is a public fixture, not a real configured secret.
AUDIT
.tools/bin/cargo-deny --workspace --all-features check
This audit is intentionally blocking. Consult the security review rather
than trusting a functional round trip as evidence of production security.
|