summaryrefslogtreecommitdiff
path: root/crates/chat-crypto/README.txt
blob: ba78cea7f75fb97ce53102fe4f9b95578fc210b1 (plain)
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.