- Builds and runs (tauri build --debug); placeholder icons; persistent VaultCore::open in the OS app-data dir; Secret Key remembered on the device; tray keeps the app serving the extension. - Auto-lock: idle (system idle on Windows/macOS, in-app activity on Linux), screen lock, sleep. - Local IPC for kestrove-nmh: 0700 dir + 0600 Unix socket with peer-uid checks; Windows named pipe (first instance, local only, user DACL, client SID check) behind cfg. - Pairing channel: X25519 → HKDF → 6-word fingerprint confirmed in both UIs, per-connection session keys, AES-256-GCM with strict counters. Test vectors shared with kestrove-browser. - Broker: query/fill/totp/save with origin re-checks; pairing and save prompts in the UI. - kestrove-nmh relays ciphertext only; native-host installers for Linux/macOS/Windows. - Tests: unit tests, tests/nmh_stdio.rs (real kestrove-nmh over stdio), examples/test-host. Co-Authored-By: Claude Opus 5.5 <[email protected]>
72 lines
1.7 KiB
TOML
72 lines
1.7 KiB
TOML
[package]
|
|
name = "kestrove-desktop"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
rust-version = "1.82"
|
|
license = "Apache-2.0"
|
|
publish = false
|
|
|
|
# Shared by the app, the native-messaging host and the integration tests.
|
|
[lib]
|
|
name = "kestrove_desktop"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "kestrove-desktop"
|
|
path = "src/main.rs"
|
|
|
|
# Native messaging host: started by the browser, relays to the running app (docs/05).
|
|
[[bin]]
|
|
name = "kestrove-nmh"
|
|
path = "src/bin/kestrove-nmh.rs"
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
|
|
[dependencies]
|
|
# Repos are checked out side by side (see ../../README.md).
|
|
kv-ffi = { path = "../../kestrove-core/crates/kv-ffi" }
|
|
tauri = { version = "2", features = ["tray-icon"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
arboard = "3"
|
|
# Browser pairing channel (docs/05): X25519 + HKDF-SHA256 + AES-256-GCM (what WebCrypto offers on the extension side).
|
|
x25519-dalek = { version = "2", features = ["static_secrets", "zeroize"] }
|
|
hkdf = "0.12"
|
|
sha2 = "0.10"
|
|
aes-gcm = "0.10"
|
|
getrandom = "0.2"
|
|
base64 = "0.22"
|
|
uuid = { version = "1", features = ["v4"] }
|
|
url = "2"
|
|
zeroize = "1"
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = "0.2"
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows-sys = { version = "0.61", features = [
|
|
"Win32_Foundation",
|
|
"Win32_Security",
|
|
"Win32_Security_Authorization",
|
|
"Win32_Storage_FileSystem",
|
|
"Win32_System_IO",
|
|
"Win32_System_Pipes",
|
|
"Win32_System_Threading",
|
|
"Win32_System_StationsAndDesktops",
|
|
"Win32_System_SystemInformation",
|
|
"Win32_UI_Input_KeyboardAndMouse",
|
|
] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
core-foundation = "0.10"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = true
|