- Android/rust/archy-fips-core: leaf-only fips node as a JNI cdylib (fips pinned to the fips-native fork rev with VpnService fd support), built by gradle via cargo-ndk (arm64), tested on host - ArchyVpnService: split-tunnel VpnService routing only fd00::/8 (MTU 1280, foreground specialUse); FipsManager handles the one-time VPN consent and silent auto-start — no settings surface at all - pairing QR now fully configures the mesh: fnpub/fip/fhost/fudp/ftcp plus fanchors (the node's seed-anchor list, npub@addr/transport) so the phone can rendezvous through public anchors when the LAN endpoint is unreachable - default seed anchors gain the two dual-transport join.fips.network test anchors (23.182.128.74:443/tcp, 217.77.8.91:443/tcp); anchor adverts are Nostr kind-37195 events - device token rides the password field end-to-end: backend accepts tokens wherever it accepts the password, so scan = instant login (WebSocket auth + WebView form injection unchanged); token logins skip TOTP - ServerEntry.meshIp + IPv6-bracketed URLs; WebView retries the mesh address on main-frame errors, auto-login and origin checks honor it - companion v0.5.0 (versionCode 20), arm64 abiFilter; FipsNative.available gates everything so non-arm64 still runs as a plain companion Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
44 lines
1.8 KiB
TOML
44 lines
1.8 KiB
TOML
# Embedded FIPS mesh node for the Archipelago companion app.
|
|
#
|
|
# Built for Android via cargo-ndk (see Android/app/build.gradle.kts, task
|
|
# buildRustArm64) into app/src/main/jniLibs/arm64-v8a/libarchy_fips_core.so.
|
|
# Also builds on the host so `cargo test` covers the non-JNI logic.
|
|
#
|
|
# `fips` is pinned to the fips-native fork rev that this integration was
|
|
# developed against — the fork carries Android support upstream lacks
|
|
# (Tun::from_fd for a VpnService-owned fd, cfg(target_os = "android") paths).
|
|
# Override with a local checkout when hacking on fips itself:
|
|
# CARGO_NET_OFFLINE=false cargo ndk ... --config 'patch."https://github.com/9qeklajc/fips-native".fips.path="/path/to/fips-native/fips"'
|
|
[package]
|
|
name = "archy-fips-core"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
publish = false
|
|
|
|
[lib]
|
|
name = "archy_fips_core"
|
|
# rlib for host tests; cdylib for the Android shared library.
|
|
crate-type = ["lib", "cdylib"]
|
|
|
|
[dependencies]
|
|
# default-features drops the ratatui TUI; tun-support enables Node::start_with_tun_fd.
|
|
fips = { git = "https://github.com/9qeklajc/fips-native", rev = "46494a74fc85b878305d275d42ab719082b06ba6", default-features = false, features = ["tun-support"] }
|
|
anyhow = "1.0"
|
|
serde_json = "1.0"
|
|
hex = "0.4"
|
|
# OS CSPRNG for identity generation (crypto rule: no thread-local RNG for keys).
|
|
getrandom = "0.2"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "sync", "time", "macros"] }
|
|
tracing = "0.1"
|
|
|
|
# The JNI surface only exists on Android; host builds skip it and drive the
|
|
# mesh module directly (tests).
|
|
[target.'cfg(target_os = "android")'.dependencies]
|
|
jni = "0.21"
|
|
# Bridge `tracing` (ours + fips) to logcat: `adb logcat -s archy-fips`.
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
paranoid-android = "0.2"
|
|
|
|
[workspace]
|