aboutsummaryrefslogtreecommitdiff
path: root/infra/chat/build-browser.sh
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
commit556eaa133e9cfe7f4c8e542708119fdfd311357e (patch)
tree57ae2a9c5455f335e8c34b293f4f13975cb3d09e /infra/chat/build-browser.sh
parent143880db086c617b843340ca7023a879507761f8 (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 'infra/chat/build-browser.sh')
-rw-r--r--infra/chat/build-browser.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/infra/chat/build-browser.sh b/infra/chat/build-browser.sh
new file mode 100644
index 0000000..dd0c777
--- /dev/null
+++ b/infra/chat/build-browser.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# 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/>.
+
+set -eu
+ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)"
+SOURCE="$ROOT/.tools/wasi-source"
+SDK="$SOURCE/wasi-sdk-34.0-x86_64-linux"
+PREFIX="$ROOT/.tools/openssl-wasi"
+cd "$ROOT"
+test -x "$SDK/bin/clang"
+test -f "$PREFIX/lib/libcrypto.a"
+printf '%s %s\n' b761e3a0721dbae9c09a0059e5fdb2bf917d1b4a8a7b430fb3b5aafb0984b2c4 "$SOURCE/sdk.tar.gz" | sha256sum --check
+printf '%s %s\n' a2157c2830efdec3788939b00c9b0638306d3f0bbb76dc4832ee503bb397df98 "$SOURCE/openssl.tar.gz" | sha256sum --check
+rustup target add wasm32-wasip1
+RUST_LIB="$(rustc --print target-libdir --target wasm32-wasip1)/self-contained"
+env LIBCLANG_PATH="$SDK/lib" OPENSSL_DIR="$PREFIX" OPENSSL_STATIC=1 \
+ CC_wasm32_wasip1="$SDK/bin/clang" AR_wasm32_wasip1="$SDK/bin/llvm-ar" \
+ BINDGEN_EXTRA_CLANG_ARGS_wasm32_wasip1="--sysroot=$SDK/share/wasi-sysroot --target=wasm32-wasip1 -fvisibility=default" \
+ RUSTFLAGS="-Lnative=$RUST_LIB -Lnative=$SDK/share/wasi-sysroot/lib/wasm32-wasip1 -Clink-arg=-lwasi-emulated-getpid -Clink-arg=--max-memory=268435456" \
+ cargo build --locked --release -p stack-chat-crypto --bin stack-chat-crypto --target wasm32-wasip1
+sha256sum target/wasm32-wasip1/release/stack-chat-crypto.wasm